Author: prabath
Date: Tue Feb 23 08:52:51 2010
New Revision: 915245

URL: http://svn.apache.org/viewvc?rev=915245&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/util/RampartUtil.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=915245&r1=915244&r2=915245&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 08:52:51 2010
@@ -453,7 +453,7 @@
 
         
         //Check for encrypted body
-        if(rpd.isEncryptBody()) {
+        if(rpd.isEncryptBody()&& !rpd.isEncryptBodyOptional()) {
             
             if( !isRefIdPresent(encrRefs, data.getBodyEncrDataId())){
                 throw new RampartException("encryptedPartMissing", 
@@ -579,7 +579,7 @@
                     body = WSSecurityUtil.findBodyElement(rmd.getDocument(), 
new SOAP12Constants());
                 }
                 
-                if (!actuallySigned.contains(body)) {
+                if (!actuallySigned.contains(body) && 
!rmd.getPolicyData().isSignBodyOptional()) {
                     // soap body is not signed
                     throw new RampartException("bodyNotSigned");
                 }

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=915245&r1=915244&r2=915245&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 08:52:51 2010
@@ -233,6 +233,8 @@
         if (sep.isSignedParts()) {
             rpd.setSignBody(sep.isBody());
             rpd.setSignAttachments(sep.isAttachments());
+               rpd.setSignBodyOptional(sep.isOptional());
+               rpd.setSignAttachmentsOptional(sep.isOptional());
             while (it.hasNext()) {
                 Header header = (Header) it.next();
                 rpd.addSignedPart(header.getNamespace(), header.getName());
@@ -240,6 +242,8 @@
         } else {
             rpd.setEncryptBody(sep.isBody());
             rpd.setEncryptAttachments(sep.isAttachments());
+            rpd.setEncryptBodyOptional(sep.isOptional());
+               rpd.setEncryptAttachmentsOptional(sep.isOptional());
             while (it.hasNext()) {
                 Header header = (Header) it.next();
                 rpd.setEncryptedParts(header.getNamespace(), 
header.getName(),"Header");

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=915245&r1=915244&r2=915245&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 08:52:51 2010
@@ -98,6 +98,14 @@
     private boolean signAttachments;
     
     private boolean encryptAttachments;
+    
+    private boolean signBodyOptional;
+
+    private boolean encryptBodyOptional;
+    
+    private boolean signAttachmentsOptional;
+    
+    private boolean encryptAttachmentsOptional;
 
     private Vector signedParts = new Vector();
 
@@ -160,9 +168,41 @@
 
     public void addSupportingPolicyData(SupportingPolicyData 
supportingPolicyData) {
         this.supportingPolicyData.add(supportingPolicyData);
-    }
+    }       
     
-    /**
+    public boolean isSignBodyOptional() {
+               return signBodyOptional;
+       }
+
+       public void setSignBodyOptional(boolean signBodyOptional) {
+               this.signBodyOptional = signBodyOptional;
+       }
+
+       public boolean isEncryptBodyOptional() {
+               return encryptBodyOptional;
+       }
+
+       public void setEncryptBodyOptional(boolean encryptBodyOptional) {
+               this.encryptBodyOptional = encryptBodyOptional;
+       }
+
+       public boolean isSignAttachmentsOptional() {
+               return signAttachmentsOptional;
+       }
+
+       public void setSignAttachmentsOptional(boolean signAttachmentsOptional) 
{
+               this.signAttachmentsOptional = signAttachmentsOptional;
+       }
+
+       public boolean isEncryptAttachmentsOptional() {
+               return encryptAttachmentsOptional;
+       }
+
+       public void setEncryptAttachmentsOptional(boolean 
encryptAttachmentsOptional) {
+               this.encryptAttachmentsOptional = encryptAttachmentsOptional;
+       }
+
+       /**
      * @return Returns the symmetricBinding.
      */
     public boolean isSymmetricBinding() {

Modified: 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=915245&r1=915244&r2=915245&view=diff
==============================================================================
--- 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
 (original)
+++ 
axis/axis2/java/rampart/trunk/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
 Tue Feb 23 08:52:51 2010
@@ -868,30 +868,39 @@
     }
     
     public static Vector getEncryptedParts(RampartMessageData rmd) {
-        RampartPolicyData rpd =  rmd.getPolicyData();
-        SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
-        Vector encryptedPartsElements  = getPartsAndElements(false, envelope, 
rpd.isEncryptBody(), rpd.getEncryptedParts(), 
rpd.getEncryptedElements(),rpd.getDeclaredNamespaces());
-        return getContentEncryptedElements(encryptedPartsElements, envelope, 
rpd.getContentEncryptedElements(), rpd.getDeclaredNamespaces());
-    }
-    
-    public static Vector getSignedParts(RampartMessageData rmd) {
-        RampartPolicyData rpd =  rmd.getPolicyData();
-        SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
-        return getPartsAndElements(true, envelope, rpd.isSignBody(), 
rpd.getSignedParts(), rpd.getSignedElements(), rpd.getDeclaredNamespaces());
-    }
-    
-    public static Vector getSupportingEncryptedParts(RampartMessageData rmd,
-            SupportingPolicyData rpd) {
-        SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
-        return getPartsAndElements(false, envelope, rpd.isEncryptBody(), 
rpd.getEncryptedParts(),
-                rpd.getEncryptedElements(), rpd.getDeclaredNamespaces());
-    }
-
-    public static Vector getSupportingSignedParts(RampartMessageData rmd, 
SupportingPolicyData rpd) {
-        SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
-        return getPartsAndElements(true, envelope, rpd.isSignBody(), 
rpd.getSignedParts(), rpd
-                .getSignedElements(), rpd.getDeclaredNamespaces());
-    }
+               RampartPolicyData rpd = rmd.getPolicyData();
+               SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+               Vector encryptedPartsElements = getPartsAndElements(false, 
envelope,
+                               rpd.isEncryptBody() && 
!rpd.isEncryptBodyOptional(), rpd
+                                               .getEncryptedParts(), 
rpd.getEncryptedElements(), rpd
+                                               .getDeclaredNamespaces());
+               return getContentEncryptedElements(encryptedPartsElements, 
envelope,
+                               rpd.getContentEncryptedElements(), 
rpd.getDeclaredNamespaces());
+       }
+
+       public static Vector getSignedParts(RampartMessageData rmd) {
+               RampartPolicyData rpd = rmd.getPolicyData();
+               SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+               return getPartsAndElements(true, envelope, rpd.isSignBody()
+                               && !rpd.isSignBodyOptional(), 
rpd.getSignedParts(), rpd
+                               .getSignedElements(), 
rpd.getDeclaredNamespaces());
+       }
+
+       public static Vector getSupportingEncryptedParts(RampartMessageData rmd,
+                       SupportingPolicyData rpd) {
+               SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+               return getPartsAndElements(false, envelope, rpd.isEncryptBody()
+                               && !rpd.isEncryptBodyOptional(), 
rpd.getEncryptedParts(), rpd
+                               .getEncryptedElements(), 
rpd.getDeclaredNamespaces());
+       }
+
+       public static Vector getSupportingSignedParts(RampartMessageData rmd,
+                       SupportingPolicyData rpd) {
+               SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
+               return getPartsAndElements(true, envelope, rpd.isSignBody()
+                               && !rpd.isSignBodyOptional(), 
rpd.getSignedParts(), rpd
+                               .getSignedElements(), 
rpd.getDeclaredNamespaces());
+       }
     
     public static Set findAllPrefixNamespaces(OMElement currentElement, 
HashMap decNamespacess)
     {


Reply via email to