You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ws.apache.org by we...@apache.org on 2006/01/10 16:38:35 UTC

svn commit: r367649 [1/2] - /webservices/commons/trunk/policy/src/examples/secParser/

Author: werner
Date: Tue Jan 10 07:38:28 2006
New Revision: 367649

URL: http://svn.apache.org/viewcvs?rev=367649&view=rev
Log:
Next step for a security policy processor - still imcomplete.

Added:
    webservices/commons/trunk/policy/src/examples/secParser/EncryptedPartsElementsProcessor.java
    webservices/commons/trunk/policy/src/examples/secParser/SignedPartsElementsProcessor.java
    webservices/commons/trunk/policy/src/examples/secParser/UsernameTokenProcessor.java
    webservices/commons/trunk/policy/src/examples/secParser/X509TokenProcessor.java
Modified:
    webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java
    webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java
    webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java
    webservices/commons/trunk/policy/src/examples/secParser/WSSPolicyProcessorFull.java

Added: webservices/commons/trunk/policy/src/examples/secParser/EncryptedPartsElementsProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/EncryptedPartsElementsProcessor.java?rev=367649&view=auto
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/EncryptedPartsElementsProcessor.java (added)
+++ webservices/commons/trunk/policy/src/examples/secParser/EncryptedPartsElementsProcessor.java Tue Jan 10 07:38:28 2006
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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 examples.secParser;
+
+import org.apache.ws.policy.PrimitiveAssertion;
+
+/**
+ * @author Werner Dittmann (werner@apache.org)
+ */
+
+public class EncryptedPartsElementsProcessor {
+
+	private boolean initializedEncryptedParts = false;
+	private boolean initializedEncryptedElements = false;
+	private SecurityPolicy secPol = new SecurityPolicy();
+
+	/**
+	 * Intialize the EncryptedParts complex token.
+	 * 
+	 * This method creates copies of the child tokens that are
+	 * allowed for SignedParts. These tokens are Body and Header. These copies
+	 * are initialized with handler object and then set as child tokens
+	 * of EncryptedParts.
+	 * <p/>
+	 * The handler object must define the methods <code>doSignedParts, doBody, doHeader</code>.
+	 * 
+	 * @param spt
+	 *            The token that will hold the child tokens.
+	 * @throws NoSuchMethodException
+	 */	
+	private void initializeEncryptedParts(SecurityPolicyToken spt) throws NoSuchMethodException {
+		SecurityPolicyToken tmpSpt = secPol.body.copy();
+		tmpSpt.setProcessTokenMethod(this);
+		spt.setChildToken(tmpSpt);
+
+		tmpSpt = secPol.header.copy();
+		tmpSpt.setProcessTokenMethod(this);
+		spt.setChildToken(tmpSpt);
+		
+	}
+	
+	/**
+	 * Intialize the EncryptedElements complex token.
+	 * 
+	 * This method creates a copy of the child token that is
+	 * allowed for EncryptedElements. The token is XPath. This copy
+	 * is initialized with a handler object and then set as child token
+	 * of EncryptedElements.
+	 * <p/>
+	 * The handler object must define the method <code>doXPath</code>.
+	 * 
+	 * @param spt
+	 *            The token that will hold the child tokens.
+	 * @throws NoSuchMethodException
+	 */
+	private void initializeEncryptedElements(SecurityPolicyToken spt) throws NoSuchMethodException {
+		SecurityPolicyToken tmpSpt = secPol.xPath.copy();
+		tmpSpt.setProcessTokenMethod(this);
+		spt.setChildToken(tmpSpt);
+	}
+	
+	
+    public Object doEncryptedParts(SecurityProcessorContext spc) {
+		System.out.println("Processing EncryptedParts token (EPE): "
+				+ SecurityProcessorContext.ACTION_NAMES[spc.getAction()]);
+		
+		SecurityPolicyToken spt = spc.readCurrentSecurityToken();
+		if (!initializedEncryptedParts) {
+			try {
+				initializeEncryptedParts(spt);
+				initializedEncryptedParts = true;
+			} catch (NoSuchMethodException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return new Boolean(false);
+			}
+		}
+		System.out.println(spt.getTokenName());
+		PrimitiveAssertion pa = spc.getAssertion();
+		String text = pa.getStrValue();
+		if (text != null) {
+			text = text.trim();
+			System.out.println("Value: '" + text.toString() + "'");
+		}
+		return new Boolean(true);
+    }
+    
+    public Object doEncryptedElements(SecurityProcessorContext spc) {
+		System.out.println("Processing EncryptedElements token (EPE): "
+				+ SecurityProcessorContext.ACTION_NAMES[spc.getAction()]);
+		
+		SecurityPolicyToken spt = spc.readCurrentSecurityToken();
+		if (!initializedEncryptedElements) {
+			try {
+				initializeEncryptedElements(spt);
+				initializedEncryptedElements = true;
+			} catch (NoSuchMethodException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return new Boolean(false);
+			}
+		}
+		System.out.println(spt.getTokenName());
+		PrimitiveAssertion pa = spc.getAssertion();
+		String text = pa.getStrValue();
+		if (text != null) {
+			text = text.trim();
+			System.out.println("Value: '" + text.toString() + "'");
+		}
+		return new Boolean(true);
+    }
+    
+    public Object doBody(SecurityProcessorContext spc) {
+        System.out.println("Processing Body token (EPE)");
+        return new Boolean(true);
+    }
+    
+    public Object doHeader(SecurityProcessorContext spc) {
+        System.out.println("Processing Header token (EPE)");
+        return new Boolean(true);
+    }
+
+    public Object doXPath(SecurityProcessorContext spc) {
+        System.out.println("Processing XPath token (EPE)");
+        return new Boolean(true);
+    }
+    
+}

Modified: webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java?rev=367649&r1=367648&r2=367649&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java (original)
+++ webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicy.java Tue Jan 10 07:38:28 2006
@@ -1,8 +1,17 @@
 /*
- * Created on 28.12.2005
+ * Copyright 2004,2005 The Apache Software Foundation.
  *
- * To change the template for this generated file go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
+ * Licensed 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 examples.secParser;
 
@@ -10,442 +19,396 @@
 
 public class SecurityPolicy {
 
-    SecurityPolicyToken signedParts = new SecurityPolicyToken("SignedParts",
-            SecurityPolicyToken.COMPLEX_TOKEN, true, null);
-
-    SecurityPolicyToken header = new SecurityPolicyToken("Header",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, new String[] { "Name",
-                    "NameSpace" });
-
-    SecurityPolicyToken body = new SecurityPolicyToken("Body",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken signedParts = new SecurityPolicyToken("SignedParts",
+			SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken signedElements = new SecurityPolicyToken(
-            "SignedElements", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "XPathVersion" });
+	SecurityPolicyToken header = new SecurityPolicyToken("Header",
+			SecurityPolicyToken.SIMPLE_TOKEN, new String[] { "Name",
+					"Namespace" });
 
-    SecurityPolicyToken xPath = new SecurityPolicyToken(
-            "Body",
-            SecurityPolicyToken.SIMPLE_TOKEN | SecurityPolicyToken.WITH_CONTENT,
-            true, null);
+	SecurityPolicyToken body = new SecurityPolicyToken("Body",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken encryptedParts = new SecurityPolicyToken(
-            "EncryptedParts", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken signedElements = new SecurityPolicyToken(
+			"SignedElements", SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "XPathVersion" });
 
-    SecurityPolicyToken encryptedElements = new SecurityPolicyToken(
-            "EncryptedElements", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "XPathVersion" });
+	SecurityPolicyToken xPath = new SecurityPolicyToken(
+			"XPath",
+			SecurityPolicyToken.SIMPLE_TOKEN | SecurityPolicyToken.WITH_CONTENT,
+			null);
 
-    SecurityPolicyToken requiredElements = new SecurityPolicyToken(
-            "RequiredElements", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "XPathVersion" });
+	SecurityPolicyToken encryptedParts = new SecurityPolicyToken(
+			"EncryptedParts", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken usernameToken = new SecurityPolicyToken(
-            "UsernameToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	SecurityPolicyToken encryptedElements = new SecurityPolicyToken(
+			"EncryptedElements", SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "XPathVersion" });
 
-    SecurityPolicyToken wssUsernameToken10 = new SecurityPolicyToken(
-            "WssUsernameToken10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken requiredElements = new SecurityPolicyToken(
+			"RequiredElements", SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "XPathVersion" });
 
-    SecurityPolicyToken wssUsernameToken11 = new SecurityPolicyToken(
-            "WssUsernameToken11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken usernameToken = new SecurityPolicyToken(
+			"UsernameToken", SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "IncludeToken" });
 
-    SecurityPolicyToken issuedToken = new SecurityPolicyToken("IssuedToken",
-            SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	SecurityPolicyToken wssUsernameToken10 = new SecurityPolicyToken(
+			"WssUsernameToken10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken issuer = new SecurityPolicyToken(
-            "Issuer",
-            SecurityPolicyToken.SIMPLE_TOKEN | SecurityPolicyToken.WITH_CONTENT,
-            true, null);
+	SecurityPolicyToken wssUsernameToken11 = new SecurityPolicyToken(
+			"WssUsernameToken11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken requestSecurityTokenTemplate = new SecurityPolicyToken(
-            "RequestSecurityTokenTemplate", SecurityPolicyToken.COMPLEX_TOKEN
-                    | SecurityPolicyToken.WITH_CONTENT, true,
-            new String[] { "TrustVersion" });
+	SecurityPolicyToken issuedToken = new SecurityPolicyToken("IssuedToken",
+			SecurityPolicyToken.COMPLEX_TOKEN, new String[] { "IncludeToken" });
 
-    SecurityPolicyToken requireDerivedKeys = new SecurityPolicyToken(
-            "RequireDerivedKeys", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken issuer = new SecurityPolicyToken(
+			"Issuer",
+			SecurityPolicyToken.SIMPLE_TOKEN | SecurityPolicyToken.WITH_CONTENT,
+			null);
 
-    SecurityPolicyToken requireExternalReference = new SecurityPolicyToken(
-            "RequireExternalReference", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken requestSecurityTokenTemplate = new SecurityPolicyToken(
+			"RequestSecurityTokenTemplate", SecurityPolicyToken.COMPLEX_TOKEN
+					| SecurityPolicyToken.WITH_CONTENT,
+			new String[] { "TrustVersion" });
 
-    SecurityPolicyToken requireInternalReference = new SecurityPolicyToken(
-            "RequireInternalReference", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken requireDerivedKeys = new SecurityPolicyToken(
+			"RequireDerivedKeys", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken x509Token = new SecurityPolicyToken("X509Token",
-            SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	SecurityPolicyToken requireExternalReference = new SecurityPolicyToken(
+			"RequireExternalReference", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken requireKeyIdentifierReference = new SecurityPolicyToken(
-            "RequireKeyIdentifierReference", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken requireInternalReference = new SecurityPolicyToken(
+			"RequireInternalReference", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken requireIssuerSerialReference = new SecurityPolicyToken(
-            "RequireIssuerSerialReference", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken x509Token = new SecurityPolicyToken("X509Token",
+			SecurityPolicyToken.COMPLEX_TOKEN, new String[] { "IncludeToken" });
 
-    SecurityPolicyToken requiredEmbeddedTokenReference = new SecurityPolicyToken(
-            "RequiredEmbeddedTokenReference", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken requireKeyIdentifierReference = new SecurityPolicyToken(
+			"RequireKeyIdentifierReference", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken requireThumbprintReference = new SecurityPolicyToken(
-            "RequireThumbprintReference", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken requireIssuerSerialReference = new SecurityPolicyToken(
+			"RequireIssuerSerialReference", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken wssX509V1Token10 = new SecurityPolicyToken(
-            "WssX509V1Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken requireEmbeddedTokenReference = new SecurityPolicyToken(
+			"RequiredEmbeddedTokenReference", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken wssX509V3Token10 = new SecurityPolicyToken(
-            "WssX509V3Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken requireThumbprintReference = new SecurityPolicyToken(
+			"RequireThumbprintReference", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken wssX509Pkcs7Token10 = new SecurityPolicyToken(
-            "WssX509Pkcs7Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken wssX509V1Token10 = new SecurityPolicyToken(
+			"WssX509V1Token10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssX509PkiPathV1Token10 = new SecurityPolicyToken(
-            "WssX509PkiPathV1Token10", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken wssX509V3Token10 = new SecurityPolicyToken(
+			"WssX509V3Token10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssX509V1Token11 = new SecurityPolicyToken(
-            "WssX509V1Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken wssX509Pkcs7Token10 = new SecurityPolicyToken(
+			"WssX509Pkcs7Token10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssX509V3Token11 = new SecurityPolicyToken(
-            "WssX509V3Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken wssX509PkiPathV1Token10 = new SecurityPolicyToken(
+			"WssX509PkiPathV1Token10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssX509Pkcs7Token11 = new SecurityPolicyToken(
-            "WssX509Pkcs7Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken wssX509V1Token11 = new SecurityPolicyToken(
+			"WssX509V1Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssX509PkiPathV1Token11 = new SecurityPolicyToken(
-            "WssX509PkiPathV1Token11", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken wssX509V3Token11 = new SecurityPolicyToken(
+			"WssX509V3Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken kerberosToken = new SecurityPolicyToken(
-            "KerberosToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	SecurityPolicyToken wssX509Pkcs7Token11 = new SecurityPolicyToken(
+			"WssX509Pkcs7Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    // requireDerivedKeys already defined for issuedToken
-    // requireKeyIdentifierReference already defined for x509Token
-    SecurityPolicyToken wssKerberosV5ApReqToken11 = new SecurityPolicyToken(
-            "WssKerberosV5ApReqToken11", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken wssX509PkiPathV1Token11 = new SecurityPolicyToken(
+			"WssX509PkiPathV1Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssGssKerberosV5ApReqToken11 = new SecurityPolicyToken(
-            "WssGssKerberosV5ApReqToken11", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken kerberosToken = new SecurityPolicyToken(
+			"KerberosToken", SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "IncludeToken" });
 
-    SecurityPolicyToken spnegoContextToken = new SecurityPolicyToken(
-            "SpnegoContextToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	// requireDerivedKeys already defined for issuedToken
+	// requireKeyIdentifierReference already defined for x509Token
+	SecurityPolicyToken wssKerberosV5ApReqToken11 = new SecurityPolicyToken(
+			"WssKerberosV5ApReqToken11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    // issuer already defined for issuedToken
-    // requireDerivedKeys already defined for issuedToken
+	SecurityPolicyToken wssGssKerberosV5ApReqToken11 = new SecurityPolicyToken(
+			"WssGssKerberosV5ApReqToken11", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken securityContextToken = new SecurityPolicyToken(
-            "SecurityContextToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	SecurityPolicyToken spnegoContextToken = new SecurityPolicyToken(
+			"SpnegoContextToken", SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "IncludeToken" });
 
-    // requireDerivedKeys already defined for issuedToken
-    SecurityPolicyToken requireExternalUriReference = new SecurityPolicyToken(
-            "RequireExternalUriReference", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	// issuer already defined for issuedToken
+	// requireDerivedKeys already defined for issuedToken
 
-    SecurityPolicyToken sc10SecurityContextToken = new SecurityPolicyToken(
-            "SC10SecurityContextToken", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken securityContextToken = new SecurityPolicyToken(
+			"SecurityContextToken", SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "IncludeToken" });
 
-    SecurityPolicyToken secureConversationToken = new SecurityPolicyToken(
-            "SecureConversationToken", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	// requireDerivedKeys already defined for issuedToken
+	SecurityPolicyToken requireExternalUriReference = new SecurityPolicyToken(
+			"RequireExternalUriReference", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    // issuer already defined for issuedToken
-    // requireDerivedKeys already defined for issuedToken
-    // requireExternalUriReference is already defined for SecurityContextToken
-    // sc10SecurityContextToken is already defined for SecurityContextToken
-    SecurityPolicyToken bootstrapPolicy = new SecurityPolicyToken(
-            "BootstrapPolicy", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken sc10SecurityContextToken = new SecurityPolicyToken(
+			"SC10SecurityContextToken", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken samlToken = new SecurityPolicyToken("SamlToken",
-            SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	SecurityPolicyToken secureConversationToken = new SecurityPolicyToken(
+			"SecureConversationToken", SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "IncludeToken" });
 
-    // requireDerivedKeys already defined for issuedToken
-    // requireKeyIdentifierReference already defined for x509Token
-    SecurityPolicyToken wssSamlV10Token10 = new SecurityPolicyToken(
-            "WssSamlV10Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	// issuer already defined for issuedToken
+	// requireDerivedKeys already defined for issuedToken
+	// requireExternalUriReference is already defined for SecurityContextToken
+	// sc10SecurityContextToken is already defined for SecurityContextToken
+	SecurityPolicyToken bootstrapPolicy = new SecurityPolicyToken(
+			"BootstrapPolicy", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken wssSamlV11Token10 = new SecurityPolicyToken(
-            "WssSamlV11Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken samlToken = new SecurityPolicyToken("SamlToken",
+			SecurityPolicyToken.COMPLEX_TOKEN, new String[] { "IncludeToken" });
 
-    SecurityPolicyToken wssSamlV10Token11 = new SecurityPolicyToken(
-            "WssSamlV10Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	// requireDerivedKeys already defined for issuedToken
+	// requireKeyIdentifierReference already defined for x509Token
+	SecurityPolicyToken wssSamlV10Token10 = new SecurityPolicyToken(
+			"WssSamlV10Token10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssSamlV11Token11 = new SecurityPolicyToken(
-            "WssSamlV11Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken wssSamlV11Token10 = new SecurityPolicyToken(
+			"WssSamlV11Token10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssSamlV20Token11 = new SecurityPolicyToken(
-            "WssSamlV20Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken wssSamlV10Token11 = new SecurityPolicyToken(
+			"WssSamlV10Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken relToken = new SecurityPolicyToken("RelToken",
-            SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "IncludeToken" });
+	SecurityPolicyToken wssSamlV11Token11 = new SecurityPolicyToken(
+			"WssSamlV11Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    // requireDerivedKeys already defined for issuedToken
-    // requireKeyIdentifierReference already defined for x509Token
-    SecurityPolicyToken wssRelV10Token10 = new SecurityPolicyToken(
-            "WssRelV10Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken wssSamlV20Token11 = new SecurityPolicyToken(
+			"WssSamlV20Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssRelV20Token10 = new SecurityPolicyToken(
-            "WssRelV20Token10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken relToken = new SecurityPolicyToken("RelToken",
+			SecurityPolicyToken.COMPLEX_TOKEN, new String[] { "IncludeToken" });
 
-    SecurityPolicyToken wssRelV10Token11 = new SecurityPolicyToken(
-            "WssRelV10Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	// requireDerivedKeys already defined for issuedToken
+	// requireKeyIdentifierReference already defined for x509Token
+	SecurityPolicyToken wssRelV10Token10 = new SecurityPolicyToken(
+			"WssRelV10Token10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken wssRelV20Token11 = new SecurityPolicyToken(
-            "WssRelV20Token11", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken wssRelV20Token10 = new SecurityPolicyToken(
+			"WssRelV20Token10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken httpsToken = new SecurityPolicyToken("RelToken",
-            SecurityPolicyToken.COMPLEX_TOKEN, true,
-            new String[] { "RequireClientCertificate" });
+	SecurityPolicyToken wssRelV10Token11 = new SecurityPolicyToken(
+			"WssRelV10Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken algorithmSuite = new SecurityPolicyToken("RelToken",
-            SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken wssRelV20Token11 = new SecurityPolicyToken(
+			"WssRelV20Token11", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic256 = new SecurityPolicyToken("Basic256",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken httpsToken = new SecurityPolicyToken("RelToken",
+			SecurityPolicyToken.COMPLEX_TOKEN,
+			new String[] { "RequireClientCertificate" });
 
-    SecurityPolicyToken basic192 = new SecurityPolicyToken("Basic192",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken algorithmSuite = new SecurityPolicyToken("RelToken",
+			SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken basic128 = new SecurityPolicyToken("Basic128",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic256 = new SecurityPolicyToken("Basic256",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken tripleDes = new SecurityPolicyToken("TripleDes",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic192 = new SecurityPolicyToken("Basic192",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic256Rsa15 = new SecurityPolicyToken(
-            "Basic256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic128 = new SecurityPolicyToken("Basic128",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic192Rsa15 = new SecurityPolicyToken(
-            "Basic192Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken tripleDes = new SecurityPolicyToken("TripleDes",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic128Rsa15 = new SecurityPolicyToken(
-            "Basic128Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic256Rsa15 = new SecurityPolicyToken(
+			"Basic256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken tripleDesRsa15 = new SecurityPolicyToken(
-            "TripleDesRsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic192Rsa15 = new SecurityPolicyToken(
+			"Basic192Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic256Sha256 = new SecurityPolicyToken(
-            "Basic256Sha256", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic128Rsa15 = new SecurityPolicyToken(
+			"Basic128Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic192Sha256 = new SecurityPolicyToken(
-            "Basic192Sha256", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken tripleDesRsa15 = new SecurityPolicyToken(
+			"TripleDesRsa15", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic128Sha256 = new SecurityPolicyToken(
-            "Basic128Sha256", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic256Sha256 = new SecurityPolicyToken(
+			"Basic256Sha256", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken tripleDesSha256 = new SecurityPolicyToken(
-            "TripleDesSha256", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic192Sha256 = new SecurityPolicyToken(
+			"Basic192Sha256", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic256Sha256Rsa15 = new SecurityPolicyToken(
-            "Basic256Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic128Sha256 = new SecurityPolicyToken(
+			"Basic128Sha256", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic192Sha256Rsa15 = new SecurityPolicyToken(
-            "Basic192Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken tripleDesSha256 = new SecurityPolicyToken(
+			"TripleDesSha256", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken basic128Sha256Rsa15 = new SecurityPolicyToken(
-            "Basic128Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic256Sha256Rsa15 = new SecurityPolicyToken(
+			"Basic256Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken tripleDesSha256Rsa15 = new SecurityPolicyToken(
-            "TripleDesSha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken basic192Sha256Rsa15 = new SecurityPolicyToken(
+			"Basic192Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken inclusiveC14N = new SecurityPolicyToken(
-            "InclusiveC14N", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken basic128Sha256Rsa15 = new SecurityPolicyToken(
+			"Basic128Sha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken soapNormalization10 = new SecurityPolicyToken(
-            "SoapNormalization10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken tripleDesSha256Rsa15 = new SecurityPolicyToken(
+			"TripleDesSha256Rsa15", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken strTransform10 = new SecurityPolicyToken(
-            "StrTransform10", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken inclusiveC14N = new SecurityPolicyToken(
+			"InclusiveC14N", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken xPath10 = new SecurityPolicyToken("XPath10",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken soapNormalization10 = new SecurityPolicyToken(
+			"SoapNormalization10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken xPathFilter20 = new SecurityPolicyToken(
-            "XPathFilter20", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken strTransform10 = new SecurityPolicyToken(
+			"StrTransform10", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken layout = new SecurityPolicyToken("Layout",
-            SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken xPath10 = new SecurityPolicyToken("XPath10",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken strict = new SecurityPolicyToken("Strict",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken xPathFilter20 = new SecurityPolicyToken(
+			"XPathFilter20", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken lax = new SecurityPolicyToken("Lax",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken layout = new SecurityPolicyToken("Layout",
+			SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken laxTsFirst = new SecurityPolicyToken("LaxTsFirst",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken strict = new SecurityPolicyToken("Strict",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken laxTsLast = new SecurityPolicyToken("LaxTsLast",
-            SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken lax = new SecurityPolicyToken("Lax",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken transportBinding = new SecurityPolicyToken(
-            "TransportBinding", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken laxTsFirst = new SecurityPolicyToken("LaxTsFirst",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken transportToken = new SecurityPolicyToken(
-            "TransportToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken laxTsLast = new SecurityPolicyToken("LaxTsLast",
+			SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    // algorithmSuite and layout see above
-    SecurityPolicyToken includeTimestamp = new SecurityPolicyToken(
-            "IncludeTimestamp", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken transportBinding = new SecurityPolicyToken(
+			"TransportBinding", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken symmetricBinding = new SecurityPolicyToken(
-            "SymmetricBinding", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken transportToken = new SecurityPolicyToken(
+			"TransportToken", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken encryptionToken = new SecurityPolicyToken(
-            "EncryptionToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	// algorithmSuite and layout see above
+	SecurityPolicyToken includeTimestamp = new SecurityPolicyToken(
+			"IncludeTimestamp", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken signatureToken = new SecurityPolicyToken(
-            "SignatureToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken symmetricBinding = new SecurityPolicyToken(
+			"SymmetricBinding", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken protectionToken = new SecurityPolicyToken(
-            "ProtectionToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken encryptionToken = new SecurityPolicyToken(
+			"EncryptionToken", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    // algorithmSuite and layout see above
-    // includeTimestamp already defined for transport binding
-    SecurityPolicyToken encryptBeforeSigning = new SecurityPolicyToken(
-            "EncryptBeforeSigning", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken signatureToken = new SecurityPolicyToken(
+			"SignatureToken", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken encryptSignature = new SecurityPolicyToken(
-            "EncryptSignature", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	SecurityPolicyToken protectionToken = new SecurityPolicyToken(
+			"ProtectionToken", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken protectTokens = new SecurityPolicyToken(
-            "ProtectTokens", SecurityPolicyToken.SIMPLE_TOKEN, true, null);
+	// algorithmSuite and layout see above
+	// includeTimestamp already defined for transport binding
+	SecurityPolicyToken encryptBeforeSigning = new SecurityPolicyToken(
+			"EncryptBeforeSigning", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken onlySignEntireHeadersAndBody = new SecurityPolicyToken(
-            "OnlySignEntireHeadersAndBody", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken encryptSignature = new SecurityPolicyToken(
+			"EncryptSignature", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken asymmetricBinding = new SecurityPolicyToken(
-            "AsymmetricBinding", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken protectTokens = new SecurityPolicyToken(
+			"ProtectTokens", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    SecurityPolicyToken initiatorToken = new SecurityPolicyToken(
-            "InitiatorToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken onlySignEntireHeadersAndBody = new SecurityPolicyToken(
+			"OnlySignEntireHeadersAndBody", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken receipientToken = new SecurityPolicyToken(
-            "ReceipientToken", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken asymmetricBinding = new SecurityPolicyToken(
+			"AsymmetricBinding", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    // all other tokens for asymmetric already defined above
+	SecurityPolicyToken initiatorToken = new SecurityPolicyToken(
+			"InitiatorToken", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken supportingTokens = new SecurityPolicyToken(
-            "SupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken receipientToken = new SecurityPolicyToken(
+			"ReceipientToken", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken signedSupportingTokens = new SecurityPolicyToken(
-            "SignedSupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN, true,
-            null);
+	// all other tokens for asymmetric already defined above
 
-    SecurityPolicyToken endorsingSupportingTokens = new SecurityPolicyToken(
-            "EndorsingSupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN,
-            true, null);
+	SecurityPolicyToken supportingTokens = new SecurityPolicyToken(
+			"SupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken signedEndorsingSupportingTokens = new SecurityPolicyToken(
-            "SignedEndorsingSupportingTokens",
-            SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken signedSupportingTokens = new SecurityPolicyToken(
+			"SignedSupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken wss10 = new SecurityPolicyToken("wss10",
-            SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken endorsingSupportingTokens = new SecurityPolicyToken(
+			"EndorsingSupportingTokens", SecurityPolicyToken.COMPLEX_TOKEN,
+			null);
 
-    SecurityPolicyToken mustSupportRefKeyIdentifier = new SecurityPolicyToken(
-            "MustSupportRefKeyIdentifier", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken signedEndorsingSupportingTokens = new SecurityPolicyToken(
+			"SignedEndorsingSupportingTokens",
+			SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken mustSupportRefIssuerSerial = new SecurityPolicyToken(
-            "MustSupportRefIssuerSerial", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken wss10 = new SecurityPolicyToken("wss10",
+			SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken mustSupportRefExternalUri = new SecurityPolicyToken(
-            "MustSupportRefExternalUri", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken mustSupportRefKeyIdentifier = new SecurityPolicyToken(
+			"MustSupportRefKeyIdentifier", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken mustSupportRefEmbeddedToken = new SecurityPolicyToken(
-            "MustSupportRefEmbeddedToken", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken mustSupportRefIssuerSerial = new SecurityPolicyToken(
+			"MustSupportRefIssuerSerial", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken wss11 = new SecurityPolicyToken("wss11",
-            SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken mustSupportRefExternalUri = new SecurityPolicyToken(
+			"MustSupportRefExternalUri", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    // all from wss10
-    SecurityPolicyToken mustSupportRefKeyThumbprint = new SecurityPolicyToken(
-            "mustSupportRefKeyThumbprint", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken mustSupportRefEmbeddedToken = new SecurityPolicyToken(
+			"MustSupportRefEmbeddedToken", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken mustSupportRefKeyEncryptedKey = new SecurityPolicyToken(
-            "mustSupportRefKeyEncryptedKey", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken wss11 = new SecurityPolicyToken("wss11",
+			SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken requireSignatureConfirmation = new SecurityPolicyToken(
-            "requireSignatureConfirmation", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	// all from wss10
+	SecurityPolicyToken mustSupportRefKeyThumbprint = new SecurityPolicyToken(
+			"mustSupportRefKeyThumbprint", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken trust10 = new SecurityPolicyToken("trust10",
-            SecurityPolicyToken.COMPLEX_TOKEN, true, null);
+	SecurityPolicyToken mustSupportRefKeyEncryptedKey = new SecurityPolicyToken(
+			"mustSupportRefKeyEncryptedKey", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken mustSupportClientChallenge = new SecurityPolicyToken(
-            "mustSupportClientChallenge", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken requireSignatureConfirmation = new SecurityPolicyToken(
+			"requireSignatureConfirmation", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken mustSupportServerChallenge = new SecurityPolicyToken(
-            "mustSupportServerChallenge", SecurityPolicyToken.SIMPLE_TOKEN,
-            true, null);
+	SecurityPolicyToken trust10 = new SecurityPolicyToken("trust10",
+			SecurityPolicyToken.COMPLEX_TOKEN, null);
 
-    SecurityPolicyToken requireClientEntropy = new SecurityPolicyToken(
-            "requireClientEntropy", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken mustSupportClientChallenge = new SecurityPolicyToken(
+			"mustSupportClientChallenge", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken requireServerEntropy = new SecurityPolicyToken(
-            "requireServerEntropy", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken mustSupportServerChallenge = new SecurityPolicyToken(
+			"mustSupportServerChallenge", SecurityPolicyToken.SIMPLE_TOKEN,
+			null);
 
-    SecurityPolicyToken mustSupportIssuedTokens = new SecurityPolicyToken(
-            "mustSupportIssuedTokens", SecurityPolicyToken.SIMPLE_TOKEN, true,
-            null);
+	SecurityPolicyToken requireClientEntropy = new SecurityPolicyToken(
+			"requireClientEntropy", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    String includeNever = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never";
+	SecurityPolicyToken requireServerEntropy = new SecurityPolicyToken(
+			"requireServerEntropy", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    String includeOnce = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once";
+	SecurityPolicyToken mustSupportIssuedTokens = new SecurityPolicyToken(
+			"mustSupportIssuedTokens", SecurityPolicyToken.SIMPLE_TOKEN, null);
 
-    String includeAlways = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always";
+	String includeNever = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Never";
 
-    /**
-     * Intialize the SignedParts complex token.
-     * 
-     * This method creates a copy of the SingedParts token and sets the handler
-     * object to the copy. Then it creates copies of the child tokens that are
-     * allowed for SingedParts. These tokens are Body and Header. These copies
-     * are also initialized with the handler object and then set a schild tokens
-     * of SingedParts.
-     * 
-     * @param handler
-     *            The handler object that must contain the methods
-     *            <code>doSignedParts, doBody, doHeader</code>.
-     * @return the intialized SignedParts token.
-     * @throws NoSuchMethodException
-     */
-    public SecurityPolicyToken initializeSignedParts(Object handler)
-            throws NoSuchMethodException {
-        SecurityPolicyToken spt = signedParts.copy();
-        spt.setProcessTokenMethod(handler);
+	String includeOnce = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Once";
 
-        SecurityPolicyToken tmpSpt = body.copy();
-        tmpSpt.setProcessTokenMethod(handler);
-        spt.setChildToken(tmpSpt);
+	String includeAlways = "http://schemas.xmlsoap.org/ws/2005/07/securitypolicy/IncludeToken/Always";
 
-        tmpSpt = header.copy();
-        tmpSpt.setProcessTokenMethod(handler);
-        spt.setChildToken(tmpSpt);
-        return spt;
-    }
 }

Modified: webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java?rev=367649&r1=367648&r2=367649&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java (original)
+++ webservices/commons/trunk/policy/src/examples/secParser/SecurityPolicyToken.java Tue Jan 10 07:38:28 2006
@@ -1,8 +1,17 @@
 /*
- * Created on 28.12.2005
+ * Copyright 2004,2005 The Apache Software Foundation.
  *
- * To change the template for this generated file go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
+ * Licensed 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 examples.secParser;
 
@@ -13,213 +22,203 @@
 
 public class SecurityPolicyToken {
 
-    /**
-     * The following values describe the type of the security token. A complex
-     * token starts a transaction because it contains nested tokens. A simple
-     * token does not contain nested tokens but stands allone an defines a
-     * simple assertion or property.
-     * 
-     * If Content is set then this token contains additional text content, e.g.
-     * XPath expressions.
-     */
-    public static final int COMPLEX_TOKEN = 1;
-
-    public static final int SIMPLE_TOKEN = 2;
-
-    public static final int WITH_CONTENT = 100;
-
-    private String tokenName;
-
-    private int tokenType = 0;
-
-    private boolean supported = false;
-
-    private String[] attributes = null;
-
-    private Object handler = null;
-
-    private Method processTokenMethod = null;
-
-    private ArrayList childTokens = null;
-
-    /**
-     * Create a SecurityPolicyToken data structure.
-     * 
-     * @param token
-     *            The name of the token, equals to to local name of the XML
-     *            element
-     * @param type
-     *            Type of the token. Either complex or simple. Can have a flag
-     *            if the token containes some data.
-     * @param sup
-     *            If true the processor supports this token and the enforcer can
-     *            work with it,
-     * @param attribs
-     *            The names of allowed attributes on this token
-     * @param h
-     *            The handler object that implements the processing method. The
-     *            name of a processing method is constructed by prepending a
-     *            "do" to the token name
-     * @throws SecurityException
-     * @throws NoSuchMethodException
-     */
-    public SecurityPolicyToken(String token, int type, boolean sup,
-            String[] attribs, Object h) throws SecurityException,
-            NoSuchMethodException {
-        this(token, type, sup, attribs);
-
-        setProcessTokenMethod(h);
-    }
-
-    /**
-     * Create a SecurityPolicyToken data structure.
-     * 
-     * @param token
-     *            The name of the token, equals to to local name of the XML
-     *            element
-     * @param type
-     *            Type of the token. Either complex or simple. Can have a flag
-     *            if the token containes some data.
-     * @param sup
-     *            If true the processor supports this token and the enforcer can
-     *            work with it,
-     * @param attribs
-     *            The names of allowed attributes on this token processing
-     *            method is constructed by prepending a "do" to the token name
-     */
-    public SecurityPolicyToken(String token, int type, boolean sup,
-            String[] attribs) {
-        tokenName = token;
-        tokenType = type;
-        supported = sup;
-        attributes = attribs;
-
-        if (tokenType == COMPLEX_TOKEN) {
-            childTokens = new ArrayList();
-        }
-    }
-
-    /**
-     * @return Returns the attributes.
-     */
-    public String[] getAttributes() {
-        return attributes;
-    }
-
-    /**
-     * Set the method which processes this security token.
-     * 
-     * @param h
-     *            The handler object that implements the processing method. The
-     *            name of a processing method is constructed by prepending a
-     *            "do" to the token name.
-     * 
-     * @throws NoSuchMethodException
-     */
-    public void setProcessTokenMethod(Object h) throws NoSuchMethodException {
-
-        if (h == null) {
-            return;
-        }
-        handler = h;
-        Class handlerCls = h.getClass();
-        Class[] parameters = new Class[] { SecurityProcessorContext.class };
-
-        processTokenMethod = handlerCls.getDeclaredMethod("do" + tokenName,
-                parameters);
-    }
-
-    /**
-     * Invoke the processing method for this token.
-     * 
-     * @param spc
-     *            The SecurityProcessContext handed over to the processing
-     *            method
-     * @return True if the token is processed successfully
-     * @throws IllegalArgumentException
-     * @throws IllegalAccessException
-     * @throws InvocationTargetException
-     */
-    public boolean invokeProcessTokenMethod(SecurityProcessorContext spc)
-            throws IllegalArgumentException, IllegalAccessException,
-            InvocationTargetException {
-
-        if (processTokenMethod == null) {
-            return false;
-        }
-        Object[] parameter = new Object[] { spc };
-        Object ret = processTokenMethod.invoke(handler, parameter);
-        Boolean bool;
-        if (ret instanceof Boolean) {
-            bool = (Boolean) ret;
-            return bool.booleanValue();
-        }
-        return false;
-    }
-
-    /**
-     * @return Returns the supported.
-     */
-    public boolean isSupported() {
-        return supported;
-    }
-
-    /**
-     * @return Returns the tokenName.
-     */
-    public String getTokenName() {
-        return tokenName;
-    }
-
-    /**
-     * Add a Child token to this complex token.
-     * 
-     * @param spt
-     *            The child token to add to this Complex token
-     */
-    public void setChildToken(SecurityPolicyToken spt) {
-        childTokens.add(spt);
-    }
-
-    /**
-     * Gets a named child token,
-     * 
-     * @param sptName
-     *            The token name to check for
-     * @return the SecurityPolicyToken if this token contains the named token as
-     *         child token, null otherwise.
-     */
-    public SecurityPolicyToken getChildToken(String sptName) {
-        Iterator it = childTokens.iterator();
-        while (it.hasNext()) {
-            SecurityPolicyToken tmpSpt = (SecurityPolicyToken) it.next();
-            if (sptName.equals(tmpSpt.getTokenName())) {
-                return tmpSpt;
-            }
-        }
-        return null;
-    }
-
-    /**
-     * Copy this SecurityPolicyToken and return the copy.
-     * 
-     * Produce a copy of this SPT. The imutable fields (token name, token type,
-     * supported, and attributes) are copied by reference. The child tokens are
-     * copied by value thus they can be modified. The handler object and the
-     * associated processing method are not copied and must be intialized.
-     * 
-     * @return A new SecurityPolicyToken
-     */
-    public SecurityPolicyToken copy() {
-        SecurityPolicyToken spt = new SecurityPolicyToken(tokenName, tokenType,
-                supported, attributes);
-        if (childTokens != null) {
-            Iterator it = childTokens.iterator();
-            while (it.hasNext()) {
-                SecurityPolicyToken tmpSpt = (SecurityPolicyToken) it.next();
-                spt.setChildToken(tmpSpt);
-            }
-        }
-        return spt;
-    }
+	/**
+	 * The following values describe the type of the security token. A complex
+	 * token starts a transaction because it contains nested tokens. A simple
+	 * token does not contain nested tokens but stands allone an defines a
+	 * simple assertion or property.
+	 * 
+	 * If Content is set then this token contains additional text content, e.g.
+	 * XPath expressions.
+	 */
+	public static final int COMPLEX_TOKEN = 1;
+
+	public static final int SIMPLE_TOKEN = 2;
+
+	public static final int WITH_CONTENT = 100;
+
+	private String tokenName;
+
+	private int tokenType = 0;
+
+	// private boolean supported = false;
+
+	private String[] attributes = null;
+
+	private Object handler = null;
+
+	private Method processTokenMethod = null;
+
+	private ArrayList childTokens = null;
+
+	/**
+	 * Create a SecurityPolicyToken data structure.
+	 * 
+	 * @param token
+	 *            The name of the token, equals to to local name of the XML
+	 *            element
+	 * @param type
+	 *            Type of the token. Either complex or simple. Can have a flag
+	 *            if the token containes some data.
+	 * @param sup
+	 *            If true the processor supports this token and the enforcer can
+	 *            work with it,
+	 * @param attribs
+	 *            The names of allowed attributes on this token
+	 * @param h
+	 *            The handler object that implements the processing method. The
+	 *            name of a processing method is constructed by prepending a
+	 *            "do" to the token name
+	 * @throws SecurityException
+	 * @throws NoSuchMethodException
+	 */
+	public SecurityPolicyToken(String token, int type, String[] attribs,
+			Object h) throws SecurityException, NoSuchMethodException {
+		this(token, type, attribs);
+
+		setProcessTokenMethod(h);
+	}
+
+	/**
+	 * Create a SecurityPolicyToken data structure.
+	 * 
+	 * @param token
+	 *            The name of the token, equals to to local name of the XML
+	 *            element
+	 * @param type
+	 *            Type of the token. Either complex or simple. Can have a flag
+	 *            if the token containes some data.
+	 * @param sup
+	 *            If true the processor supports this token and the enforcer can
+	 *            work with it,
+	 * @param attribs
+	 *            The names of allowed attributes on this token processing
+	 *            method is constructed by prepending a "do" to the token name
+	 */
+	public SecurityPolicyToken(String token, int type, String[] attribs) {
+		tokenName = token;
+		tokenType = type;
+		attributes = attribs;
+
+		if (tokenType == COMPLEX_TOKEN) {
+			childTokens = new ArrayList();
+		}
+	}
+
+	/**
+	 * @return Returns the attributes.
+	 */
+	public String[] getAttributes() {
+		return attributes;
+	}
+
+	/**
+	 * Set the method which processes this security token.
+	 * 
+	 * @param h
+	 *            The handler object that implements the processing method. The
+	 *            name of a processing method is constructed by prepending a
+	 *            "do" to the token name.
+	 * 
+	 * @throws NoSuchMethodException
+	 */
+	public void setProcessTokenMethod(Object h) throws NoSuchMethodException {
+
+		if (h == null) {
+			return;
+		}
+		handler = h;
+		Class handlerCls = h.getClass();
+		Class[] parameters = new Class[] { SecurityProcessorContext.class };
+
+		processTokenMethod = handlerCls.getDeclaredMethod("do" + tokenName,
+				parameters);
+	}
+
+	/**
+	 * Invoke the processing method for this token.
+	 * 
+	 * @param spc
+	 *            The SecurityProcessContext handed over to the processing
+	 *            method
+	 * @return True if the token is processed successfully
+	 * @throws IllegalArgumentException
+	 * @throws IllegalAccessException
+	 * @throws InvocationTargetException
+	 */
+	public boolean invokeProcessTokenMethod(SecurityProcessorContext spc)
+			throws IllegalArgumentException, IllegalAccessException,
+			InvocationTargetException {
+
+		if (processTokenMethod == null) {
+			return false;
+		}
+		Object[] parameter = new Object[] { spc };
+		Object ret = processTokenMethod.invoke(handler, parameter);
+		Boolean bool;
+		if (ret instanceof Boolean) {
+			bool = (Boolean) ret;
+			return bool.booleanValue();
+		}
+		return false;
+	}
+
+	/**
+	 * @return Returns the tokenName.
+	 */
+	public String getTokenName() {
+		return tokenName;
+	}
+
+	/**
+	 * Add a Child token to this complex token.
+	 * 
+	 * @param spt
+	 *            The child token to add to this Complex token
+	 */
+	public void setChildToken(SecurityPolicyToken spt) {
+		childTokens.add(spt);
+	}
+
+	/**
+	 * Gets a named child token,
+	 * 
+	 * @param sptName
+	 *            The token name to check for
+	 * @return the SecurityPolicyToken if this token contains the named token as
+	 *         child token, null otherwise.
+	 */
+	public SecurityPolicyToken getChildToken(String sptName) {
+		Iterator it = childTokens.iterator();
+		while (it.hasNext()) {
+			SecurityPolicyToken tmpSpt = (SecurityPolicyToken) it.next();
+			if (sptName.equals(tmpSpt.getTokenName())) {
+				return tmpSpt;
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * Copy this SecurityPolicyToken and return the copy.
+	 * 
+	 * Produce a copy of this SPT. The imutable fields (token name, token type,
+	 * supported, and attributes) are copied by reference. The child tokens are
+	 * copied by value thus they can be modified. The handler object and the
+	 * associated processing method are not copied and must be intialized.
+	 * 
+	 * @return A new SecurityPolicyToken
+	 */
+	public SecurityPolicyToken copy() {
+		SecurityPolicyToken spt = new SecurityPolicyToken(tokenName, tokenType,
+				attributes);
+		if (childTokens != null) {
+			Iterator it = childTokens.iterator();
+			while (it.hasNext()) {
+				SecurityPolicyToken tmpSpt = (SecurityPolicyToken) it.next();
+				spt.setChildToken(tmpSpt);
+			}
+		}
+		return spt;
+	}
 }

Modified: webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java?rev=367649&r1=367648&r2=367649&view=diff
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java (original)
+++ webservices/commons/trunk/policy/src/examples/secParser/SecurityProcessorContext.java Tue Jan 10 07:38:28 2006
@@ -1,15 +1,131 @@
 /*
- * Created on 28.12.2005
+ * Copyright 2004,2005 The Apache Software Foundation.
  *
- * To change the template for this generated file go to
- * Window&gt;Preferences&gt;Java&gt;Code Generation&gt;Code and Comments
+ * Licensed 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 examples.secParser;
 
+import java.util.ArrayList;
+
+import org.apache.ws.policy.PrimitiveAssertion;
+
 public class SecurityProcessorContext {
-    
-    public SecurityProcessorContext() {
-        
-    }
+	
+	public static final int NONE = 0;
+	public static final int START = 1;
+	public static final int COMMIT = 2;
+	public static final int ABORT = 3;
+
+	public static final String[] ACTION_NAMES = new String[]{"NONE", "START", "COMMIT", "ABORT"};
+	
+	private ArrayList tokenStack = new ArrayList();
+
+	private int tokenStackPointer = 0;
+	
+	private PrimitiveAssertion assertion = null;
+	
+	private int action = NONE;
+
+	public SecurityProcessorContext() {
+	}
+
+	/**
+	 * Gets the action to perform in the processing method.
+	 * 
+	 * @return The action
+	 */
+	public int getAction() {
+		return action;
+	}
+
+	/**
+	 * Sets to action to perform in the processing method.
+	 * 
+	 * @param action The actio to set. Either NONE, START, COMMIT, or ABORT
+	 */
+	public void setAction(int action) {
+		this.action = action;
+	}
+	/**
+	 * Get the current assertion that is being processed.
+	 * 
+	 * This is always a PrimitiveAssertion.
+	 * 
+	 * @return The current assertion.
+	 */
+	public PrimitiveAssertion getAssertion() {
+		return assertion;
+	}
+
+	/**
+	 * Set the current assertion that is being processed.
+	 * 
+	 * This is always a primitive assertion.
+	 * 
+	 * @param assertion The assertion to set
+	 */
+	public void setAssertion(PrimitiveAssertion assertion) {
+		this.assertion = assertion;
+	}
+
+	/**
+	 * Push a SecurityPolicyToken onto the token stack.
+	 * 
+	 * The pushed token becomes the current token. The current token is the
+	 * starting point for further parsing.
+	 * 
+	 * @param spt
+	 *            The SecurityPolicyToken to push on the stack
+	 */
+	public void pushSecurityToken(SecurityPolicyToken spt) {
+		tokenStack.add(tokenStackPointer, spt);
+		tokenStackPointer++;
+	}
+
+	/**
+	 * Pop a SecurityPolicyToken from the token stack.
+	 * 
+	 * If the stack contains at least one token the method pops the topmost
+	 * token from the stack and returns it. If the stack is empty the method
+	 * returns a <code>null</code>.
+	 * 
+	 * @return The topmost SecurityPolicyToken or null if the stack is empty.
+	 */
+	public SecurityPolicyToken popSecurityToken() {
+		if (tokenStackPointer > 0) {
+			tokenStackPointer--;
+			return (SecurityPolicyToken) tokenStack.get(tokenStackPointer);
+		} else {
+			return null;
+		}
+	}
+
+	/**
+	 * Reads and returns the current SecurityPolicyToken.
+	 * 
+	 * If the stack contains at least one token the method reads the topmost
+	 * token from the stack and returns it. If the stack is empty the method
+	 * returns a <code>null</code>. The metho does not remove the token from
+	 * the stack.
+	 * 
+	 * @return The topmost SecurityPolicyToken or null if the stack is empty.
+	 */
+	public SecurityPolicyToken readCurrentSecurityToken() {
+		if (tokenStackPointer > 0) {
+			return (SecurityPolicyToken) tokenStack.get(tokenStackPointer - 1);
+		} else {
+			return null;
+		}
+	}
 
 }

Added: webservices/commons/trunk/policy/src/examples/secParser/SignedPartsElementsProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/SignedPartsElementsProcessor.java?rev=367649&view=auto
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/SignedPartsElementsProcessor.java (added)
+++ webservices/commons/trunk/policy/src/examples/secParser/SignedPartsElementsProcessor.java Tue Jan 10 07:38:28 2006
@@ -0,0 +1,144 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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 examples.secParser;
+
+import org.apache.ws.policy.PrimitiveAssertion;
+
+/**
+ * @author Werner Dittmann (werner@apache.org)
+ */
+
+public class SignedPartsElementsProcessor {
+	
+	private boolean initializedSignedParts = false;
+	private boolean initializedSignedElements = false;
+	private SecurityPolicy secPol = new SecurityPolicy();
+
+	public SignedPartsElementsProcessor() {	
+	}
+	
+	/**
+	 * Intialize the SignedParts complex token.
+	 * 
+	 * This method creates copies of the child tokens that are
+	 * allowed for SignedParts. These tokens are Body and Header. These copies
+	 * are initialized with handler object and then set as child tokens
+	 * of SignedParts.
+	 * <p/>
+	 * The handler object must define the methods <code>doSignedParts, doBody, doHeader</code>.
+	 * 
+	 * @param spt
+	 *            The token that will hold the child tokens.
+	 * @throws NoSuchMethodException
+	 */	
+	private void initializeSignedParts(SecurityPolicyToken spt) throws NoSuchMethodException {
+		SecurityPolicyToken tmpSpt = secPol.body.copy();
+		tmpSpt.setProcessTokenMethod(this);
+		spt.setChildToken(tmpSpt);
+
+		tmpSpt = secPol.header.copy();
+		tmpSpt.setProcessTokenMethod(this);
+		spt.setChildToken(tmpSpt);
+		
+	}
+	
+	/**
+	 * Intialize the SignedElements complex token.
+	 * 
+	 * This method creates a copy of the child token that is
+	 * allowed for SignedElements. The token is XPath. This copy
+	 * is initialized with a handler object and then set as child token
+	 * of SignedElements.
+	 * <p/>
+	 * The handler object must define the method <code>doXPath</code>.
+	 * 
+	 * @param spt
+	 *            The token that will hold the child tokens.
+	 * @throws NoSuchMethodException
+	 */
+	private void initializeSignedElements(SecurityPolicyToken spt) throws NoSuchMethodException {
+		SecurityPolicyToken tmpSpt = secPol.xPath.copy();
+		tmpSpt.setProcessTokenMethod(this);
+		spt.setChildToken(tmpSpt);
+	}
+
+	public Object doSignedParts(SecurityProcessorContext spc) {
+		System.out.println("Processing SignedParts token (SPE): "
+				+ SecurityProcessorContext.ACTION_NAMES[spc.getAction()]);
+		
+		SecurityPolicyToken spt = spc.readCurrentSecurityToken();
+		if (!initializedSignedParts) {
+			try {
+				initializeSignedParts(spt);
+				initializedSignedParts = true;
+			} catch (NoSuchMethodException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return new Boolean(false);
+			}
+		}
+		System.out.println(spt.getTokenName());
+		PrimitiveAssertion pa = spc.getAssertion();
+		String text = pa.getStrValue();
+		if (text != null) {
+			text = text.trim();
+			System.out.println("Value: '" + text.toString() + "'");
+		}
+		return new Boolean(true);
+	}
+
+	public Object doSignedElements(SecurityProcessorContext spc) {
+		System.out.println("Processing SignedElements token (SPE): "
+				+ SecurityProcessorContext.ACTION_NAMES[spc.getAction()]);
+		
+		SecurityPolicyToken spt = spc.readCurrentSecurityToken();
+		if (!initializedSignedElements) {
+			try {
+				initializeSignedElements(spt);
+				initializedSignedElements = true;
+			} catch (NoSuchMethodException e) {
+				// TODO Auto-generated catch block
+				e.printStackTrace();
+				return new Boolean(false);
+			}
+		}
+		System.out.println(spt.getTokenName());
+		PrimitiveAssertion pa = spc.getAssertion();
+		String text = pa.getStrValue();
+		if (text != null) {
+			text = text.trim();
+			System.out.println("Value: '" + text.toString() + "'");
+		}
+		return new Boolean(true);
+	}
+
+	public Object doBody(SecurityProcessorContext spc) {
+		System.out.println("Processing Body token (SPE)");
+		return new Boolean(true);
+	}
+
+	public Object doHeader(SecurityProcessorContext spc) {
+		System.out.println("Processing Header token (SPE)");
+		return new Boolean(true);
+	}
+
+	public Object doXPath(SecurityProcessorContext spc) {
+		System.out.println("Processing XPath token (SPE)");
+		return new Boolean(true);
+	}
+
+}

Added: webservices/commons/trunk/policy/src/examples/secParser/UsernameTokenProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/commons/trunk/policy/src/examples/secParser/UsernameTokenProcessor.java?rev=367649&view=auto
==============================================================================
--- webservices/commons/trunk/policy/src/examples/secParser/UsernameTokenProcessor.java (added)
+++ webservices/commons/trunk/policy/src/examples/secParser/UsernameTokenProcessor.java Tue Jan 10 07:38:28 2006
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2004,2005 The Apache Software Foundation.
+ *
+ * Licensed 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 examples.secParser;
+
+/**
+ * @author Werner Dittmann (werner@apache.org)
+ */
+public class UsernameTokenProcessor {
+
+	private boolean initializedUsernameToken = false;
+
+	private SecurityPolicy secPol = new SecurityPolicy();
+
+	/**
+	 * Intialize the UsernameToken complex token.
+	 * 
+	 * This method creates copies of the child tokens that are allowed for
+	 * UsernameToken. These tokens are WssUsernameToken10 and
+	 * WssUsernameToken11. These copies are also initialized with the handler
+	 * object and then set as child tokens of UsernameToken.
+	 * 
+	 * <p/> The handler object must define the methods
+	 * <code>doWssUsernameToken10, doWssUsernameToken11</code>.
+	 * 
+	 * @param spt
+	 *            The token that will hold the child tokens.
+	 * @throws NoSuchMethodException
+	 */
+	public void initializeUsernameToken(SecurityPolicyToken spt)
+			throws NoSuchMethodException {
+		// SecurityPolicyToken spt = secPol.usernameToken.copy();
+		// spt.setProcessTokenMethod(handler);
+
+		SecurityPolicyToken tmpSpt = secPol.wssUsernameToken10.copy();
+		tmpSpt.setProcessTokenMethod(this);
+		spt.setChildToken(tmpSpt);
+
+		tmpSpt = secPol.wssUsernameToken11.copy();
+		tmpSpt.setProcessTokenMethod(this);
+		spt.setChildToken(tmpSpt);
+	}
+
+}