ws-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From gi...@apache.org
Subject svn commit: r1172285 [4/48] - in /webservices/wss4j/branches/swssf: ./ cxf-integration/ cxf-integration/src/ cxf-integration/src/main/ cxf-integration/src/main/java/ cxf-integration/src/main/java/org/ cxf-integration/src/main/java/org/swssf/ cxf-integr...
Date Sun, 18 Sep 2011 13:51:36 GMT
Added: webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/assertionStates/TokenAssertionState.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/assertionStates/TokenAssertionState.java?rev=1172285&view=auto
==============================================================================
--- webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/assertionStates/TokenAssertionState.java (added)
+++ webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/assertionStates/TokenAssertionState.java Sun Sep 18 13:51:23 2011
@@ -0,0 +1,301 @@
+ /**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.swssf.policy.assertionStates;
+
+import org.opensaml.common.SAMLVersion;
+import org.swssf.ext.Constants;
+import org.swssf.ext.SecurityToken;
+import org.swssf.ext.WSSecurityException;
+import org.swssf.impl.securityToken.DelegatingSecurityToken;
+import org.swssf.impl.securityToken.UsernameSecurityToken;
+import org.swssf.policy.secpolicy.SPConstants;
+import org.swssf.policy.secpolicy.model.*;
+import org.swssf.securityEvent.*;
+
+import java.security.cert.X509Certificate;
+import java.util.Arrays;
+
+/**
+ * @author $Author: giger $
+ * @version $Revision: 272 $ $Date: 2010-12-23 14:30:56 +0100 (Thu, 23 Dec 2010) $
+ */
+
+public class TokenAssertionState extends AssertionState {
+
+    public TokenAssertionState(AbstractSecurityAssertion assertion, boolean asserted) {
+        super(assertion, asserted);
+    }
+
+    @Override
+    public boolean assertEvent(SecurityEvent securityEvent) {
+
+        TokenSecurityEvent tokenSecurityEvent = (TokenSecurityEvent) securityEvent;
+
+        if (Arrays.binarySearch(getAssertion().getResponsibleAssertionEvents(), tokenSecurityEvent.getSecurityEventType()) < 0) {
+            return false;
+        }
+
+        //todo enumerate TokenTypes
+        Token token = (Token) getAssertion();
+        if (token instanceof HttpsToken) {
+            assertHttpsToken((HttpsToken) token, tokenSecurityEvent);
+        } else if (token instanceof IssuedToken) {
+            assertIssuedToken((IssuedToken) token, tokenSecurityEvent);
+        } else if (token instanceof SecureConversationToken) {
+            assertSecureConversationToken((SecureConversationToken) token, tokenSecurityEvent);
+        } else if (token instanceof UsernameToken) {
+            assertUsernameToken((UsernameToken) token, tokenSecurityEvent);
+        } else if (token instanceof X509Token) {
+            assertX509Token((X509Token) token, tokenSecurityEvent);
+        } else if (token instanceof SecurityContextToken) {
+            assertSecurityContextToken((SecurityContextToken) token, tokenSecurityEvent);
+        } else if (token instanceof SamlToken) {
+            assertSamlToken((SamlToken) token, tokenSecurityEvent);
+        }
+
+        return isAsserted();
+    }
+
+    //todo <sp:Issuer>wsa:EndpointReferenceType</sp:Issuer>
+    //todo claims
+
+    private void assertSamlToken(SamlToken samlToken, TokenSecurityEvent securityEvent) {
+        if (!(securityEvent instanceof SamlTokenSecurityEvent)) {
+            setAsserted(false);
+            setErrorMessage("Expected a SamlTokenSecurityEvent but got " + securityEvent.getClass().getName());
+            return;
+        }
+        SamlTokenSecurityEvent samlTokenSecurityEvent = (SamlTokenSecurityEvent) securityEvent;
+
+        setAsserted(true);
+        if (samlToken.getIssuerName() != null && !samlToken.getIssuerName().equals(samlTokenSecurityEvent.getIssuerName())) {
+            setAsserted(false);
+            setErrorMessage("IssuerName in Policy (" + samlToken.getIssuerName() + ") didn't match with the one in the SamlToken (" + samlTokenSecurityEvent.getIssuerName() + ")");
+        }
+        if (samlToken.isRequireKeyIdentifierReference() && ((DelegatingSecurityToken) samlTokenSecurityEvent.getSecurityToken()).getKeyIdentifierType() != Constants.KeyIdentifierType.X509_KEY_IDENTIFIER) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces KeyIdentifierReference but we got " + samlTokenSecurityEvent.getSecurityToken().getTokenType());
+        }
+        if (samlToken.isUseSamlVersion11Profile10() && samlTokenSecurityEvent.getSamlVersion() != SAMLVersion.VERSION_10) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces SamlVersion11Profile10 but we got " + samlTokenSecurityEvent.getSamlVersion());
+        } else if (samlToken.isUseSamlVersion11Profile11() && samlTokenSecurityEvent.getSamlVersion() != SAMLVersion.VERSION_11) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces SamlVersion11Profile11 but we got " + samlTokenSecurityEvent.getSamlVersion());
+        } else if (samlToken.isUseSamlVersion20Profile11() && samlTokenSecurityEvent.getSamlVersion() != SAMLVersion.VERSION_20) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces SamlVersion20Profile11 but we got " + samlTokenSecurityEvent.getSamlVersion());
+        }
+    }
+
+    private void assertHttpsToken(HttpsToken httpsToken, TokenSecurityEvent securityEvent) {
+        if (!(securityEvent instanceof HttpsTokenSecurityEvent)) {
+            setAsserted(false);
+            setErrorMessage("Expected a HttpsTokenSecurityEvent but got " + securityEvent.getClass().getName());
+            return;
+        }
+        HttpsTokenSecurityEvent httpsTokenSecurityEvent = (HttpsTokenSecurityEvent) securityEvent;
+
+        setAsserted(true);
+        if (httpsToken.getIssuerName() != null && !httpsToken.getIssuerName().equals(httpsTokenSecurityEvent.getIssuerName())) {
+            setAsserted(false);
+            setErrorMessage("IssuerName in Policy (" + httpsToken.getIssuerName() + ") didn't match with the one in the HttpsToken (" + httpsTokenSecurityEvent.getIssuerName() + ")");
+        }
+        if (httpsToken.isHttpBasicAuthentication() && httpsTokenSecurityEvent.getAuthenticationType() != HttpsTokenSecurityEvent.AuthenticationType.HttpBasicAuthentication) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces HttpBasicAuthentication but we got " + httpsTokenSecurityEvent.getAuthenticationType());
+        } else if (httpsToken.isHttpDigestAuthentication() && httpsTokenSecurityEvent.getAuthenticationType() != HttpsTokenSecurityEvent.AuthenticationType.HttpDigestAuthentication) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces HttpDigestAuthentication but we got " + httpsTokenSecurityEvent.getAuthenticationType());
+        } else if (httpsToken.isRequireClientCertificate() && httpsTokenSecurityEvent.getAuthenticationType() != HttpsTokenSecurityEvent.AuthenticationType.HttpsClientCertificateAuthentication) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces HttClientCertificateAuthentication but we got " + httpsTokenSecurityEvent.getAuthenticationType());
+        }
+    }
+
+    private void assertIssuedToken(IssuedToken issuedToken, TokenSecurityEvent securityEvent) {
+        if (!(securityEvent instanceof IssuedTokenSecurityEvent)) {
+            setAsserted(false);
+            setErrorMessage("Expected a IssuedSecurityTokenEvent but got " + securityEvent.getClass().getName());
+            return;
+        }
+        IssuedTokenSecurityEvent issuedTokenSecurityEvent = (IssuedTokenSecurityEvent) securityEvent;
+
+        setAsserted(true);
+        if (issuedToken.getIssuerName() != null && !issuedToken.getIssuerName().equals(issuedTokenSecurityEvent.getIssuerName())) {
+            setAsserted(false);
+            setErrorMessage("IssuerName in Policy (" + issuedToken.getIssuerName() + ") didn't match with the one in the issuedSecurityToken (" + issuedTokenSecurityEvent.getIssuerName() + ")");
+        }
+        if (issuedToken.isRequireInternalReference() && !issuedTokenSecurityEvent.isInternalReference()) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces internalUriRef but we didn't got one");
+        }
+        if (issuedToken.isRequireExternalReference() && issuedTokenSecurityEvent.isInternalReference()) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces externalUriRef but we didn't got one");
+        }
+        //todo  <sp:RequestSecurityTokenTemplate TrustVersion="xs:anyURI"? >
+    }
+
+    private void assertSecureConversationToken(SecureConversationToken secureConversationToken, TokenSecurityEvent securityEvent) {
+        if (!(securityEvent instanceof SecureConversationSecurityEvent)) {
+            setAsserted(false);
+            setErrorMessage("Expected a SecureConversationSecurityEvent but got " + securityEvent.getClass().getName());
+            return;
+        }
+        SecureConversationSecurityEvent secureConversationSecurityEvent = (SecureConversationSecurityEvent) securityEvent;
+
+        setAsserted(true);
+        if (secureConversationToken.getIssuerName() != null && !secureConversationToken.getIssuerName().equals(secureConversationSecurityEvent.getIssuerName())) {
+            setAsserted(false);
+            setErrorMessage("IssuerName in Policy (" + secureConversationToken.getIssuerName() + ") didn't match with the one in the SecureConversationToken (" + secureConversationSecurityEvent.getIssuerName() + ")");
+        }
+        if (secureConversationToken.isRequireExternalUriRef() && !secureConversationSecurityEvent.isExternalUriRef()) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces externalUriRef but we didn't got one");
+        }
+        //todo sp:SC13SecurityContextToken:
+        //if (securityContextToken.isSc10SecurityContextToken() && )
+        //todo MustNotSendCancel etc...
+    }
+
+    private void assertUsernameToken(UsernameToken usernameToken, TokenSecurityEvent securityEvent) {
+        if (!(securityEvent instanceof UsernameTokenSecurityEvent)) {
+            setAsserted(false);
+            setErrorMessage("Expected a UsernameSecurityTokenEvent but got " + securityEvent.getClass().getName());
+            return;
+        }
+        UsernameSecurityToken usernameSecurityToken = (UsernameSecurityToken) securityEvent.getSecurityToken();
+        UsernameTokenSecurityEvent usernameTokenSecurityEvent = (UsernameTokenSecurityEvent) securityEvent;
+
+        //todo how to verify the issuer of the UsernameToken??
+
+        setAsserted(true);
+        if (usernameToken.isNoPassword() && usernameTokenSecurityEvent.getUsernameTokenPasswordType() != Constants.UsernameTokenPasswordType.PASSWORD_NONE) {
+            setAsserted(false);
+            setErrorMessage("UsernameToken contains a password but the policy prohibits it");
+        } else if (usernameToken.isHashPassword() && usernameTokenSecurityEvent.getUsernameTokenPasswordType() != Constants.UsernameTokenPasswordType.PASSWORD_DIGEST) {
+            setAsserted(false);
+            setErrorMessage("UsernameToken does not contain a hashed password");
+        }
+        if (usernameToken.isCreatedTimestamp() && (usernameSecurityToken.getCreated() == null || usernameTokenSecurityEvent.getUsernameTokenPasswordType() != Constants.UsernameTokenPasswordType.PASSWORD_TEXT)) {
+            setAsserted(false);
+            setErrorMessage("UsernameToken does not contain a created timestamp or password is not plain text");
+        }
+        if (usernameToken.isNonce() && (usernameSecurityToken.getNonce() == null || usernameTokenSecurityEvent.getUsernameTokenPasswordType() != Constants.UsernameTokenPasswordType.PASSWORD_TEXT)) {
+            setAsserted(false);
+            setErrorMessage("UsernameToken does not contain a nonce or password is not plain text");
+        }
+        //todo how does the profile 1.0 and 1.1 differ?? Both spec refer to the same namespace
+        if (usernameToken.isUseUTProfile10() && !usernameTokenSecurityEvent.getUsernameTokenProfile().equals(Constants.NS_USERNAMETOKEN_PROFILE11)) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces UsernameToken profile 1.0 but we got 1.1");
+        } else if (usernameToken.isUseUTProfile11() && !usernameTokenSecurityEvent.getUsernameTokenProfile().equals(Constants.NS_USERNAMETOKEN_PROFILE11)) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces UsernameToken profile 1.1 but we got 1.0");
+        }
+        //todo derived keys?
+    }
+
+    private void assertX509Token(X509Token x509Token, TokenSecurityEvent tokenSecurityEvent) {
+        SecurityToken securityToken = tokenSecurityEvent.getSecurityToken();
+        loop:
+        while (securityToken.getKeyWrappingToken() != null) {
+            securityToken = securityToken.getKeyWrappingToken();
+            switch (securityToken.getTokenType()) {
+                case X509V3Token:
+                case X509V1Token:
+                case X509Pkcs7Token:
+                case X509PkiPathV1Token:
+                    break loop;
+            }
+        }
+        if (!(securityToken instanceof DelegatingSecurityToken)) {
+            return;
+        }
+        DelegatingSecurityToken delegatingSecurityToken = (DelegatingSecurityToken) securityToken;
+
+        setAsserted(true);
+        try {
+            X509Certificate x509Certificate = delegatingSecurityToken.getX509Certificates()[0];
+            if (x509Token.getIssuerName() != null) {
+                final String certificateIssuerName = x509Certificate.getSubjectX500Principal().getName();
+                if (!x509Token.getIssuerName().equals(certificateIssuerName)) {
+                    setAsserted(false);
+                    setErrorMessage("IssuerName in Policy (" + x509Token.getIssuerName() + ") didn't match with the one in the certificate (" + certificateIssuerName + ")");
+                }
+            }
+            if (x509Token.isRequireKeyIdentifierReference() && delegatingSecurityToken.getKeyIdentifierType() != Constants.KeyIdentifierType.X509_KEY_IDENTIFIER) {
+                setAsserted(false);
+                setErrorMessage("Policy enforces KeyIdentifierReference but we got " + delegatingSecurityToken.getTokenType());
+            } else if (x509Token.isRequireIssuerSerialReference() && delegatingSecurityToken.getKeyIdentifierType() != Constants.KeyIdentifierType.ISSUER_SERIAL) {
+                setAsserted(false);
+                setErrorMessage("Policy enforces IssuerSerialReference but we got " + delegatingSecurityToken.getTokenType());
+            } else if (x509Token.isRequireEmbeddedTokenReference() && delegatingSecurityToken.getKeyIdentifierType() != Constants.KeyIdentifierType.BST_EMBEDDED) {
+                setAsserted(false);
+                setErrorMessage("Policy enforces EmbeddedTokenReference but we got " + delegatingSecurityToken.getTokenType());
+            } else if (x509Token.isRequireThumbprintReference() && delegatingSecurityToken.getKeyIdentifierType() != Constants.KeyIdentifierType.THUMBPRINT_IDENTIFIER) {
+                setAsserted(false);
+                setErrorMessage("Policy enforces ThumbprintReference but we got " + delegatingSecurityToken.getTokenType());
+            }
+            if (x509Token.getTokenVersionAndType() != null) {
+                if ((x509Token.getTokenVersionAndType().equals(SPConstants.WSS_X509_V3_TOKEN10) || x509Token.getTokenVersionAndType().equals(SPConstants.WSS_X509_V3_TOKEN11)) && delegatingSecurityToken.getTokenType() != Constants.TokenType.X509V3Token && x509Certificate.getVersion() != 3) {
+                    setAsserted(false);
+                    setErrorMessage("X509Certificate Version " + x509Certificate.getVersion() + " mismatch; Policy enforces " + x509Token.getTokenVersionAndType());
+                } else if ((x509Token.getTokenVersionAndType().equals(SPConstants.WSS_X509_V1_TOKEN10) || x509Token.getTokenVersionAndType().equals(SPConstants.WSS_X509_V1_TOKEN11)) && delegatingSecurityToken.getTokenType() != Constants.TokenType.X509V1Token && x509Certificate.getVersion() != 1) {
+                    setAsserted(false);
+                    setErrorMessage("X509Certificate Version " + x509Certificate.getVersion() + " mismatch; Policy enforces " + x509Token.getTokenVersionAndType());
+                } else if (x509Certificate.getVersion() == 2) {
+                    setAsserted(false);
+                    setErrorMessage("X509Certificate Version " + x509Certificate.getVersion() + " not supported");
+                } else if ((x509Token.getTokenVersionAndType().equals(SPConstants.WSS_X509_PKI_PATH_V1_TOKEN10) || x509Token.getTokenVersionAndType().equals(SPConstants.WSS_X509_PKI_PATH_V1_TOKEN11)) && delegatingSecurityToken.getTokenType() != Constants.TokenType.X509PkiPathV1Token) {
+                    setAsserted(false);
+                    setErrorMessage("Policy enforces " + x509Token.getTokenVersionAndType() + " but we got " + delegatingSecurityToken.getTokenType());
+                } else if ((x509Token.getTokenVersionAndType().equals(SPConstants.WSS_X509_PKCS7_TOKEN10) || x509Token.getTokenVersionAndType().equals(SPConstants.WSS_X509_PKCS7_TOKEN11))) {
+                    setAsserted(false);
+                    setErrorMessage("Unsupported token type: " + delegatingSecurityToken.getTokenType());
+                }
+            }
+        } catch (WSSecurityException e) {
+            setAsserted(false);
+            setErrorMessage(e.getMessage());
+        }
+    }
+
+    private void assertSecurityContextToken(SecurityContextToken securityContextToken, TokenSecurityEvent securityEvent) {
+        if (!(securityEvent instanceof SecurityContextTokenSecurityEvent)) {
+            setAsserted(false);
+            setErrorMessage("Expected a SecurityContextTokenSecurityEvent but got " + securityEvent.getClass().getName());
+            return;
+        }
+        SecurityContextTokenSecurityEvent securityContextTokenSecurityEvent = (SecurityContextTokenSecurityEvent) securityEvent;
+
+        setAsserted(true);
+        if (securityContextToken.getIssuerName() != null && !securityContextToken.getIssuerName().equals(securityContextTokenSecurityEvent.getIssuerName())) {
+            setAsserted(false);
+            setErrorMessage("IssuerName in Policy (" + securityContextToken.getIssuerName() + ") didn't match with the one in the SecurityContextToken (" + securityContextTokenSecurityEvent.getIssuerName() + ")");
+        }
+        if (securityContextToken.isRequireExternalUriRef() && !securityContextTokenSecurityEvent.isExternalUriRef()) {
+            setAsserted(false);
+            setErrorMessage("Policy enforces externalUriRef but we didn't got one");
+        }
+        //todo sp:SC13SecurityContextToken:
+        //if (securityContextToken.isSc10SecurityContextToken() && )
+    }
+}

Added: webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/AddressingConstants.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/AddressingConstants.java?rev=1172285&view=auto
==============================================================================
--- webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/AddressingConstants.java (added)
+++ webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/AddressingConstants.java Sun Sep 18 13:51:23 2011
@@ -0,0 +1,272 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.swssf.policy.secpolicy;
+
+import javax.xml.namespace.QName;
+
+/**
+ * class lent from apache cxf
+ */
+
+/**
+ * Interface AddressingConstants
+ */
+public interface AddressingConstants {
+
+    // ====================== Common Message Addressing Properties ===================
+    static final String WSA_MESSAGE_ID = "MessageID";
+    static final String WSA_RELATES_TO = "RelatesTo";
+    static final String WSA_RELATES_TO_RELATIONSHIP_TYPE = "RelationshipType";
+    static final String WSA_TO = "To";
+    static final String WSA_REPLY_TO = "ReplyTo";
+    static final String WSA_FROM = "From";
+    static final String WSA_FAULT_TO = "FaultTo";
+    static final String WSA_ACTION = "Action";
+    static final String EPR_SERVICE_NAME = "ServiceName";
+    static final String EPR_REFERENCE_PARAMETERS = "ReferenceParameters";
+
+    // ====================== Common EPR Elements ============================
+    static final String EPR_ADDRESS = "Address";
+    static final String WS_ADDRESSING_VERSION = "WSAddressingVersion";
+    static final String WSA_DEFAULT_PREFIX = "wsa";
+    static final String PARAM_SERVICE_GROUP_CONTEXT_ID =
+            "ServiceGroupContextIdFromAddressing";
+    static final String IS_ADDR_INFO_ALREADY_PROCESSED = "IsAddressingProcessed";
+    static final String DISABLE_ADDRESSING_FOR_IN_MESSAGES = "disableAddressingForInMessages";
+    static final String ADDR_VALIDATE_ACTION = "addressing.validateAction";
+    static final String ADDR_VALIDATE_INVOCATION_PATTERN = "addressing.validateInvocationPattern";
+    static final String ENDPOINT_REFERENCE = "EndpointReference";
+
+    // ====================== WSDL Binding Constants ========================
+    static final String USING_ADDRESSING = "UsingAddressing";
+    static final String ANONYMOUS = "Anonymous";
+
+    // ====================== Addressing Requirement Levels ==================
+    // These are used to represent the requirement level on WS-Addressing indicated
+    // in a services.xml or a WSDL file.
+    static final String ADDRESSING_REQUIREMENT_PARAMETER = "addressingRequirementParameter";
+    // ADDRESSING_UNSPECIFIED is the equivalent of no UsingAddressing flag in a
+    // WSDL file and the default of the WSAddressingRequred attribute in service.xml
+    static final String ADDRESSING_UNSPECIFIED = "unspecified";
+    // ADDRESSING_OPTIONAL is the equivalent of <wsaw:UsingAddressing required="false" />
+    // in a WSDL file
+    static final String ADDRESSING_OPTIONAL = "optional";
+    // ADDRESSING_REQUIRED is the equivalent of <wsaw:UsingAddressing required="true" />
+    // in a WSDL file
+    static final String ADDRESSING_REQUIRED = "required";
+
+    // If this property is set, addressing headers will be replaced from the information in the
+    // message context.  
+    static final String REPLACE_ADDRESSING_HEADERS = "ReplaceAddressingHeaders";
+
+    // this property once set to Boolean.TRUE will make the messages to skip Addressing Handler.
+    // So you will not see Addressing Headers in the OUT path.
+    static final String DISABLE_ADDRESSING_FOR_OUT_MESSAGES =
+            "disableAddressingForOutMessages";
+
+    static final String ADD_MUST_UNDERSTAND_TO_ADDRESSING_HEADERS =
+            "addMustUnderstandToAddressingHeaders";
+
+    static final String SOAP_ROLE_FOR_ADDRESSING_HEADERS = "wsaddressingRole";
+
+    /**
+     * A property pointing to an ArrayList of OMAttribute objects representing any attributes
+     * of the wsa:Action header.
+     */
+    static final String ACTION_ATTRIBUTES = "actionAttributes";
+    /**
+     * A property pointing to an ArrayList of OMAttribute objects representing any attributes
+     * of the wsa:MessageID header.
+     */
+    static final String MESSAGEID_ATTRIBUTES = "messageidAttributes";
+
+    /**
+     * When set to Boolean.TRUE this will cause the addressing out handler to output all
+     * populated addressing headers in a message, including any optional ones.
+     */
+    static final String INCLUDE_OPTIONAL_HEADERS = "includeOptionalHeaders";
+
+    /**
+     * This property, if set to Boolean.TRUE, will mean that the addressing handler allows partially
+     * ws-addressed messages to be sent even if they are then invalid rather than throwing a fault.
+     * <p/>
+     * It is not clear how necessary this property is and it may be removed before the next release if
+     * it is not seen to be necessary - davidillsley@apache.org
+     */
+    static final String DISABLE_OUTBOUND_ADDRESSING_VALIDATION =
+            "disableAddressingOutboundValidation";
+
+    /**
+     * This parameter is used to attach OMElement ReferenceParameters found in an EPR embedded in a
+     * WSDL to an AxisEndpoint object.
+     */
+    static final String REFERENCE_PARAMETER_PARAMETER = "referenceParameters";
+
+    /**
+     * This parameter is used to decide whether the reference parameters in an inbound request
+     * message are to be processed or not.
+     */
+    static final String DISABLE_REF_PARAMETER_EXTRACT = "disableRefParamExtract";
+
+    static final String WSAM_INVOCATION_PATTERN_PARAMETER_NAME = "wsamInvocationPattern";
+    static final String WSAM_INVOCATION_PATTERN_SYNCHRONOUS = "synchronous";
+    static final String WSAM_INVOCATION_PATTERN_ASYNCHRONOUS = "asynchronous";
+    static final String WSAM_INVOCATION_PATTERN_BOTH = "both";
+
+    // ======================== Common Faults ==============================
+    static final String FAULT_ACTION_NOT_SUPPORTED = "ActionNotSupported";
+    static final String FAULT_ACTION_NOT_SUPPORTED_REASON =
+            "The [action] cannot be processed at the receiver.";
+    static final String FAULT_ADDRESSING_DESTINATION_UNREACHABLE =
+            "DestinationUnreachable";
+
+    // ==================== WS-AddressingAndIdentity ========================
+
+    static final String ADDRESSING_IDENTITY_PREFIX = "wsid";
+    static final String ADDRESSING_IDENTITY_NS =
+            "http://schemas.xmlsoap.org/ws/2006/02/addressingidentity";
+    static final String XML_SIG_PREFIX = "ds";
+    static final String XML_SIG_NS = "http://www.w3.org/2000/09/xmldsig#";
+
+    static final String IDENTITY = "Identity";
+    static final String IDENTITY_KEY_INFO = "KeyInfo";
+    static final String IDENTITY_X509_DATA = "X509Data";
+    static final String IDENTITY_X509_CERT = "X509Certificate";
+
+    static final String IDENTITY_PARAMETER = "WSAddressingAndIdentity";
+
+    static final QName QNAME_IDENTITY = new QName(ADDRESSING_IDENTITY_NS, IDENTITY, ADDRESSING_IDENTITY_PREFIX);
+    static final QName QNAME_IDENTITY_KEY_INFO = new QName(XML_SIG_NS, IDENTITY_KEY_INFO, XML_SIG_PREFIX);
+    static final QName QNAME_IDENTITY_X509_DATA = new QName(XML_SIG_NS, IDENTITY_X509_DATA, XML_SIG_PREFIX);
+    static final QName QNAME_IDENTITY_X509_CERT = new QName(XML_SIG_NS, IDENTITY_X509_CERT, XML_SIG_PREFIX);
+
+    interface Final {
+
+        // ====================== Addressing 1.0 Final Version Constants ====================
+        static final String WSA_NAMESPACE =
+                "http://www.w3.org/2005/08/addressing";
+        static final String WSAW_NAMESPACE =
+                "http://www.w3.org/2006/05/addressing/wsdl";
+        static final String WSAM_NAMESPACE =
+                "http://www.w3.org/2007/05/addressing/metadata";
+        /**
+         * @deprecated use {@link #WSA_DEFAULT_RELATIONSHIP_TYPE} instead.
+         */
+        static final String WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE =
+                "http://www.w3.org/2005/08/addressing/reply";
+        static final String WSA_IS_REFERENCE_PARAMETER_ATTRIBUTE = "IsReferenceParameter";
+        static final String WSA_ANONYMOUS_URL =
+                "http://www.w3.org/2005/08/addressing/anonymous";
+        static final String WSA_NONE_URI =
+                "http://www.w3.org/2005/08/addressing/none";
+        static final String WSA_FAULT_ACTION =
+                "http://www.w3.org/2005/08/addressing/fault";
+        static final String WSA_SOAP_FAULT_ACTION =
+                "http://www.w3.org/2005/08/addressing/soap/fault";
+        static final String WSA_TYPE_ATTRIBUTE_VALUE = "true";
+        static final String WSA_SERVICE_NAME_ENDPOINT_NAME = "EndpointName";
+        static final String WSA_POLICIES = "Policies";
+        static final String WSA_METADATA = "Metadata";
+        static final String WSA_DEFAULT_METADATA_PREFIX = "wsam";
+        static final String WSA_ORIGINAL_METADATA_PREFIX = "wsaw";
+
+        static final String WSA_INTERFACE_NAME = "InterfaceName";
+
+        static final String WSA_DEFAULT_RELATIONSHIP_TYPE =
+                "http://www.w3.org/2005/08/addressing/reply";
+
+        // fault information
+        static final String FAULT_HEADER_PROB_HEADER_QNAME = "ProblemHeaderQName";
+        static final String FAULT_HEADER_PROB_HEADER = "ProblemHeader";
+        static final String FAULT_HEADER_PROB_IRI = "ProblemIRI";
+        static final String FAULT_HEADER_DETAIL = "FaultDetail";
+        static final String FAULT_INVALID_HEADER = "InvalidAddressingHeader";
+        static final String FAULT_INVALID_HEADER_REASON =
+                "A header representing a Message Addressing Property is not valid and the message cannot be processed";
+        static final String FAULT_ADDRESSING_HEADER_REQUIRED =
+                "MessageAddressingHeaderRequired";
+        static final String FAULT_ADDRESSING_HEADER_REQUIRED_REASON =
+                "A required header representing a Message Addressing Property is not present";
+        static final String FAULT_ADDRESSING_DESTINATION_UNREACHABLE_REASON =
+                "No route can be determined to reach [destination]";
+        static final String FAULT_INVALID_CARDINALITY = "InvalidCardinality";
+        static final String FAULT_ONLY_ANONYMOUS_ADDRESS_SUPPORTED =
+                "OnlyAnonymousAddressSupported";
+        static final String FAULT_ONLY_NON_ANONYMOUS_ADDRESS_SUPPORTED =
+                "OnlyNonAnonymousAddressSupported";
+        static final String FAULT_PROBLEM_ACTION_NAME = "ProblemAction";
+
+        static final QName WSAW_USING_ADDRESSING =
+                new QName(WSAW_NAMESPACE, USING_ADDRESSING);
+        static final QName WSAW_ANONYMOUS = new QName(WSAW_NAMESPACE, USING_ADDRESSING);
+        static final QName WSA_ENDPOINT_REFERENCE = new QName(WSA_NAMESPACE, ENDPOINT_REFERENCE, WSA_DEFAULT_PREFIX);
+        static final QName WSA_ADDRESS = new QName(WSA_NAMESPACE, EPR_ADDRESS, WSA_DEFAULT_PREFIX);
+
+        final QName QNAME_WSA_TO = new QName(WSA_NAMESPACE, WSA_TO);
+        final QName QNAME_WSA_FROM = new QName(WSA_NAMESPACE, WSA_FROM);
+        final QName QNAME_WSA_REPLY_TO = new QName(WSA_NAMESPACE, WSA_REPLY_TO);
+        final QName QNAME_WSA_RELATES_TO = new QName(WSA_NAMESPACE, WSA_RELATES_TO);
+        final QName QNAME_WSA_MESSAGE_ID = new QName(WSA_NAMESPACE, WSA_MESSAGE_ID);
+        final QName QNAME_WSA_HEADER_DETAIL = new QName(WSA_NAMESPACE, FAULT_HEADER_DETAIL);
+        final QName QNAME_PROBLEM_HEADER = new QName(WSA_NAMESPACE, FAULT_HEADER_PROB_HEADER_QNAME);
+        final QName QNAME_INVALID_HEADER = new QName(WSA_NAMESPACE, FAULT_INVALID_HEADER);
+    }
+
+
+    interface Submission {
+
+        // ====================== Addressing Submission Version Constants ===================
+        static final String WSA_NAMESPACE =
+                "http://schemas.xmlsoap.org/ws/2004/08/addressing";
+        /**
+         * @deprecated use {@link #WSA_DEFAULT_RELATIONSHIP_TYPE} instead.
+         */
+        static final String WSA_RELATES_TO_RELATIONSHIP_TYPE_DEFAULT_VALUE = "wsa:Reply";
+        static final String WSA_DEFAULT_RELATIONSHIP_TYPE = "wsa:Reply";
+        static final String WSA_ANONYMOUS_URL =
+                "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
+
+        static final String EPR_REFERENCE_PROPERTIES = "ReferenceProperties";
+        static final String WSA_FAULT_ACTION =
+                "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
+        static final String WSA_SERVICE_NAME_ENDPOINT_NAME = "PortName";
+        static final String WSA_INTERFACE_NAME = "PortType";
+
+        // fault information
+        static final String FAULT_INVALID_HEADER = "InvalidMessageInformationHeader";
+        static final String FAULT_INVALID_HEADER_REASON =
+                "A message information header is not valid and the message cannot be processed. The validity failure can be either structural or semantic, e.g. a [destination] that is not a URI or a [relationship] to a [message id] that was never issued.";
+        static final String FAULT_ADDRESSING_HEADER_REQUIRED =
+                "MessageInformationHeaderRequired";
+        static final String FAULT_ADDRESSING_HEADER_REQUIRED_REASON =
+                "A required message information header, To, MessageID, or Action, is not present.";
+        static final String FAULT_ADDRESSING_DESTINATION_UNREACHABLE_REASON =
+                "No route can be determined to reach the destination role defined by the WS-Addressing To.";
+
+        static final QName WSAW_USING_ADDRESSING =
+                new QName(WSA_NAMESPACE, USING_ADDRESSING);
+
+        final QName QNAME_WSA_TO = new QName(WSA_NAMESPACE, WSA_TO);
+        final QName QNAME_WSA_FROM = new QName(WSA_NAMESPACE, WSA_FROM);
+        final QName QNAME_WSA_REPLY_TO = new QName(WSA_NAMESPACE, WSA_REPLY_TO);
+        final QName QNAME_WSA_RELATES_TO = new QName(WSA_NAMESPACE, WSA_RELATES_TO);
+        final QName QNAME_WSA_MESSAGE_ID = new QName(WSA_NAMESPACE, WSA_MESSAGE_ID);
+    }
+}

Propchange: webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/AddressingConstants.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/PolicyUtil.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/PolicyUtil.java?rev=1172285&view=auto
==============================================================================
--- webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/PolicyUtil.java (added)
+++ webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/PolicyUtil.java Sun Sep 18 13:51:23 2011
@@ -0,0 +1,111 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.swssf.policy.secpolicy;
+
+import org.apache.neethi.Assertion;
+import org.apache.neethi.PolicyComponent;
+import org.apache.neethi.PolicyOperator;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author $Author$
+ * @version $Revision$ $Date$
+ */
+public class PolicyUtil {
+
+    public static SPConstants getSPVersion(String namespace) {
+        if (SP13Constants.SP_NS.equals(namespace)) {
+            return SP13Constants.INSTANCE;
+        } else if (SP12Constants.SP_NS.equals(namespace)) {
+            return SP12Constants.INSTANCE;
+        } else if (SP11Constants.SP_NS.equals(namespace)) {
+            return SP11Constants.INSTANCE;
+        }
+        return null;
+    }
+
+    public static List<Assertion> getPolicyAssertionsInSameAlternative(PolicyComponent policy, Assertion policyAssertion, Class<? extends Assertion> policyAssertionToSearchFor, Object... initArgs) {
+        List<Assertion> policyAssertions = new ArrayList<Assertion>();
+        PolicyOperator foundPolicyOperator = (PolicyOperator) getPolicyAssertionParentOperator(policy, policyAssertion, null);
+        getPolicyAssertion(policyAssertions, foundPolicyOperator, policyAssertionToSearchFor);
+        if (policyAssertions.size() == 0) {
+            //ok no matching Assertion found, so append one
+            //atm we append it directly on the operator. this is probably not the correct place
+            Class[] params = new Class[initArgs.length];
+            for (int i = 0; i < initArgs.length; i++) {
+                Object initArg = initArgs[i];
+                //todo better solution:
+                if (i == initArgs.length - 1) {
+                    params[i] = initArg.getClass().getSuperclass();
+                } else {
+                    params[i] = initArg.getClass();
+                }
+            }
+            try {
+                Assertion assertion = policyAssertionToSearchFor.getConstructor(params).newInstance(initArgs);
+                policyAssertions.add(assertion);
+            } catch (Exception e) {
+                throw new IllegalArgumentException(e);
+            }
+        }
+        return policyAssertions;
+    }
+
+    public static PolicyComponent getPolicyAssertionParentOperator(PolicyComponent policy, Assertion policyAssertion, PolicyComponent parent) {
+        if (policy instanceof PolicyOperator) {
+            PolicyOperator policyOperator = (PolicyOperator) policy;
+            @SuppressWarnings("unchecked")
+            List<PolicyComponent> policyComponents = policyOperator.getPolicyComponents();
+            for (int i = 0; i < policyComponents.size(); i++) {
+                PolicyComponent policyComponent = policyComponents.get(i);
+                PolicyComponent foundPolicyComponent = getPolicyAssertionParentOperator(policyComponent, policyAssertion, policyOperator);
+                if (foundPolicyComponent != null) {
+                    return foundPolicyComponent;
+                }
+            }
+        } else {
+            Assertion foundPolicyAssertion = (Assertion) policy;
+            if (foundPolicyAssertion == policyAssertion) {
+                return parent;
+            } else {
+                return null;
+            }
+        }
+        return null;
+    }
+
+    public static void getPolicyAssertion(List<Assertion> foundPolicies, PolicyComponent policyComponent, Class<? extends Assertion> policyAssertionClass) {
+        if (policyComponent instanceof PolicyOperator) {
+            PolicyOperator policyOperator = (PolicyOperator) policyComponent;
+            @SuppressWarnings("unchecked")
+            List<PolicyComponent> policyComponents = policyOperator.getPolicyComponents();
+            for (int i = 0; i < policyComponents.size(); i++) {
+                PolicyComponent curpolicyComponent = policyComponents.get(i);
+                getPolicyAssertion(foundPolicies, curpolicyComponent, policyAssertionClass);
+            }
+        } else {
+            Assertion foundPolicyAssertion = (Assertion) policyComponent;
+            if (foundPolicyAssertion.getClass() == policyAssertionClass) {
+                foundPolicies.add(foundPolicyAssertion);
+            }
+        }
+    }
+}

Propchange: webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/PolicyUtil.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision

Added: webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/SP11Constants.java
URL: http://svn.apache.org/viewvc/webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/SP11Constants.java?rev=1172285&view=auto
==============================================================================
--- webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/SP11Constants.java (added)
+++ webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/SP11Constants.java Sun Sep 18 13:51:23 2011
@@ -0,0 +1,735 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.swssf.policy.secpolicy;
+
+import javax.xml.namespace.QName;
+
+/**
+ * class lent from apache cxf
+ */
+public final class SP11Constants extends SPConstants {
+
+    private SP11Constants() {
+        //utility class
+    }
+
+    public static final SP11Constants INSTANCE = new SP11Constants();
+
+    public final static String SP_NS = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy";
+
+    public final static String SP_PREFIX = "sp";
+
+    //all attributes are unqualified!!
+    public static final QName INCLUDE_TOKEN = new QName(SPConstants.ATTR_INCLUDE_TOKEN);
+
+    public final static String INCLUDE_NEVER = SP11Constants.SP_NS +
+            SPConstants.INCLUDE_TOKEN_NEVER_SUFFIX;
+
+    public final static String INCLUDE_ONCE = SP11Constants.SP_NS +
+            SPConstants.INCLUDE_TOKEN_ONCE_SUFFIX;
+
+    public final static String INCLUDE_ALWAYS_TO_RECIPIENT = SP11Constants.SP_NS
+            + SPConstants.INCLUDE_TOEKN_ALWAYS_TO_RECIPIENT_SUFFIX;
+
+    public final static String INCLUDE_ALWAYS = SP11Constants.SP_NS
+            + SPConstants.INCLUDE_TOEKN_ALWAYS_SUFFIX;
+
+    // /////////////////////////////////////////////////////////////////////
+
+    public static final QName ATTR_XPATH_VERSION = new QName(SP_NS, SPConstants.XPATH_VERSION, SP11Constants.SP_PREFIX);
+
+    ////////////////////////////////////////////////////////////////////////
+
+
+    public static final QName TRANSPORT_BINDING = new QName(SP_NS,
+            SPConstants.TRANSPORT_BINDING, SP11Constants.SP_PREFIX);
+
+    public static final QName ALGORITHM_SUITE = new QName(SP_NS,
+            SPConstants.ALGO_SUITE, SP11Constants.SP_PREFIX);
+
+    public static final QName LAYOUT = new QName(SP_NS, SPConstants.LAYOUT, SP_PREFIX);
+
+
+    public static final QName STRICT = new QName(SP11Constants.SP_NS, SPConstants.LAYOUT_STRICT,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName LAX = new QName(SP11Constants.SP_NS, SPConstants.LAYOUT_LAX,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName LAXTSFIRST = new QName(SP11Constants.SP_NS,
+            SPConstants.LAYOUT_LAX_TIMESTAMP_FIRST, SP11Constants.SP_PREFIX);
+
+    public static final QName LAXTSLAST = new QName(SP11Constants.SP_NS,
+            SPConstants.LAYOUT_LAX_TIMESTAMP_LAST, SP11Constants.SP_PREFIX);
+
+    // ////////////////
+
+    public static final QName INCLUDE_TIMESTAMP = new QName(SP_NS,
+            SPConstants.INCLUDE_TIMESTAMP, SP11Constants.SP_PREFIX);
+
+    public static final QName TRANSPORT_TOKEN = new QName(SP_NS,
+            SPConstants.TRANSPORT_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName HTTPS_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.HTTPS_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName SECURITY_CONTEXT_TOKEN = new QName(
+            SP11Constants.SP_NS, SPConstants.SECURITY_CONTEXT_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName SECURE_CONVERSATION_TOKEN = new QName(
+            SP11Constants.SP_NS, SPConstants.SECURE_CONVERSATION_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName SIGNATURE_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.SIGNATURE_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName SIGNED_PARTS = new QName(SP11Constants.SP_NS,
+            SPConstants.SIGNED_PARTS, SP11Constants.SP_PREFIX);
+
+    public static final QName ENCRYPTED_PARTS = new QName(SP11Constants.SP_NS,
+            SPConstants.ENCRYPTED_PARTS, SP11Constants.SP_PREFIX);
+
+    public static final QName SIGNED_ELEMENTS = new QName(SP11Constants.SP_NS,
+            SPConstants.SIGNED_ELEMENTS, SP11Constants.SP_PREFIX);
+
+    public static final QName ENCRYPTED_ELEMENTS = new QName(SP11Constants.SP_NS,
+            SPConstants.ENCRYPTED_ELEMENTS, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRED_ELEMENTS = new QName(SP11Constants.SP_NS,
+            SPConstants.REQUIRED_ELEMENTS, SP11Constants.SP_PREFIX);
+
+    public static final QName USERNAME_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.USERNAME_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName SAML_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.SAML_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_USERNAME_TOKEN10 = new QName(SP11Constants.SP_NS,
+            SPConstants.USERNAME_TOKEN10, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_USERNAME_TOKEN11 = new QName(SP11Constants.SP_NS,
+            SPConstants.USERNAME_TOKEN11, SP11Constants.SP_PREFIX);
+
+    public static final QName ENCRYPTION_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.ENCRYPTION_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName X509_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.X509_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_V1_TOKEN_10 = new QName(SP11Constants.SP_NS,
+            SPConstants.WSS_X509_V1_TOKEN10, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_V3_TOKEN_10 = new QName(SP11Constants.SP_NS,
+            SPConstants.WSS_X509_V3_TOKEN10, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_PKCS7_TOKEN_10 = new QName(
+            SP11Constants.SP_NS, SPConstants.WSS_X509_PKCS7_TOKEN10, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_PKI_PATH_V1_TOKEN_10 = new QName(
+            SP11Constants.SP_NS, SPConstants.WSS_X509_PKI_PATH_V1_TOKEN10, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_V1_TOKEN_11 = new QName(SP11Constants.SP_NS,
+            SPConstants.WSS_X509_V1_TOKEN11, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_V3_TOKEN_11 = new QName(SP11Constants.SP_NS,
+            SPConstants.WSS_X509_V3_TOKEN11, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_PKCS7_TOKEN_11 = new QName(
+            SP11Constants.SP_NS, SPConstants.WSS_X509_PKCS7_TOKEN11, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS_X509_PKI_PATH_V1_TOKEN_11 = new QName(
+            SP11Constants.SP_NS, SPConstants.WSS_X509_PKI_PATH_V1_TOKEN11, SP11Constants.SP_PREFIX);
+
+    public static final QName ISSUED_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.ISSUED_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName SUPPORTING_TOKENS = new QName(SP11Constants.SP_NS,
+            SPConstants.SUPPORTING_TOKENS, SP11Constants.SP_PREFIX);
+
+    public static final QName SIGNED_SUPPORTING_TOKENS = new QName(
+            SP11Constants.SP_NS, SPConstants.SIGNED_SUPPORTING_TOKENS, SP11Constants.SP_PREFIX);
+
+    public static final QName ENDORSING_SUPPORTING_TOKENS = new QName(
+            SP11Constants.SP_NS, SPConstants.ENDORSING_SUPPORTING_TOKENS, SP11Constants.SP_PREFIX);
+
+    public static final QName SIGNED_ENDORSING_SUPPORTING_TOKENS = new QName(
+            SP11Constants.SP_NS, SPConstants.SIGNED_ENDORSING_SUPPORTING_TOKENS,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName PROTECTION_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.PROTECTION_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName ASYMMETRIC_BINDING = new QName(SP11Constants.SP_NS,
+            SPConstants.ASYMMETRIC_BINDING, SP11Constants.SP_PREFIX);
+
+    public static final QName SYMMETRIC_BINDING = new QName(SP11Constants.SP_NS,
+            SPConstants.SYMMETRIC_BINDING, SP11Constants.SP_PREFIX);
+
+    public static final QName INITIATOR_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.INITIATOR_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName RECIPIENT_TOKEN = new QName(SP11Constants.SP_NS,
+            SPConstants.RECIPIENT_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName ENCRYPT_SIGNATURE = new QName(SP11Constants.SP_NS,
+            SPConstants.ENCRYPT_SIGNATURE, SP11Constants.SP_PREFIX);
+
+    public static final QName PROTECT_TOKENS = new QName(SP11Constants.SP_NS,
+            SPConstants.PROTECT_TOKENS, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_KEY_IDENTIFIRE_REFERENCE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_KEY_IDENTIFIRE_REFERENCE,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_ISSUER_SERIAL_REFERENCE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_ISSUER_SERIAL_REFERENCE,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_EMBEDDED_TOKEN_REFERENCE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_EMBEDDED_TOKEN_REFERENCE,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_THUMBPRINT_REFERENCE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_THUMBPRINT_REFERENCE, SP11Constants.SP_PREFIX);
+
+
+    public static final QName MUST_SUPPORT_REF_KEY_IDENTIFIER = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_REF_KEY_IDENTIFIER, SP11Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_ISSUER_SERIAL = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_REF_ISSUER_SERIAL, SP11Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_EXTERNAL_URI = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_REF_EXTERNAL_URI, SP11Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_EMBEDDED_TOKEN = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_REF_EMBEDDED_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_THUMBPRINT = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_REF_THUMBPRINT, SP11Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_REF_ENCRYPTED_KEY = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_REF_ENCRYPTED_KEY, SP11Constants.SP_PREFIX);
+
+    public static final QName WSS10 = new QName(SP11Constants.SP_NS, SPConstants.WSS10,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName WSS11 = new QName(SP11Constants.SP_NS, SPConstants.WSS11,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName TRUST_10 = new QName(SP11Constants.SP_NS, SPConstants.TRUST_10,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_SIGNATURE_CONFIRMATION = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_SIGNATURE_CONFIRMATION,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_CLIENT_CHALLENGE = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_CLIENT_CHALLENGE, SP11Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_SERVER_CHALLENGE = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_SERVER_CHALLENGE, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_CLIENT_ENTROPY = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_CLIENT_ENTROPY, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_SERVER_ENTROPY = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_SERVER_ENTROPY, SP11Constants.SP_PREFIX);
+
+    public static final QName MUST_SUPPORT_ISSUED_TOKENS = new QName(
+            SP11Constants.SP_NS, SPConstants.MUST_SUPPORT_ISSUED_TOKENS, SP11Constants.SP_PREFIX);
+
+    public static final QName ISSUER = new QName(SP11Constants.SP_NS, SPConstants.ISSUER,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName ISSUER_NAME = new QName(SP11Constants.SP_NS, SPConstants.ISSUER_NAME,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_DERIVED_KEYS = new QName(SP11Constants.SP_NS,
+            SPConstants.REQUIRE_DERIVED_KEYS, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_EXTERNAL_URI_REFERNCE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_EXTERNAL_URI_REFERNCE, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_EXTERNAL_REFERNCE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_EXTERNAL_REFERNCE, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_INTERNAL_REFERNCE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_INTERNAL_REFERNCE, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUIRE_CLIENT_CERTIFICATE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUIRE_CLIENT_CERTIFICATE, SP11Constants.SP_PREFIX);
+
+    public static final QName HTTP_BASIC_AUTHENTICATION = new QName(
+            SP11Constants.SP_NS, SPConstants.HTTP_BASIC_AUTHENTICATION, SP11Constants.SP_PREFIX);
+
+    public static final QName HTTP_DIGEST_AUTHENTICATION = new QName(
+            SP11Constants.SP_NS, SPConstants.HTTP_DIGEST_AUTHENTICATION, SP11Constants.SP_PREFIX);
+
+    public static final QName REQUEST_SECURITY_TOKEN_TEMPLATE = new QName(
+            SP11Constants.SP_NS, SPConstants.REQUEST_SECURITY_TOKEN_TEMPLATE,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName SC10_SECURITY_CONTEXT_TOKEN = new QName(
+            SP11Constants.SP_NS, SPConstants.SC10_SECURITY_CONTEXT_TOKEN, SP11Constants.SP_PREFIX);
+
+    public static final QName BOOTSTRAP_POLICY = new QName(SP11Constants.SP_NS,
+            SPConstants.BOOTSTRAP_POLICY, SP11Constants.SP_PREFIX);
+
+    public final static QName XPATH = new QName(SP11Constants.SP_NS, SPConstants.XPATH_EXPR,
+            SP11Constants.SP_PREFIX);
+
+    public static final QName HEADER = new QName(SP11Constants.SP_NS, "Header");
+
+    public static final QName BODY = new QName(SP11Constants.SP_NS, "Body");
+
+    public IncludeTokenType getInclusionFromAttributeValue(String value) {
+
+        if (INCLUDE_ALWAYS.equals(value)) {
+            return IncludeTokenType.INCLUDE_TOKEN_ALWAYS;
+        } else if (INCLUDE_ALWAYS_TO_RECIPIENT.equals(value)) {
+            return IncludeTokenType.INCLUDE_TOKEN_ALWAYS_TO_RECIPIENT;
+        } else if (INCLUDE_NEVER.equals(value)) {
+            return IncludeTokenType.INCLUDE_TOKEN_NEVER;
+        } else if (INCLUDE_ONCE.equals(value)) {
+            return IncludeTokenType.INCLUDE_TOKEN_ONCE;
+        }
+        return value == null || value.equals("") ? IncludeTokenType.INCLUDE_TOKEN_ALWAYS : null;
+    }
+
+    public String getAttributeValueFromInclusion(IncludeTokenType value) {
+
+        switch (value) {
+            case INCLUDE_TOKEN_ALWAYS:
+                return SP11Constants.INCLUDE_ALWAYS;
+            case INCLUDE_TOKEN_ALWAYS_TO_RECIPIENT:
+                return SP11Constants.INCLUDE_ALWAYS_TO_RECIPIENT;
+            case INCLUDE_TOKEN_NEVER:
+                return SP11Constants.INCLUDE_NEVER;
+            case INCLUDE_TOKEN_ONCE:
+                return SP11Constants.INCLUDE_ONCE;
+            default:
+                return null;
+        }
+
+    }
+
+    public Version getVersion() {
+        return Version.SP_V11;
+    }
+
+    public String getNamespace() {
+        return SP_NS;
+    }
+
+    public QName getAttrXpathVersion() {
+        return ATTR_XPATH_VERSION;
+    }
+
+    public QName getXpath() {
+        return XPATH;
+    }
+
+    public QName getHeader() {
+        return HEADER;
+    }
+
+    public QName getBody() {
+        return BODY;
+    }
+
+    public QName getAttachments() {
+        return EMPTY;
+    }
+
+    public QName getIssuer() {
+        return ISSUER;
+    }
+
+    public QName getIssuerName() {
+        return ISSUER_NAME;
+    }
+
+    public QName getRequestSecurityTokenTemplate() {
+        return REQUEST_SECURITY_TOKEN_TEMPLATE;
+    }
+
+    public QName getRequireExternalRefernce() {
+        return REQUIRE_EXTERNAL_REFERNCE;
+    }
+
+    public QName getRequireInternalRefernce() {
+        return REQUIRE_INTERNAL_REFERNCE;
+    }
+
+    public QName getRequireClientCertificate() {
+        return REQUIRE_CLIENT_CERTIFICATE;
+    }
+
+    public QName getHttpBasicAuthentication() {
+        return HTTP_BASIC_AUTHENTICATION;
+    }
+
+    public QName getHttpDigestAuthentication() {
+        return HTTP_DIGEST_AUTHENTICATION;
+    }
+
+    public QName getRequireExternalUriRefernce() {
+        return REQUIRE_EXTERNAL_URI_REFERNCE;
+    }
+
+    public QName getRequireExplicitDerivedKeys() {
+        return EMPTY;
+    }
+
+    public QName getRequireImpliedDerivedKeys() {
+        return EMPTY;
+    }
+
+    public QName getRequireDerivedKeys() {
+        return REQUIRE_DERIVED_KEYS;
+    }
+
+    public QName getRequireAppliesTo() {
+        return EMPTY;
+    }
+
+    public QName getRequireRequestSecurityTokenCollection() {
+        return EMPTY;
+    }
+
+    public QName getSc10SecurityContextToken() {
+        return SC10_SECURITY_CONTEXT_TOKEN;
+    }
+
+    public QName getBootstrapPolicy() {
+        return BOOTSTRAP_POLICY;
+    }
+
+    public QName getLax() {
+        return LAX;
+    }
+
+    public QName getStrict() {
+        return STRICT;
+    }
+
+    public QName getLaxtsfirst() {
+        return LAXTSFIRST;
+    }
+
+    public QName getLaxtslast() {
+        return LAXTSLAST;
+    }
+
+    public QName getWSS10() {
+        return WSS10;
+    }
+
+    public QName getWSS11() {
+        return WSS11;
+    }
+
+    public QName getAlgorithmSuite() {
+        return ALGORITHM_SUITE;
+    }
+
+    public QName getAsymmetricBinding() {
+        return ASYMMETRIC_BINDING;
+    }
+
+    public QName getEncryptionToken() {
+        return ENCRYPTION_TOKEN;
+    }
+
+    public QName getHttpsToken() {
+        return HTTPS_TOKEN;
+    }
+
+    public QName getInitiatorToken() {
+        return INITIATOR_TOKEN;
+    }
+
+    public QName getIssuedToken() {
+        return ISSUED_TOKEN;
+    }
+
+    public QName getLayout() {
+        return LAYOUT;
+    }
+
+    public QName getProtectionToken() {
+        return PROTECTION_TOKEN;
+    }
+
+    public QName getRecipientToken() {
+        return RECIPIENT_TOKEN;
+    }
+
+    public QName getRequiredElements() {
+        return REQUIRED_ELEMENTS;
+    }
+
+    public QName getSecureConversationToken() {
+        return SECURE_CONVERSATION_TOKEN;
+    }
+
+    public QName getSecurityContextToken() {
+        return SECURITY_CONTEXT_TOKEN;
+    }
+
+    public QName getSignatureToken() {
+        return SIGNATURE_TOKEN;
+    }
+
+    public QName getSignedElements() {
+        return SIGNED_ELEMENTS;
+    }
+
+    public QName getEncryptedElements() {
+        return ENCRYPTED_ELEMENTS;
+    }
+
+    public QName getSignedParts() {
+        return SIGNED_PARTS;
+    }
+
+    public QName getEncryptedParts() {
+        return ENCRYPTED_PARTS;
+    }
+
+    public QName getOnlySignEntireHeadersAndBody() {
+        return EMPTY;
+    }
+
+    public QName getSymmetricBinding() {
+        return SYMMETRIC_BINDING;
+    }
+
+    public QName getTransportBinding() {
+        return TRANSPORT_BINDING;
+    }
+
+    public QName getTransportToken() {
+        return TRANSPORT_TOKEN;
+    }
+
+    public QName getUserNameToken() {
+        return USERNAME_TOKEN;
+    }
+
+    public QName getKeyValueToken() {
+        return EMPTY;
+    }
+
+    public QName getX509Token() {
+        return X509_TOKEN;
+    }
+
+    public QName getSamlToken() {
+        return SAML_TOKEN;
+    }
+
+    public QName getSupportingTokens() {
+        return SUPPORTING_TOKENS;
+    }
+
+    public QName getSignedSupportingTokens() {
+        return SIGNED_SUPPORTING_TOKENS;
+    }
+
+    public QName getEndorsingSupportingTokens() {
+        return ENDORSING_SUPPORTING_TOKENS;
+    }
+
+    public QName getSignedEndorsingSupportingTokens() {
+        return SIGNED_ENDORSING_SUPPORTING_TOKENS;
+    }
+
+    public QName getEncryptedSupportingTokens() {
+        return EMPTY;
+    }
+
+    public QName getSignedEncryptedSupportingTokens() {
+        return EMPTY;
+    }
+
+    public QName getEndorsingEncryptedSupportingTokens() {
+        return EMPTY;
+    }
+
+    public QName getSignedEndorsingEncryptedSupportingTokens() {
+        return EMPTY;
+    }
+
+    public QName getIncludeToken() {
+        return INCLUDE_TOKEN;
+    }
+
+    public QName getRequiredDerivedKeys() {
+        return REQUIRE_DERIVED_KEYS;
+    }
+
+    public QName getIncludeTimestamp() {
+        return INCLUDE_TIMESTAMP;
+    }
+
+    public QName getMustSupportClientChallenge() {
+        return MUST_SUPPORT_CLIENT_CHALLENGE;
+    }
+
+    public QName getMustSupportServerChallenge() {
+        return MUST_SUPPORT_SERVER_CHALLENGE;
+    }
+
+    public QName getRequireClientEntropy() {
+        return REQUIRE_CLIENT_ENTROPY;
+    }
+
+    public QName getRequireServerEntropy() {
+        return REQUIRE_SERVER_ENTROPY;
+    }
+
+    public QName getMustSupportIssuedTokens() {
+        return MUST_SUPPORT_ISSUED_TOKENS;
+    }
+
+    public QName getWssUsernameToken10() {
+        return WSS_USERNAME_TOKEN10;
+    }
+
+    public QName getWssUsernameToken11() {
+        return WSS_USERNAME_TOKEN11;
+    }
+
+    public QName getNoPassword() {
+        return EMPTY;
+    }
+
+    public QName getHashPassword() {
+        return EMPTY;
+    }
+
+    public QName getCreated() {
+        return EMPTY;
+    }
+
+    public QName getNonce() {
+        return EMPTY;
+    }
+
+    public QName getMustSupportRefKeyIdentifier() {
+        return MUST_SUPPORT_REF_KEY_IDENTIFIER;
+    }
+
+    public QName getMustSupportRefIssuerSerial() {
+        return MUST_SUPPORT_REF_ISSUER_SERIAL;
+    }
+
+    public QName getMustSupportRefExternalUri() {
+        return MUST_SUPPORT_REF_EXTERNAL_URI;
+    }
+
+    public QName getMustSupportRefEmbeddedToken() {
+        return MUST_SUPPORT_REF_EMBEDDED_TOKEN;
+    }
+
+    public QName getMustSupportRefThumbprint() {
+        return MUST_SUPPORT_REF_THUMBPRINT;
+    }
+
+    public QName getMustSupportRefEncryptedKey() {
+        return MUST_SUPPORT_REF_ENCRYPTED_KEY;
+    }
+
+    public QName getRequireSignatureConfirmation() {
+        return REQUIRE_SIGNATURE_CONFIRMATION;
+    }
+
+    public QName getWssX509V1Token10() {
+        return WSS_X509_V1_TOKEN_10;
+    }
+
+    public QName getWssX509V3Token10() {
+        return WSS_X509_V3_TOKEN_10;
+    }
+
+    public QName getWssX509Pkcs7Token10() {
+        return WSS_X509_PKCS7_TOKEN_10;
+    }
+
+    public QName getWssX509PkiPathV1Token10() {
+        return WSS_X509_PKI_PATH_V1_TOKEN_10;
+    }
+
+    public QName getWssX509V1Token11() {
+        return WSS_X509_V1_TOKEN_11;
+    }
+
+    public QName getWssX509V3Token11() {
+        return WSS_X509_V3_TOKEN_11;
+    }
+
+    public QName getWssX509Pkcs7Token11() {
+        return WSS_X509_PKCS7_TOKEN_11;
+    }
+
+    public QName getWssX509PkiPathV1Token11() {
+        return WSS_X509_PKI_PATH_V1_TOKEN_11;
+    }
+
+    public QName getRequireKeyIdentifireReference() {
+        return REQUIRE_KEY_IDENTIFIRE_REFERENCE;
+    }
+
+    public QName getRequireIssuerSerialReference() {
+        return REQUIRE_ISSUER_SERIAL_REFERENCE;
+    }
+
+    public QName getRequireEmbeddedTokenReference() {
+        return REQUIRE_EMBEDDED_TOKEN_REFERENCE;
+    }
+
+    public QName getRequireThumbprintReference() {
+        return REQUIRE_THUMBPRINT_REFERENCE;
+    }
+
+    public QName getEncryptBeforeSigning() {
+        return EMPTY;
+    }
+
+    public QName getSignBeforeEncrypting() {
+        return EMPTY;
+    }
+
+    public QName getEncryptSignature() {
+        return ENCRYPT_SIGNATURE;
+    }
+
+    public QName getProtectTokens() {
+        return PROTECT_TOKENS;
+    }
+
+    public QName getTrust10() {
+        return TRUST_10;
+    }
+
+    public QName getTrust13() {
+        return EMPTY;
+    }
+}

Propchange: webservices/wss4j/branches/swssf/streaming-ws-policy/src/main/java/org/swssf/policy/secpolicy/SP11Constants.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision



Mime
View raw message