Author: prabath
Date: Tue Feb 23 03:31:14 2010
New Revision: 915159

URL: http://svn.apache.org/viewvc?rev=915159&view=rev
Log:
Fixing https://issues.apache.org/jira/browse/RAMPART-286

Modified:
    
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
    
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
    
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/SupportingPolicyData.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Binding.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SupportingToken.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/AsymmetricBindingBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedElementsBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedPartsBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedElementsBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedPartsBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SupportingTokensBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/UsernameTokenBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/X509TokenBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AsymmetricBindingBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedElementsBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedPartsBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedElementsBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedPartsBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SupportingTokensBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/UsernameTokenBuilder.java
    
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/PolicyBasedResultsValidator.java
 Tue Feb 23 03:31:14 2010
@@ -64,7 +64,7 @@
         if(rpd != null &&  rpd.isIncludeTimestamp()) {
             tsResult = 
                 WSSecurityUtil.fetchActionResult(results, WSConstants.TS);
-            if(tsResult == null) {
+            if(tsResult == null && !rpd.isIncludeTimestampOptional()) {
                 throw new RampartException("timestampMissing");
             }
             
@@ -83,17 +83,20 @@
         Vector signatureParts = RampartUtil.getSignedParts(rmd);
 
         //Timestamp is not included in sig parts
-        if(rpd != null && rpd.isIncludeTimestamp() && 
!rpd.isTransportBinding()) {
-            signatureParts.add(new WSEncryptionPart("timestamp"));
-        }
+               if (tsResult != null || !rpd.isIncludeTimestampOptional()) {
+                       if (rpd != null && rpd.isIncludeTimestamp()
+                                       && !rpd.isTransportBinding()) {
+                               signatureParts.add(new 
WSEncryptionPart("timestamp"));
+                       }
+               }
         
         if(!rmd.isInitiator()) {
                         
             //Just an indicator for EndorsingSupportingToken signature
             SupportingToken endSupportingToken = 
rpd.getEndorsingSupportingTokens();
-            if(endSupportingToken !=  null) {
+            if(endSupportingToken !=  null && 
!endSupportingToken.isOptional()) {
                 SignedEncryptedParts endSignedParts = 
endSupportingToken.getSignedParts();
-                if((endSignedParts != null && 
+                if((endSignedParts != null && !endSignedParts.isOptional() &&
                         (endSignedParts.isBody() || 
                                 endSignedParts.getHeaders().size() > 0)) ||
                                 rpd.isIncludeTimestamp()) {
@@ -103,9 +106,9 @@
             }
             //Just an indicator for SignedEndorsingSupportingToken signature
             SupportingToken sgndEndSupportingToken = 
rpd.getSignedEndorsingSupportingTokens();
-            if(sgndEndSupportingToken != null) {
+            if(sgndEndSupportingToken != null && 
!sgndEndSupportingToken.isOptional()) {
                 SignedEncryptedParts sgndEndSignedParts = 
sgndEndSupportingToken.getSignedParts();
-                if((sgndEndSignedParts != null && 
+                if((sgndEndSignedParts != null && 
!sgndEndSignedParts.isOptional() &&
                         (sgndEndSignedParts.isBody() || 
                                 sgndEndSignedParts.getHeaders().size() > 0)) 
|| 
                                 rpd.isIncludeTimestamp()) {
@@ -117,7 +120,7 @@
             Vector supportingToks = rpd.getSupportingTokensList();
             for (int i = 0; i < supportingToks.size(); i++) {
                 SupportingToken supportingToken = (SupportingToken) 
supportingToks.get(i);
-                if (supportingToken != null) {
+                if (supportingToken != null && !supportingToken.isOptional()) {
                     SupportingPolicyData policyData = new 
SupportingPolicyData();
                     policyData.build(supportingToken);
                     
encryptedParts.addAll(RampartUtil.getSupportingEncryptedParts(rmd, policyData));

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -277,6 +277,7 @@
     private static void binding(Binding binding, RampartPolicyData rpd) {
         rpd.setLayout(binding.getLayout().getValue());
         rpd.setIncludeTimestamp(binding.isIncludeTimestamp());
+        rpd.setIncludeTimestampOptional(binding.isIncludeTimestampOptional());
         rpd.setAlgorithmSuite(binding.getAlgorithmSuite());
     }
 

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
 Tue Feb 23 03:31:14 2010
@@ -49,6 +49,8 @@
     private String layout;
 
     private boolean includeTimestamp;
+    
+    private boolean includeTimestampOptional;
 
     private boolean entireHeadersAndBodySignatures;
 
@@ -218,9 +220,17 @@
      */
     public void setIncludeTimestamp(boolean includeTimestamp) {
         this.includeTimestamp = includeTimestamp;
-    }
+    } 
+    
+    public boolean isIncludeTimestampOptional() {
+               return includeTimestampOptional;
+       }
 
-    /**
+       public void setIncludeTimestampOptional(boolean 
includeTimestampOptional) {
+               this.includeTimestampOptional = includeTimestampOptional;
+       }
+
+       /**
      * @return Returns the layout.
      */
     public String getLayout() {

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/SupportingPolicyData.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/SupportingPolicyData.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/SupportingPolicyData.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/policy/SupportingPolicyData.java
 Tue Feb 23 03:31:14 2010
@@ -9,7 +9,7 @@
 
        public void build(SupportingToken token) {
 
-               if (token.getSignedParts() != null) {
+               if (token.getSignedParts() != null && 
!token.getSignedParts().isOptional()) {
                        Iterator it = 
token.getSignedParts().getHeaders().iterator();
                        this.setSignBody(token.getSignedParts().isBody());
                        while (it.hasNext()) {
@@ -18,7 +18,7 @@
                        }
                }
 
-               if (token.getEncryptedParts() != null) {
+               if (token.getEncryptedParts() != null && 
!token.getEncryptedParts().isOptional()) {
                        Iterator it = 
token.getEncryptedParts().getHeaders().iterator();
                        this.setEncryptBody(token.getEncryptedParts().isBody());
                        while (it.hasNext()) {
@@ -28,7 +28,7 @@
                        }
                }
 
-               if (token.getSignedElements() != null) {
+               if (token.getSignedElements() != null && 
!token.getSignedElements().isOptional()) {
                        Iterator it = 
token.getSignedElements().getXPathExpressions()
                                        .iterator();
                        while (it.hasNext()) {
@@ -38,7 +38,7 @@
                                        .getDeclaredNamespaces());
                }
 
-               if (token.getEncryptedElements() != null) {
+               if (token.getEncryptedElements() != null && 
!token.getEncryptedElements().isOptional()) {
                        Iterator it = 
token.getEncryptedElements().getXPathExpressions()
                                        .iterator();
                        while (it.hasNext()) {

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Binding.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Binding.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Binding.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/Binding.java
 Tue Feb 23 03:31:14 2010
@@ -16,10 +16,15 @@
 
 package org.apache.ws.secpolicy.model;
 
+/**
+ * @author prabath
+ *
+ */
 public abstract class Binding extends AbstractSecurityAssertion implements 
AlgorithmWrapper {
 
     private AlgorithmSuite algorithmSuite;
     private boolean includeTimestamp;
+    private boolean includeTimestampOptional;
     private Layout layout;
     private SupportingToken signedSupportingToken;
     private SupportingToken signedEndorsingSupportingTokens;
@@ -55,9 +60,17 @@
      */
     public void setIncludeTimestamp(boolean includeTimestamp) {
         this.includeTimestamp = includeTimestamp;
-    }
+    }     
     
-    /**
+    public boolean isIncludeTimestampOptional() {
+               return includeTimestampOptional;
+       }
+
+       public void setIncludeTimestampOptional(boolean 
includeTimestampOptional) {
+               this.includeTimestampOptional = includeTimestampOptional;
+       }
+
+       /**
      * @return Returns the layout.
      */
     public Layout getLayout() {

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SupportingToken.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SupportingToken.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SupportingToken.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SupportingToken.java
 Tue Feb 23 03:31:14 2010
@@ -52,6 +52,14 @@
     private SignedEncryptedParts signedParts;
 
     private SignedEncryptedParts encryptedParts;
+    
+    private boolean signedElementsOptional;
+
+    private boolean encryptedElementsOptional;
+
+    private boolean signedPartsOptional;
+
+    private boolean encryptedPartsOptional;
 
     public SupportingToken(int type, int version ) {
         this.type = type;
@@ -171,8 +179,40 @@
     public void setToken(Token tok) {
         this.addToken(tok);
     }
+    
+    public boolean isSignedElementsOptional() {
+               return signedElementsOptional;
+       }
+
+       public void setSignedElementsOptional(boolean signedElementsOptional) {
+               this.signedElementsOptional = signedElementsOptional;
+       }
+
+       public boolean isEncryptedElementsOptional() {
+               return encryptedElementsOptional;
+       }
+
+       public void setEncryptedElementsOptional(boolean 
encryptedElementsOptional) {
+               this.encryptedElementsOptional = encryptedElementsOptional;
+       }
+
+       public boolean isSignedPartsOptional() {
+               return signedPartsOptional;
+       }
+
+       public void setSignedPartsOptional(boolean signedPartsOptional) {
+               this.signedPartsOptional = signedPartsOptional;
+       }
+
+       public boolean isEncryptedPartsOptional() {
+               return encryptedPartsOptional;
+       }
+
+       public void setEncryptedPartsOptional(boolean encryptedPartsOptional) {
+               this.encryptedPartsOptional = encryptedPartsOptional;
+       }
 
-    public QName getName() {
+       public QName getName() {
         //TODO Should we refactor this class ?? with a SuppotingTokenBase and 
sub classes 
         switch (type) {
         case SPConstants.SUPPORTING_TOKEN_SUPPORTING:

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/AsymmetricBindingBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/AsymmetricBindingBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/AsymmetricBindingBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/AsymmetricBindingBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -78,6 +78,7 @@
                 
             } else if (SP11Constants.INCLUDE_TIMESTAMP.equals(name)) {
                 asymmetricBinding.setIncludeTimestamp(true);
+                
asymmetricBinding.setIncludeTimestampOptional(assertion.isOptional());
 
             } else if 
(SPConstants.ENCRYPT_BEFORE_SIGNING.equals(name.getLocalPart())) {
                 
asymmetricBinding.setProtectionOrder(SPConstants.ENCRYPT_BEFORE_SIGNING);

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedElementsBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedElementsBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedElementsBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedElementsBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMNamespace;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.builders.AssertionBuilder;
 import org.apache.ws.secpolicy.SP11Constants;
 import org.apache.ws.secpolicy.SPConstants;
@@ -39,6 +40,12 @@
             
signedEncryptedElements.setXPathVersion(attribute.getAttributeValue());
         }
         
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       signedEncryptedElements.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
+        
         for (Iterator iterator = element.getChildElements(); 
iterator.hasNext();) {
             processElement((OMElement) iterator.next(), 
signedEncryptedElements);
         }

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedPartsBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedPartsBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedPartsBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/EncryptedPartsBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.builders.AssertionBuilder;
 import org.apache.ws.secpolicy.SP11Constants;
 import org.apache.ws.secpolicy.SPConstants;
@@ -47,6 +48,13 @@
                        // then we need to encrypt the whole body (refer to 
http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.html#_Toc161826515).
                        signedEncryptedParts.setBody(true);
                }
+               
+                OMAttribute isOptional = element
+                               .getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       signedEncryptedParts.setOptional((new Boolean(isOptional
+                                       .getAttributeValue()).booleanValue()));
+               }
         
         return signedEncryptedParts;
     }

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedElementsBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedElementsBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedElementsBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedElementsBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMNamespace;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.builders.AssertionBuilder;
 import org.apache.ws.secpolicy.SP11Constants;
 import org.apache.ws.secpolicy.SPConstants;
@@ -40,6 +41,12 @@
             
signedEncryptedElements.setXPathVersion(attrXPathVersion.getAttributeValue());
         }
         
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       signedEncryptedElements.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
+        
         for (Iterator iterator = element.getChildElements(); 
iterator.hasNext();) {
             processElement((OMElement) iterator.next(), 
signedEncryptedElements);            
         }

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedPartsBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedPartsBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedPartsBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SignedPartsBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -23,6 +23,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.builders.AssertionBuilder;
 import org.apache.ws.secpolicy.SP11Constants;
 import org.apache.ws.secpolicy.SPConstants;
@@ -33,7 +34,11 @@
         
     public Assertion build(OMElement element, AssertionBuilderFactory factory) 
throws IllegalArgumentException {
         SignedEncryptedParts signedEncryptedParts = new 
SignedEncryptedParts(true, SPConstants.SP_V11);
-        
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       signedEncryptedParts.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
         for (Iterator iterator = element.getChildElements(); 
iterator.hasNext();) {
             processElement((OMElement) iterator.next(), signedEncryptedParts);
         }

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SupportingTokensBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SupportingTokensBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SupportingTokensBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/SupportingTokensBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -20,9 +20,11 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.neethi.builders.AssertionBuilder;
@@ -50,7 +52,13 @@
         } else if 
(SP11Constants.SIGNED_ENDORSING_SUPPORTING_TOKENS.equals(name)) {
             supportingToken = new 
SupportingToken(SPConstants.SUPPORTING_TOKEN_SIGNED_ENDORSING, 
SPConstants.SP_V11);
         }
-
+        
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       supportingToken.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
+   
         Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
         policy = (Policy) policy.normalize(false);
 
@@ -85,18 +93,22 @@
             } else if (SP11Constants.SIGNED_PARTS.equals(qname)) {
                 supportingToken
                         .setSignedParts((SignedEncryptedParts) primitive);
+                supportingToken.setSignedPartsOptional(primitive.isOptional());
 
             } else if (SP11Constants.SIGNED_ELEMENTS.equals(qname)) {
                 supportingToken
                         .setSignedElements((SignedEncryptedElements) 
primitive);
+                
supportingToken.setSignedElementsOptional(primitive.isOptional());
 
             } else if (SP11Constants.ENCRYPTED_PARTS.equals(qname)) {
                 supportingToken
                         .setEncryptedParts((SignedEncryptedParts) primitive);
+                
supportingToken.setEncryptedPartsOptional(primitive.isOptional());
 
             } else if (SP11Constants.ENCRYPTED_ELEMENTS.equals(qname)) {
                 supportingToken
                         .setEncryptedElements((SignedEncryptedElements) 
primitive);
+                
supportingToken.setEncryptedElementsOptional(primitive.isOptional());
 
             } else if (primitive instanceof Token) {
                 supportingToken.addToken((Token) primitive);

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/UsernameTokenBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/UsernameTokenBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/UsernameTokenBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/UsernameTokenBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.neethi.builders.AssertionBuilder;
@@ -44,6 +45,12 @@
             usernameToken.setInclusion(inclusion);
         }
         
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       usernameToken.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               } 
+        
         OMElement policyElement = element.getFirstElement();
         
         if (policyElement != null && 
!policyElement.getQName().equals(org.apache.neethi.Constants.Q_ELEM_POLICY)) {

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/X509TokenBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/X509TokenBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/X509TokenBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy11/builders/X509TokenBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.neethi.builders.AssertionBuilder;
@@ -59,6 +60,13 @@
             int inclusion = 
SP11Constants.getInclusionFromAttributeValue(includeAttr.getAttributeValue());
             x509Token.setInclusion(inclusion);
         }
+        
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       x509Token.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
+   
 
         if (policyElement != null) {
             

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AsymmetricBindingBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AsymmetricBindingBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AsymmetricBindingBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/AsymmetricBindingBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -78,6 +78,7 @@
                 
             } else if (SP12Constants.INCLUDE_TIMESTAMP.equals(name)) {
                 asymmetricBinding.setIncludeTimestamp(true);
+                
asymmetricBinding.setIncludeTimestampOptional(assertion.isOptional());
 
             } else if (SP12Constants.ENCRYPT_BEFORE_SIGNING.equals(name)) {
                 
asymmetricBinding.setProtectionOrder(SPConstants.ENCRYPT_BEFORE_SIGNING);

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedElementsBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedElementsBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedElementsBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedElementsBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMNamespace;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.builders.AssertionBuilder;
 import org.apache.ws.secpolicy.SPConstants;
 import org.apache.ws.secpolicy.SP12Constants;
@@ -43,6 +44,13 @@
             processElement((OMElement) iterator.next(), 
signedEncryptedElements);
         }
         
+       OMAttribute isOptional = element
+                               .getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       signedEncryptedElements.setOptional((new 
Boolean(isOptional
+                                       .getAttributeValue()).booleanValue()));
+               }
+        
         return signedEncryptedElements;
     }
     

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedPartsBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedPartsBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedPartsBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/EncryptedPartsBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.builders.AssertionBuilder;
 import org.apache.ws.secpolicy.SPConstants;
 import org.apache.ws.secpolicy.SP12Constants;
@@ -47,6 +48,13 @@
                        // then we need to encrypt the whole body (refer to 
http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702/ws-securitypolicy-1.2-spec-os.html#_Toc161826515).
                        signedEncryptedParts.setBody(true);
                }
+               
+               OMAttribute isOptional = element
+                               .getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       signedEncryptedParts.setOptional((new Boolean(isOptional
+                                       .getAttributeValue()).booleanValue()));
+               }
         
         return signedEncryptedParts;
     }

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedElementsBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedElementsBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedElementsBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedElementsBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMNamespace;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.builders.AssertionBuilder;
 import org.apache.ws.secpolicy.SPConstants;
 import org.apache.ws.secpolicy.SP12Constants;
@@ -41,6 +42,12 @@
             
signedEncryptedElements.setXPathVersion(attrXPathVersion.getAttributeValue());
         }
         
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       signedEncryptedElements.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
+        
         for (Iterator iterator = element.getChildElements(); 
iterator.hasNext();) {
             processElement((OMElement) iterator.next(), 
signedEncryptedElements);            
         }

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedPartsBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedPartsBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedPartsBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SignedPartsBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -23,6 +23,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.builders.AssertionBuilder;
 import org.apache.ws.secpolicy.SPConstants;
 import org.apache.ws.secpolicy.SP12Constants;
@@ -38,6 +39,12 @@
             processElement((OMElement) iterator.next(), signedEncryptedParts);
         }
         
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       signedEncryptedParts.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
+        
         return signedEncryptedParts;
     }
        

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SupportingTokensBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SupportingTokensBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SupportingTokensBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/SupportingTokensBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -20,9 +20,11 @@
 
 import javax.xml.namespace.QName;
 
+import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.neethi.builders.AssertionBuilder;
@@ -66,6 +68,12 @@
             supportingToken = new SupportingToken(
                     SPConstants.SUPPORTING_TOKEN_SIGNED_ENDORSING_ENCRYPTED, 
SPConstants.SP_V12);             
         }
+        
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       supportingToken.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
 
         Policy policy = PolicyEngine.getPolicy(element.getFirstElement());
         policy = (Policy) policy.normalize(false);

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/UsernameTokenBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/UsernameTokenBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/UsernameTokenBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/UsernameTokenBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.neethi.builders.AssertionBuilder;
@@ -44,6 +45,12 @@
             usernameToken.setInclusion(inclusion);
         }
         
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       usernameToken.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
+        
         OMElement policyElement = element.getFirstElement();
         
         if (policyElement != null && 
policyElement.getQName().equals(org.apache.neethi.Constants.Q_ELEM_POLICY)) {

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java?rev=915159&r1=915158&r2=915159&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy12/builders/X509TokenBuilder.java
 Tue Feb 23 03:31:14 2010
@@ -24,6 +24,7 @@
 import org.apache.axiom.om.OMElement;
 import org.apache.neethi.Assertion;
 import org.apache.neethi.AssertionBuilderFactory;
+import org.apache.neethi.Constants;
 import org.apache.neethi.Policy;
 import org.apache.neethi.PolicyEngine;
 import org.apache.neethi.builders.AssertionBuilder;
@@ -58,6 +59,12 @@
             int inclusion = 
SP12Constants.getInclusionFromAttributeValue(includeAttr.getAttributeValue());
             x509Token.setInclusion(inclusion);
         }
+        
+        OMAttribute isOptional = 
element.getAttribute(Constants.Q_ELEM_OPTIONAL_ATTR);
+               if (isOptional != null) {
+                       x509Token.setOptional((new 
Boolean(isOptional.getAttributeValue())
+                                       .booleanValue()));
+               }
 
         if (policyElement != null) {
             


Reply via email to