Author: nandana
Date: Mon Feb 11 23:19:35 2008
New Revision: 620716

URL: http://svn.apache.org/viewvc?rev=620716&view=rev
Log:
rampart-policy related changes to support WS Security Policy 1.2

Modified:
    
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
    
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder

Modified: 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java?rev=620716&r1=620715&r2=620716&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/RampartUtil.java
 Mon Feb 11 23:19:35 2008
@@ -648,7 +648,8 @@
     public static Vector getEncryptedParts(RampartMessageData rmd) {
         RampartPolicyData rpd =  rmd.getPolicyData();
         SOAPEnvelope envelope = rmd.getMsgContext().getEnvelope();
-        return getPartsAndElements(false, envelope, rpd.isEncryptBody(), 
rpd.getEncryptedParts(), 
rpd.getEncryptedElements(),rpd.getDeclaredNamespaces());
+        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) {
@@ -717,6 +718,47 @@
        
     }
     
+    public static Vector getContentEncryptedElements (Vector 
encryptedPartsElements, SOAPEnvelope envelope,Vector elements, HashMap 
decNamespaces ) {
+        
+        Set namespaces = findAllPrefixNamespaces(envelope, decNamespaces);
+        
+        Iterator elementsIter = elements.iterator();
+        while (elementsIter.hasNext())
+        {
+                String expression = (String)elementsIter.next();
+                try {
+                                XPath xp = new AXIOMXPath(expression);
+                                Iterator nsIter = namespaces.iterator();
+                                
+                                while (nsIter.hasNext())
+                                {
+                                        OMNamespace tmpNs = 
(OMNamespace)nsIter.next();
+                                        xp.addNamespace(tmpNs.getPrefix(), 
tmpNs.getNamespaceURI());
+                                }
+                                
+                                List selectedNodes = xp.selectNodes(envelope);
+                                
+                                Iterator nodesIter = selectedNodes.iterator();
+                                
+                            while (nodesIter.hasNext())
+                            {
+                                OMElement e = (OMElement)nodesIter.next();
+
+                                encryptedPartsElements.add(new 
WSEncryptionPart(e.getLocalName(), e.getNamespace().getNamespaceURI(), 
"Content"));
+
+                            }
+                                
+                        } catch (JaxenException e) {
+                                // This has to be changed to propagate an 
instance of a RampartException up
+                                throw new RuntimeException(e);
+                        }
+        }
+        
+     
+        return encryptedPartsElements;
+        
+    }
+    
     public static Vector getPartsAndElements(boolean sign, SOAPEnvelope 
envelope, boolean includeBody, Vector parts, Vector elements, HashMap 
decNamespaces) {
 
         Vector found = new Vector();
@@ -1163,11 +1205,10 @@
     
     /**
      * Method to check whether security header is required in incoming message
-     * @param rmd 
+     * @param rpd 
      * @return true if a security header is required in the incoming message
      */
-    public static boolean isSecHeaderRequired(RampartMessageData rmd) {
-        RampartPolicyData rpd = rmd.getPolicyData();
+    public static boolean isSecHeaderRequired(RampartPolicyData rpd, boolean 
initiator ) {
         
         // Checking for time stamp
         if ( rpd.isIncludeTimestamp() ) {
@@ -1189,7 +1230,7 @@
         // Checking for supporting tokens
         SupportingToken supportingTokens;
         
-        if (!rmd.isInitiator()) {
+        if (!initiator) {
         
             supportingTokens = rpd.getSupportingTokens();
             if (supportingTokens != null && 
supportingTokens.getTokens().size() != 0) {

Modified: 
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
URL: 
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder?rev=620716&r1=620715&r2=620716&view=diff
==============================================================================
--- 
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
 (original)
+++ 
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/META-INF/services/org.apache.neethi.builders.AssertionBuilder
 Mon Feb 11 23:19:35 2008
@@ -46,4 +46,5 @@
 org.apache.ws.secpolicy12.builders.SecureConversationTokenBuilder
 org.apache.ws.secpolicy12.builders.SymmetricBindingBuilder
 org.apache.ws.secpolicy12.builders.IssuedTokenBuilder
-org.apache.ws.secpolicy12.builders.RequiredElementsBuilder
\ No newline at end of file
+org.apache.ws.secpolicy12.builders.RequiredElementsBuilder
+org.apache.ws.secpolicy12.builders.ContentEncryptedElementsBuilder
\ No newline at end of file


Reply via email to