FileDocCategorySizeDatePackage
AbstractQNameValidator.javaAPI DocExample5847Tue May 29 16:56:40 BST 2007com.sun.xml.ws.policy.spi

AbstractQNameValidator

public abstract class AbstractQNameValidator extends Object implements PolicyAssertionValidator
This abstract policy assertion validator validates assertions by their qualified name. Server and client side validation methods return {@link Fitness} based on following schema:
  • {@link Fitness#SUPPORTED} - if the assertion qualified name is in the list of supported assertion names on the server/client side
  • {@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
  • {@link Fitness#UNKNOWN} - if the assertion qualified name is not present in the any of the lists of supported assertion names
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)

Fields Summary
private final Set
supportedDomains
private final Collection
serverAssertions
private final Collection
clientAssertions
Constructors Summary
protected AbstractQNameValidator(Collection serverSideAssertions, Collection clientSideAssertions)
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}).

    
                                                 
         
        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);
        }        
    
Methods Summary
public java.lang.String[]declareSupportedDomains()

        return supportedDomains.toArray(new String[supportedDomains.size()]);
    
private FitnessvalidateAssertion(com.sun.xml.ws.policy.PolicyAssertion assertion, java.util.Collection thisSideAssertions, java.util.Collection otherSideAssertions)

        QName assertionName = assertion.getName();
        if (thisSideAssertions.contains(assertionName)) {
            return Fitness.SUPPORTED;
        } else if (otherSideAssertions.contains(assertionName)) {
            return Fitness.UNSUPPORTED;
        } else {
            return Fitness.UNKNOWN;                    
        }        
    
public FitnessvalidateClientSide(com.sun.xml.ws.policy.PolicyAssertion assertion)

        return validateAssertion(assertion, clientAssertions, serverAssertions);
    
public FitnessvalidateServerSide(com.sun.xml.ws.policy.PolicyAssertion assertion)

        return validateAssertion(assertion, serverAssertions, clientAssertions);