FileDocCategorySizeDatePackage
AssertionData.javaAPI DocExample16214Tue May 29 16:56:38 BST 2007com.sun.xml.ws.policy.sourcemodel

AssertionData

public final class AssertionData extends Object implements Serializable, Cloneable
Wrapper class for possible data that each 'assertion' and 'assertion parameter content' policy source model node may have attached.

These data, when stored in an 'assertion' model node, are intended to be used as input parameter when creating {@link com.sun.xml.ws.policy.PolicyAssertion} objects via {@link com.sun.xml.ws.policy.spi.PolicyAssertionCreator} implementations.

author
Marek Potociar (marek.potociar@sun.com)

Fields Summary
private static final com.sun.xml.ws.policy.privateutil.PolicyLogger
LOGGER
private final QName
name
private final String
value
private Map
attributes
private ModelNode.Type
type
Constructors Summary
AssertionData(QName name, String value, Map attributes, ModelNode.Type type)
Constructs assertion data wrapper instance for an assertion or assertion parameter that contains a value or some attributes. Whether the data wrapper is constructed for assertion or assertion parameter node is distinguished by the supplied {@code type} parameter.

param
name the FQN of the assertion or assertion parameter
param
value a {@link String} representation of model node value
param
attributes map of model node's <attribute name, attribute value> pairs
param
type specifies whether the data will belong to the assertion or assertion parameter node. This is a workaround solution that allows us to transfer this information about the owner node to a policy assertion instance factory without actualy having to touch the {@link PolicyAssertionCreator} interface and protected {@link PolicyAssertion} constructors.
throws
IllegalArgumentException in case the {@code type} parameter is not {@link ModelNode.Type#ASSERTION ASSERTION} or {@link ModelNode.Type#ASSERTION_PARAMETER_NODE ASSERTION_PARAMETER_NODE}

        this.name = name;
        this.value = value;
        if (attributes != null) {
            this.attributes.putAll(attributes);
        }
        setModelNodeType(type);
    
AssertionData(AssertionData data)
TODO: javadoc

        this.name = data.name;
        this.value = data.value;
        if (attributes != null) {
            this.attributes.putAll(data.attributes);
        }
        this.type = data.type;
    
Methods Summary
protected com.sun.xml.ws.policy.sourcemodel.AssertionDataclone()

        final AssertionData clone = (AssertionData) super.clone();
        
        clone.attributes = new HashMap<QName, String>(this.attributes);
        
        return clone;
    
public booleancontainsAttribute(javax.xml.namespace.QName name)
TODO: javadoc

        synchronized (attributes) {
            return attributes.containsKey(name);
        }
    
public static com.sun.xml.ws.policy.sourcemodel.AssertionDatacreateAssertionData(javax.xml.namespace.QName name)
Constructs assertion data wrapper instance for an assertion that does not contain any value nor any attributes.

param
name the FQN of the assertion
throws
IllegalArgumentException in case the {@code type} parameter is not {@link ModelNode.Type#ASSERTION ASSERTION} or {@link ModelNode.Type#ASSERTION_PARAMETER_NODE ASSERTION_PARAMETER_NODE}

    
                                                  
            
        return new AssertionData(name, null, null, ModelNode.Type.ASSERTION);
    
public static com.sun.xml.ws.policy.sourcemodel.AssertionDatacreateAssertionData(javax.xml.namespace.QName name, java.lang.String value, java.util.Map attributes)
Constructs assertion data wrapper instance for an assertion that does contain a value or attributes.

param
name the FQN of the assertion
param
value a {@link String} representation of model node value
param
attributes map of model node's <attribute name, attribute value> pairs
throws
IllegalArgumentException in case the {@code type} parameter is not {@link ModelNode.Type#ASSERTION ASSERTION} or {@link ModelNode.Type#ASSERTION_PARAMETER_NODE ASSERTION_PARAMETER_NODE}

        return new AssertionData(name, value, attributes, ModelNode.Type.ASSERTION);
    
public static com.sun.xml.ws.policy.sourcemodel.AssertionDatacreateAssertionParameterData(javax.xml.namespace.QName name)
Constructs assertion data wrapper instance for an assertion parameter that does not contain any value nor any attributes.

param
name the FQN of the assertion parameter
throws
IllegalArgumentException in case the {@code type} parameter is not {@link ModelNode.Type#ASSERTION ASSERTION} or {@link ModelNode.Type#ASSERTION_PARAMETER_NODE ASSERTION_PARAMETER_NODE}

        return new AssertionData(name, null, null, ModelNode.Type.ASSERTION_PARAMETER_NODE);
    
public static com.sun.xml.ws.policy.sourcemodel.AssertionDatacreateAssertionParameterData(javax.xml.namespace.QName name, java.lang.String value, java.util.Map attributes)
Constructs assertion data wrapper instance for an assertion parameter that contains a value or attributes

param
name the FQN of the assertion parameter
param
value a {@link String} representation of model node value
param
attributes map of model node's <attribute name, attribute value> pairs
throws
IllegalArgumentException in case the {@code type} parameter is not {@link ModelNode.Type#ASSERTION ASSERTION} or {@link ModelNode.Type#ASSERTION_PARAMETER_NODE ASSERTION_PARAMETER_NODE}

        return new AssertionData(name, value, attributes, ModelNode.Type.ASSERTION_PARAMETER_NODE);
    
public booleanequals(java.lang.Object obj)
An {@code Object.equals(Object obj)} method override.

        if (this == obj) {
            return true;
        }
        
        if (!(obj instanceof AssertionData)) {
            return false;
        }
        
        boolean result = true;
        final AssertionData that = (AssertionData) obj;
        
        result = result && this.name.equals(that.name);
        result = result && ((this.value == null) ? that.value == null : this.value.equals(that.value));
        synchronized (attributes) {
            result = result && ((this.attributes == null) ? that.attributes == null : this.attributes.equals(that.attributes));
        }
        
        return result;
    
public java.lang.StringgetAttributeValue(javax.xml.namespace.QName name)
TODO: javadoc

        synchronized (attributes) {
            return attributes.get(name);
        }
    
public java.util.MapgetAttributes()
Returns the disconnected map of attributes attached to the assertion.

'Disconnected' means, that the result of this method will not be synchronized with any consequent assertion's attribute modification. It is also important to notice that a manipulation with returned set of attributes will not have any effect on the actual assertion's attributes.

return
disconnected map of attributes attached to the assertion.

        synchronized (attributes) {
            return new HashMap<QName, String>(attributes);
        }
    
public java.util.SetgetAttributesSet()
Returns the disconnected set of attributes attached to the assertion. Each attribute is represented as a single {@code Map.Entry} element.

'Disconnected' means, that the result of this method will not be synchronized with any consequent assertion's attribute modification. It is also important to notice that a manipulation with returned set of attributes will not have any effect on the actual assertion's attributes.

return
disconnected set of attributes attached to the assertion.

        synchronized (attributes) {
            return new HashSet<Map.Entry<QName, String>>(attributes.entrySet());
        }
    
public javax.xml.namespace.QNamegetName()
Returns the name of the assertion.

return
assetion's name

        return name;
    
public ModelNode.TypegetNodeType()

        return type;
    
public java.lang.StringgetValue()
Returns the value of the assertion.

return
assetion's value

        return value;
    
public inthashCode()
An {@code Object.hashCode()} method override.

        int result = 17;
        
        result = 37 * result + this.name.hashCode();
        result = 37 * result + ((this.value == null) ? 0 : this.value.hashCode());
        synchronized (attributes) {
            result = 37 * result + ((this.attributes == null) ? 0 : this.attributes.hashCode());
        }
        return result;
    
public booleanisPrivateAttributeSet()
Method specifies whether the assertion data contain proprietary visibility element set to "private" value.

return
{@code 'true'} if the attribute is present and set properly (i.e. the node containing this assertion data instance should not be marshalled int generated WSDL documents). Returns {@code false} otherwise.

        return PolicyConstants.VISIBILITY_VALUE_PRIVATE.equals(getAttributeValue(PolicyConstants.VISIBILITY_ATTRIBUTE));
    
public java.lang.StringremoveAttribute(javax.xml.namespace.QName name)
TODO: javadoc

        synchronized (attributes) {
            return attributes.remove(name);
        }
    
public voidsetAttribute(javax.xml.namespace.QName name, java.lang.String value)
TODO: javadoc

        synchronized (attributes) {
            attributes.put(name, value);
        }
    
private voidsetModelNodeType(ModelNode.Type type)

        if (type == ModelNode.Type.ASSERTION || type == ModelNode.Type.ASSERTION_PARAMETER_NODE) {
            this.type = type;
        } else {
            throw LOGGER.logSevereException(new IllegalArgumentException(
                    LocalizationMessages.WSP_0074_CANNOT_CREATE_ASSERTION_BAD_TYPE(type, ModelNode.Type.ASSERTION, ModelNode.Type.ASSERTION_PARAMETER_NODE)));
        }
    
public voidsetOptionalAttribute(boolean value)
TODO: javadoc

        setAttribute(PolicyConstants.OPTIONAL, Boolean.toString(value));
    
public java.lang.StringtoString()
An {@code Object.toString()} method override.

        return toString(0, new StringBuffer()).toString();
    
public java.lang.StringBuffertoString(int indentLevel, java.lang.StringBuffer buffer)
A helper method that appends indented string representation of this instance to the input string buffer.

param
indentLevel indentation level to be used.
param
buffer buffer to be used for appending string representation of this instance
return
modified buffer containing new string representation of the instance

        final String indent = PolicyUtils.Text.createIndent(indentLevel);
        final String innerIndent = PolicyUtils.Text.createIndent(indentLevel + 1);
        final String innerDoubleIndent = PolicyUtils.Text.createIndent(indentLevel + 2);
        
        buffer.append(indent);
        if (type == ModelNode.Type.ASSERTION) {
            buffer.append("assertion data {");
        } else {
            buffer.append("assertion parameter data {");
        }
        buffer.append(PolicyUtils.Text.NEW_LINE);
        
        buffer.append(innerIndent).append("namespace = '").append(name.getNamespaceURI()).append('\'").append(PolicyUtils.Text.NEW_LINE);
        buffer.append(innerIndent).append("prefix = '").append(name.getPrefix()).append('\'").append(PolicyUtils.Text.NEW_LINE);
        buffer.append(innerIndent).append("local name = '").append(name.getLocalPart()).append('\'").append(PolicyUtils.Text.NEW_LINE);
        buffer.append(innerIndent).append("value = '").append(value).append('\'").append(PolicyUtils.Text.NEW_LINE);
        synchronized (attributes) {
            if (attributes.isEmpty()) {
                buffer.append(innerIndent).append("no attributes");
            } else {
                
                buffer.append(innerIndent).append("attributes {").append(PolicyUtils.Text.NEW_LINE);
                for(Map.Entry<QName, String> entry : attributes.entrySet()) {
                    final QName aName = entry.getKey();
                    buffer.append(innerDoubleIndent).append("name = '").append(aName.getNamespaceURI()).append(':").append(aName.getLocalPart());
                    buffer.append("', value = '").append(entry.getValue()).append('\'").append(PolicyUtils.Text.NEW_LINE);
                }
                buffer.append(innerIndent).append('}");
            }
        }
        
        buffer.append(PolicyUtils.Text.NEW_LINE).append(indent).append('}");
        
        return buffer;