feat(jdk8): move files to new folder to avoid resources compiled.

This commit is contained in:
2025-09-07 15:25:52 +08:00
parent 3f0047bf6f
commit 8c35cfb1c0
17415 changed files with 217 additions and 213 deletions

View File

@@ -0,0 +1,113 @@
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.xml.internal.ws.policy.spi;
import com.sun.xml.internal.ws.policy.PolicyAssertion;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
import javax.xml.namespace.QName;
/**
* This abstract policy assertion validator validates assertions by their qualified
* name. Server and client side validation methods return {@link Fitness} based on
* following schema:
*
* <ul>
* <li>{@link Fitness#SUPPORTED} - if the assertion qualified name is in the list of
* supported assertion names on the server/client side</li>
* <li>{@link Fitness#UNSUPPORTED} - if the assertion qualified name is not in the list of
* supported assertion names on the server/client side, however it is in the list of
* assertion names supported on the other side</li>
* <li>{@link Fitness#UNKNOWN} - if the assertion qualified name is not present in the any of
* the lists of supported assertion names</li>
* </ul>
*
* For some domains such validation may be sufficient enough. Other domains may
* use functionality of this base class as a first step validation before any attempts
* to validate content of the assertion. To do this one needs to override and reuse
* the default behavior of {@link #validateClientSide(PolicyAssertion)} and
* {@link #validateServerSide(PolicyAssertion)} methods.
*
* @author Marek Potociar (marek.potociar at sun.com)
*/
public abstract class AbstractQNameValidator implements PolicyAssertionValidator {
private final Set<String> supportedDomains = new HashSet<String>();
private final Collection<QName> serverAssertions;
private final Collection<QName> clientAssertions;
/**
* Constructor that takes two collections specifying qualified names of assertions
* supported on either server or client side. The set of all assertion namespaces
* defines list of all domains supported by the assertion validator
* (see {@link PolicyAssertionValidator#declareSupportedDomains}).
*
* @param serverSideAssertions The server-side assertions.
* @param clientSideAssertions The client-side assertions.
*/
protected AbstractQNameValidator(Collection<QName> serverSideAssertions, Collection<QName> clientSideAssertions) {
if (serverSideAssertions != null) {
this.serverAssertions = new HashSet<QName>(serverSideAssertions);
for (QName assertion : this.serverAssertions) {
supportedDomains.add(assertion.getNamespaceURI());
}
} else {
this.serverAssertions = new HashSet<QName>(0);
}
if (clientSideAssertions != null) {
this.clientAssertions = new HashSet<QName>(clientSideAssertions);
for (QName assertion : this.clientAssertions) {
supportedDomains.add(assertion.getNamespaceURI());
}
} else {
this.clientAssertions = new HashSet<QName>(0);
}
}
public String[] declareSupportedDomains() {
return supportedDomains.toArray(new String[supportedDomains.size()]);
}
public Fitness validateClientSide(PolicyAssertion assertion) {
return validateAssertion(assertion, clientAssertions, serverAssertions);
}
public Fitness validateServerSide(PolicyAssertion assertion) {
return validateAssertion(assertion, serverAssertions, clientAssertions);
}
private Fitness validateAssertion(PolicyAssertion assertion, Collection<QName> thisSideAssertions, Collection<QName> otherSideAssertions) {
QName assertionName = assertion.getName();
if (thisSideAssertions.contains(assertionName)) {
return Fitness.SUPPORTED;
} else if (otherSideAssertions.contains(assertionName)) {
return Fitness.UNSUPPORTED;
} else {
return Fitness.UNKNOWN;
}
}
}

View File

@@ -0,0 +1,88 @@
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.xml.internal.ws.policy.spi;
import com.sun.xml.internal.ws.policy.PolicyException;
import com.sun.xml.internal.ws.policy.sourcemodel.AssertionData;
/**
* Exception thrown in case of assertion creation failure.
*
* @author Marek Potociar
*/
public final class AssertionCreationException extends PolicyException {
private final AssertionData assertionData;
/**
* Constructs a new assertion creation exception with the specified detail message and cause.
* <p/>
* Note that the detail message associated with {@code cause} is <emph>not</emph> automatically incorporated in
* this exception's detail message.
*
* @param assertionData the data provided for assertion creation
* @param message the detail message.
*/
public AssertionCreationException(final AssertionData assertionData, final String message) {
super(message);
this.assertionData = assertionData;
}
/**
* Constructs a new assertion creation exception with the specified detail message and cause.
* <p/>
* Note that the detail message associated with {@code cause} is <emph>not</emph> automatically incorporated in
* this exception's detail message.
*
* @param assertionData the data provided for assertion creation
* @param message the detail message.
* @param cause the cause. (A {@code null} value is permitted, and indicates that the cause is nonexistent or unknown.)
*/
public AssertionCreationException(final AssertionData assertionData, final String message, final Throwable cause) {
super(message, cause);
this.assertionData = assertionData;
}
/**
* Constructs a new assertion creation exception with the specified detail message and cause.
*
* @param assertionData the data provided for assertion creation
* @param cause the cause. (A {@code null} value is permitted, and indicates that the cause is nonexistent or unknown.)
*/
public AssertionCreationException(AssertionData assertionData, Throwable cause) {
super(cause);
this.assertionData = assertionData;
}
/**
* Retrieves assertion data associated with the exception.
*
* @return associated assertion data (present when assertion creation failed raising this exception).
*/
public AssertionData getAssertionData() {
return this.assertionData;
}
}

View File

@@ -0,0 +1,87 @@
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.xml.internal.ws.policy.spi;
import com.sun.xml.internal.ws.policy.AssertionSet;
import com.sun.xml.internal.ws.policy.PolicyAssertion;
import com.sun.xml.internal.ws.policy.sourcemodel.AssertionData;
import java.util.Collection;
/**
* The interface defines contract for custom (domain specific) policy assertion
* factories. The implementations are discovered using service provider mechanism
* described in the
* <a href="http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service%20Provider">J2SE JAR File Specification</a>.
*<p/>
* Every implementation of policy assertion creator is expected to <b>fully</b>
* handle the creation of assertions for the domain (namespace) it claims to
* support by returning the namespace string from the {link #getSupportedDomainNamespaceUri()}
* method. To handle creation of domain-specific assertions that are not intended
* to be customized, the default policy assertion creator (passed as one of the
* input parameters into the {@link #createAssertion(AssertionData, Collection, AssertionSet, PolicyAssertionCreator)} method)
* shall be used.
*
* @author Marek Potociar
*/
public interface PolicyAssertionCreator {
/**
* This method returns the namespace URIs of the domains that are supported by the implementation of
* this inteface. There can be multiple URIs supported per single implementation.
* <p/>
* Supporting domain namespace URI means that particular {@code PolicyAssertionCreator} implementation
* is able to create assertion instances for the domains identified by the namespace URIs returned from this
* method. It is required that each {@code PolicyAssertionCreator} implementation handles the policy
* assertion creation for <b>each</b> assertion in every domain it claims to support.
*
* @return string array representing the namespace URIs of the supported domains. It is expected that multiple calls on this method return the
* same value each time. <b>Returned string array must be neither {@code null} nor empty. Also each string value in the array must not be {@code null}
* nor empty.</b>
*
*/
String[] getSupportedDomainNamespaceURIs();
/**
* Creates domain-specific policy assertion instance according to assertion data provided. For the provided
* assertion data and this policy assertion creator instance, it will allways be true that assertion namespace
* URI equals to one of supported domain namespace URIs.
*<p/>
* Additional method parameter (which must not be {@code null}) supplied by the policy framework specifies a default policy
* assertion creator that might be used to handle creation of unsupported domain assertion in the default way. This is
* to give policy assertion creator a chance to handle also creation of "unsupported" domain assertions and to encourage
* implemetors to use class composition instad of class inheritance.
*
* @param data assertion creation data specifying the details of newly created assertion
* @param assertionParameters collection of assertions parameters of this policy assertion. May be {@code null}.
* @param nestedAlternative assertion set specifying nested policy alternative. May be {@code null}.
* @param defaultCreator default policy assertion creator implementation that shall be used to handle creation of assertions
* which are not explicitly supported by this policy assertion creator implementation
* @return domain specific policy assertion implementation according to assertion data provided.
*
* @throws AssertionCreationException in case of assertion creation failure
*/
PolicyAssertion createAssertion(AssertionData data, Collection<PolicyAssertion> assertionParameters, AssertionSet nestedAlternative, PolicyAssertionCreator defaultCreator) throws AssertionCreationException;
}

View File

@@ -0,0 +1,133 @@
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.xml.internal.ws.policy.spi;
import com.sun.xml.internal.ws.policy.PolicyAssertion;
/**
*
*
* @author Marek Potociar (marek.potociar at sun.com)
*/
public interface PolicyAssertionValidator {
public static enum Fitness {
UNKNOWN,
INVALID,
UNSUPPORTED,
SUPPORTED;
public Fitness combine(Fitness other) {
if (this.compareTo(other) < 0) {
return other;
} else {
return this;
}
}
}
/**
* An implementation of this method must return:
* <ul>
* <li>
* {@code Fitness.UNKNOWN} if the policy assertion type is not recognized
* </li>
* <li>
* {@code Fitness.SUPPORTED} if the policy assertion is supported in the
* client-side context
* </li>
* <li>
* {@code Fitness.UNSUPPORTED} if the policy assertion is recognized however
* it's content is not supported. For each assetion that will be eventually marked with
* this validation value, the policy processor will log a WARNING message however
* an attempt to call the web service will be made.
* </li>
* <li>
* {@code Fitness.INVALID} if the policy assertion is recognized however
* its content (value, parameters, nested assertions) is invalid. For each assetion
* that will be eventually marked with this validation value, the policy processor
* will log a SEVERE error and throw an exception. No further attempts to call
* the web service will be made.
* </li>
* </ul>
*
* @param assertion A policy asssertion (See {@link com.sun.xml.internal.ws.policy.PolicyAssertion PolicyAssertion}).
* May contain nested policies and assertions.
* @return fitness of the {@code assertion} on in the client-side context. Must not be {@code null}.
*/
public Fitness validateClientSide(PolicyAssertion assertion);
/**
* An implementation of this method must return:
* <ul>
* <li>
* {@code Fitness.UNKNOWN} if the policy assertion type is not recognized
* </li>
* <li>
* {@code Fitness.SUPPORTED} if the policy assertion is supported in the
* server-side context
* </li>
* <li>
* {@code Fitness.UNSUPPORTED} if the policy assertion is recognized however
* it's content is not supported.
* </li>
* <li>
* {@code Fitness.INVALID} if the policy assertion is recognized however
* its content (value, parameters, nested assertions) is invalid.
* </li>
* </ul>
*
* For each assetion that will be eventually marked with validation value of
* UNKNOWN, UNSUPPORTED or INVALID, the policy processor will log a SEVERE error
* and throw an exception.
*
* @param assertion A policy asssertion (See {@link com.sun.xml.internal.ws.policy.PolicyAssertion PolicyAssertion}).
* May contain nested policies and assertions.
* @return fitness of the {@code assertion} on in the server-side context. Must not be {@code null}.
*/
public Fitness validateServerSide(PolicyAssertion assertion);
/**
* Each service provider that implements this SPI must make sure to identify all possible domains it supports.
* This operation must be implemented as idempotent (must return same values on multiple calls).
* <p/>
* It is legal for two or more {@code PolicyAssertionValidator}s to support the same domain. In such case,
* the most significant result returned from validation methods will be eventually assigned to the assertion.
* The significance of validation results is as follows (from most to least significant):
* <ol>
* <li>SUPPORTED</li>
* <li>UNSUPPORTED</li>
* <li>INVALID</li>
* <li>UNKNOWN</li>
* </ol>
*
*
* @return {@code String} array holding {@code String} representations of identifiers of all supported domains.
* Usually a domain identifier is represented by a namespace.
*/
public String[] declareSupportedDomains();
}

View File

@@ -0,0 +1,50 @@
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package com.sun.xml.internal.ws.policy.spi;
import java.util.Map;
/**
* Maps an XML prefix to a namespace.
*
* This class allows policy domains to configure to which XML prefix an XML
* namespace is mapped.
*
* @author Fabian Ritzmann
*/
public interface PrefixMapper {
/**
* Returns a map of XML prefixes to namespaces for the domain.
*
* The keys of the map must be a name for an XML prefix, e.g. "wsrmp". The
* values must be the name of an XML namespace, e.g.
* "http://docs.oasis-open.org/ws-rx/wsrmp/200702".
*
* @return A map of XML prefixes to namespaces for the domain.
*/
Map<String, String> getPrefixMap();
}

View File

@@ -0,0 +1,29 @@
/*
* Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
* particular file as subject to the "Classpath" exception as provided
* by Oracle in the LICENSE file that accompanied this code.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
/**
* The package contains policy API extension point definitions.
*/
package com.sun.xml.internal.ws.policy.spi;