You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by ru...@apache.org on 2007/05/25 10:29:15 UTC

svn commit: r541583 - in /webservices/rampart/trunk/java/modules: rampart-core/src/main/java/org/apache/rampart/ rampart-core/src/main/java/org/apache/rampart/conversation/ rampart-core/src/main/java/org/apache/rampart/handler/ rampart-core/src/main/ja...

Author: ruchithf
Date: Fri May 25 01:29:13 2007
New Revision: 541583

URL: http://svn.apache.org/viewvc?view=rev&rev=541583
Log:
Fixed the samples' build files
Added Angel's patches from RAMPART-40
Updated the older rampart config to be able to disable DOOM


Modified:
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/conversation/ConversationConfiguration.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllReceiver.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllSender.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSSHandlerConstants.java
    webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java
    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/org/apache/ws/secpolicy/builders/EncryptedElementsBuilder.java
    webservices/rampart/trunk/java/modules/rampart-samples/basic/build.xml
    webservices/rampart/trunk/java/modules/rampart-samples/policy/build.xml

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartEngine.java Fri May 25 01:29:13 2007
@@ -44,7 +44,7 @@
                 WSSecurityUtil.findElement(rmd.getDocument().getDocumentElement(), 
                         "Fault", 
                         rmd.getSoapConstants().getEnvelopeURI()) != null) {
-            SOAPEnvelope env = Axis2Util.getSOAPEnvelopeFromDOOMDocument(rmd.getDocument());
+            SOAPEnvelope env = Axis2Util.getSOAPEnvelopeFromDOMDocument(rmd.getDocument(), true);
 
             //Convert back to llom since the inflow cannot use llom
             msgCtx.setEnvelope(env);
@@ -78,7 +78,7 @@
         }
         
 
-        SOAPEnvelope env = Axis2Util.getSOAPEnvelopeFromDOOMDocument(rmd.getDocument());
+        SOAPEnvelope env = Axis2Util.getSOAPEnvelopeFromDOMDocument(rmd.getDocument(), true);
 
         //Convert back to llom since the inflow cannot use DOOM
         msgCtx.setEnvelope(env);

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/RampartMessageData.java Fri May 25 01:29:13 2007
@@ -145,7 +145,7 @@
              * First get the SOAP envelope as document, then create a security
              * header and insert into the document (Envelope)
              */
-            this.document = Axis2Util.getDocumentFromSOAPEnvelope(msgCtx.getEnvelope(), false);
+            this.document = Axis2Util.getDocumentFromSOAPEnvelope(msgCtx.getEnvelope(), true);
             msgCtx.setEnvelope((SOAPEnvelope)this.document.getDocumentElement());
             
             this.soapConstants = WSSecurityUtil.getSOAPConstants(this.document.getDocumentElement());

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/conversation/ConversationConfiguration.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/conversation/ConversationConfiguration.java?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/conversation/ConversationConfiguration.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/conversation/ConversationConfiguration.java Fri May 25 01:29:13 2007
@@ -205,7 +205,7 @@
 
                 //Convert the Envelop to DOOM
                 config.doc = Axis2Util.getDocumentFromSOAPEnvelope(msgCtx
-                        .getEnvelope(), false);
+                        .getEnvelope(), true);
                 
                 //Token store
                 config.tokenStore = (TokenStorage) msgCtx

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllReceiver.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllReceiver.java?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllReceiver.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllReceiver.java Fri May 25 01:29:13 2007
@@ -72,10 +72,10 @@
             log.debug("WSDoAllReceiver: enter invoke() ");
         }
 
-        String disableDoomValue = (String) msgContext
-                .getProperty(WSSHandlerConstants.DISABLE_DOOM);
-        boolean disableDoom = disableDoomValue != null
-                && Constants.VALUE_TRUE.equalsIgnoreCase(disableDoomValue);
+        String useDoomValue = (String) getProperty(msgContext,
+                WSSHandlerConstants.USE_DOOM);
+        boolean useDoom = useDoomValue != null
+                && Constants.VALUE_TRUE.equalsIgnoreCase(useDoomValue);
 
         RequestData reqData = new RequestData();
         try {
@@ -88,7 +88,7 @@
                             .getWSAAction())
                     || WSSHandlerConstants.RSTR_ACTON_SCT.equals(msgContext
                             .getWSAAction())) {
-                this.processBasic(msgContext, disableDoom, reqData);
+                this.processBasic(msgContext, useDoom, reqData);
             } else {
                 this.processSecConv(msgContext);
             }
@@ -145,7 +145,7 @@
 
         // Convert back to llom since the inflow cannot use llom
         msgContext.setEnvelope(Axis2Util
-                .getSOAPEnvelopeFromDOOMDocument(config.getDocument()));
+                .getSOAPEnvelopeFromDOMDocument(config.getDocument(), true));
         
         SOAPHeader soapHeader = null;
         try {
@@ -174,7 +174,7 @@
 
     }
 
-    private void processBasic(MessageContext msgContext, boolean disableDoom, RequestData reqData)
+    private void processBasic(MessageContext msgContext, boolean useDoom, RequestData reqData)
             throws Exception {
 
         // populate the properties
@@ -224,7 +224,7 @@
 
         try {
             doc = Axis2Util.getDocumentFromSOAPEnvelope(msgContext
-                    .getEnvelope(), disableDoom);
+                    .getEnvelope(), useDoom);
         } catch (WSSecurityException wssEx) {
             throw new AxisFault(
                     "WSDoAllReceiver: Error in converting to Document", wssEx);
@@ -304,7 +304,7 @@
          * Set the new SOAPEnvelope
          */
 
-        msgContext.setEnvelope(Axis2Util.getSOAPEnvelopeFromDOOMDocument(doc));
+        msgContext.setEnvelope(Axis2Util.getSOAPEnvelopeFromDOMDocument(doc, useDoom));
 
         /*
          * After setting the new current message, probably modified because of

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllSender.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllSender.java?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllSender.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSDoAllSender.java Fri May 25 01:29:13 2007
@@ -72,8 +72,10 @@
       
     public void processMessage(MessageContext msgContext) throws AxisFault {
         
-        String disableDoomValue = (String)msgContext.getProperty(WSSHandlerConstants.DISABLE_DOOM);
-        boolean disableDoom = disableDoomValue != null && Constants.VALUE_TRUE.equalsIgnoreCase(disableDoomValue);
+        String useDoomValue = (String) getProperty(msgContext,
+                WSSHandlerConstants.USE_DOOM);
+        boolean useDoom = useDoomValue != null
+                && Constants.VALUE_TRUE.equalsIgnoreCase(useDoomValue);
         
         RequestData reqData = new RequestData();
         try {
@@ -83,7 +85,7 @@
                     WSSHandlerConstants.RSTR_ACTON_SCT.equals(msgContext.getWSAAction()) ||
                     WSSHandlerConstants.RSTR_ACTON_ISSUE.equals(msgContext.getWSAAction())) {
                 //If the msgs are msgs to an STS then use basic WS-Sec
-                processBasic(msgContext, disableDoom, reqData);
+                processBasic(msgContext, useDoom, reqData);
             } else {
                 processSecConv(msgContext);
             }
@@ -135,11 +137,11 @@
      * This will carryout the WS-Security related operations.
      * 
      * @param msgContext
-     * @param disableDoom
+     * @param useDoom
      * @throws WSSecurityException
      * @throws AxisFault
      */
-    private void processBasic(MessageContext msgContext, boolean disableDoom,
+    private void processBasic(MessageContext msgContext, boolean useDoom,
             RequestData reqData) throws WSSecurityException, AxisFault {
         boolean doDebug = log.isDebugEnabled();
         
@@ -244,7 +246,7 @@
         if ((doc = (Document) ((MessageContext)reqData.getMsgContext())
                 .getProperty(WSHandlerConstants.SND_SECURITY)) == null) {
             try {
-                doc = Axis2Util.getDocumentFromSOAPEnvelope(msgContext.getEnvelope(), disableDoom);
+                doc = Axis2Util.getDocumentFromSOAPEnvelope(msgContext.getEnvelope(), useDoom);
             } catch (WSSecurityException wssEx) {
                 throw new AxisFault("WSDoAllReceiver: Error in converting to Document", wssEx);
             }
@@ -265,7 +267,11 @@
             ((MessageContext)reqData.getMsgContext()).setProperty(WSHandlerConstants.SND_SECURITY,
                     doc);
         } else {
-            msgContext.setEnvelope((SOAPEnvelope)doc.getDocumentElement());
+            if(useDoom) {
+                msgContext.setEnvelope((SOAPEnvelope)doc.getDocumentElement());
+            } else {
+                msgContext.setEnvelope(Axis2Util.getSOAPEnvelopeFromDOMDocument(doc, useDoom));
+            }
             ((MessageContext)reqData.getMsgContext()).setProperty(WSHandlerConstants.SND_SECURITY, null);
         }
         

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSSHandlerConstants.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSSHandlerConstants.java?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSSHandlerConstants.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/handler/WSSHandlerConstants.java Fri May 25 01:29:13 2007
@@ -109,7 +109,7 @@
     /**
      * Key to be used to set a flag in msg ctx to enable/disable using doom
      */
-    public final static String DISABLE_DOOM = "useDoom";
+    public final static String USE_DOOM = "useDoom";
     
     
     ///

Modified: webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/util/Axis2Util.java Fri May 25 01:29:13 2007
@@ -28,11 +28,13 @@
 import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.rampart.handler.WSSHandlerConstants;
 import org.apache.ws.security.WSSecurityException;
+import org.apache.xml.security.utils.XMLUtils;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLInputFactory;
 import javax.xml.stream.XMLStreamReader;
 
 import java.io.ByteArrayInputStream;
@@ -74,46 +76,51 @@
 	 * @return Returns the DOM Document of the given SOAP Envelope.
 	 * @throws Exception
 	 */
-	public static Document getDocumentFromSOAPEnvelope(SOAPEnvelope env, boolean disableDoom)
+	public static Document getDocumentFromSOAPEnvelope(SOAPEnvelope env, boolean useDoom)
 			throws WSSecurityException {
 		try {
             if(env instanceof Element) {
                 return ((Element)env).getOwnerDocument();
             }
             
-            if(!disableDoom) {
-    			env.build();
-                
-                //Workaround to prevent a bug in AXIOM where 
-                //there can be an incomplete OMElement as the first child body 
+            if (useDoom) {
+                env.build();
+
+                // Workaround to prevent a bug in AXIOM where
+                // there can be an incomplete OMElement as the first child body
                 OMElement firstElement = env.getBody().getFirstElement();
-                if(firstElement != null) {
+                if (firstElement != null) {
                     firstElement.build();
                 }
-    			
-    			//Check the namespace and find SOAP version and factory
-    			String nsURI = null;
-    			SOAPFactory factory;
-    			if(env.getNamespace().getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
-    				nsURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
-    				factory = DOOMAbstractFactory.getSOAP11Factory();
-    			} else {
-    				nsURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
-    				factory = DOOMAbstractFactory.getSOAP12Factory();
-    			}
-    			
-    			StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(env.getXMLStreamReader(),factory, nsURI);
-    			SOAPEnvelope envelope = (stAXSOAPModelBuilder).getSOAPEnvelope();
-    			((OMNode)envelope.getParent()).build();
-    			
-    			Element envElem = (Element)envelope;
-    			return envElem.getOwnerDocument();
+
+                // Check the namespace and find SOAP version and factory
+                String nsURI = null;
+                SOAPFactory factory;
+                if (env.getNamespace().getNamespaceURI().equals(
+                        SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI)) {
+                    nsURI = SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+                    factory = DOOMAbstractFactory.getSOAP11Factory();
+                } else {
+                    nsURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+                    factory = DOOMAbstractFactory.getSOAP12Factory();
+                }
+
+                StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(
+                        env.getXMLStreamReader(), factory, nsURI);
+                SOAPEnvelope envelope = (stAXSOAPModelBuilder)
+                        .getSOAPEnvelope();
+                ((OMNode) envelope.getParent()).build();
+
+                Element envElem = (Element) envelope;
+                return envElem.getOwnerDocument();
             } else {
                 ByteArrayOutputStream baos = new ByteArrayOutputStream();
                 env.build();
                 env.serialize(baos);
-                ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-                DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+                ByteArrayInputStream bais = new ByteArrayInputStream(baos
+                        .toByteArray());
+                DocumentBuilderFactory factory = DocumentBuilderFactory
+                        .newInstance();
                 factory.setNamespaceAware(true);
                 return factory.newDocumentBuilder().parse(bais);
             }
@@ -123,22 +130,34 @@
 		}
 	}
 
-	public static SOAPEnvelope getSOAPEnvelopeFromDOOMDocument(Document doc)
+	public static SOAPEnvelope getSOAPEnvelopeFromDOMDocument(Document doc, boolean useDoom)
             throws WSSecurityException {
 
-        try {
-            XMLStreamReader reader = ((OMElement) doc.getDocumentElement())
-                    .getXMLStreamReader();
-            StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(
-                    reader, null);
-            SOAPEnvelope envelope = stAXSOAPModelBuilder.getSOAPEnvelope();
-            envelope.build();
-            return envelope;
-            
-        } catch (FactoryConfigurationError e) {
-            throw new WSSecurityException(e.getMessage());
-        }
+        if(useDoom) {
+            try {
+                XMLStreamReader reader = ((OMElement) doc.getDocumentElement())
+                        .getXMLStreamReader();
+                StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(
+                        reader, null);
+                SOAPEnvelope envelope = stAXSOAPModelBuilder.getSOAPEnvelope();
+                envelope.build();
+                return envelope;
 
+            } catch (FactoryConfigurationError e) {
+                throw new WSSecurityException(e.getMessage());
+            }
+        } else {
+            try {
+                ByteArrayOutputStream os = new ByteArrayOutputStream();
+                XMLUtils.outputDOM(doc.getDocumentElement(), os, true);
+                ByteArrayInputStream bais =  new ByteArrayInputStream(os.toByteArray());
+
+                StAXSOAPModelBuilder stAXSOAPModelBuilder = new StAXSOAPModelBuilder(XMLInputFactory.newInstance().createXMLStreamReader(bais), null);
+                return stAXSOAPModelBuilder.getSOAPEnvelope();
+            } catch (Exception e) {
+                throw new WSSecurityException(e.getMessage());
+            }
+        }
     }
 	
 	

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?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- 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 Fri May 25 01:29:13 2007
@@ -28,11 +28,28 @@
 import javax.security.auth.callback.CallbackHandler;
 import javax.xml.namespace.QName;
 
+import java.security.NoSuchAlgorithmException;
+import java.security.cert.X509Certificate;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Properties;
+import java.util.Set;
+import java.util.Vector;
+
+import javax.crypto.KeyGenerator;
+import javax.security.auth.callback.Callback;
+import javax.security.auth.callback.CallbackHandler;
+import javax.xml.namespace.QName;
+
 import org.apache.axiom.om.OMAbstractFactory;
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMFactory;
 import org.apache.axiom.om.OMNamespace;
+import org.apache.axiom.om.xpath.AXIOMXPath;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
@@ -68,6 +85,8 @@
 import org.apache.ws.security.handler.WSHandlerResult;
 import org.apache.ws.security.message.WSSecEncryptedKey;
 import org.apache.ws.security.util.Loader;
+import org.jaxen.JaxenException;
+import org.jaxen.XPath;
 import org.w3c.dom.Element;
 import org.w3c.dom.Node;
 
@@ -544,6 +563,49 @@
         return getPartsAndElements(true, envelope, rpd.isSignBody(), rpd.getSignedParts(), rpd.getSignedElements() );
     }
     
+    private static Set findAllPrefixNamespaces(OMElement currentElement)
+    {
+    	Set results = new HashSet();
+    	Iterator iter = null;
+    	
+    	findPrefixNamespaces(currentElement,results);
+    	
+    	return results;
+    }
+    
+    private static void findPrefixNamespaces(OMElement e, Set results)
+    {
+    	
+	    	Iterator iter = e.getAllDeclaredNamespaces();
+	    	
+	    	if (iter!=null)
+	    	{
+	    		while (iter.hasNext())
+	    				results.add(iter.next());
+	    	}
+	    	
+	    	Iterator children = e.getChildElements();
+	    	
+	    	while (children.hasNext())
+	    	{
+	    		findPrefixNamespaces((OMElement)children.next(), results);
+	    	}
+    }
+    
+    private static List findDefaultPrefixNamespaces(OMElement e)
+    {
+    	List namespaces = new ArrayList();
+    	OMFactory factory = e.getOMFactory();
+    	// put default namespaces here (sp, soapenv, wsu, etc...)
+    	namespaces.add(factory.createOMNamespace(WSConstants.ENC_PREFIX, WSConstants.ENC_NS));
+    	namespaces.add(factory.createOMNamespace(WSConstants.SIG_PREFIX, WSConstants.SIG_NS));
+    	namespaces.add(factory.createOMNamespace(WSConstants.WSSE_PREFIX, WSConstants.WSSE_NS));
+    	namespaces.add(factory.createOMNamespace(WSConstants.WSU_PREFIX, WSConstants.WSU_NS));
+    	
+    	return namespaces;
+    	
+    }
+    
     private static Vector getPartsAndElements(boolean sign, SOAPEnvelope envelope, boolean includeBody, Vector parts, Vector elements) {
 
         Vector found = new Vector();
@@ -600,6 +662,42 @@
         }
         
         // ?? Search for 'Elements' here
+        
+        // decide what exactly is going to be used - only the default namespaces, or the list of all declared namespaces in the message !
+        Set namespaces = findAllPrefixNamespaces(envelope);
+        
+        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();
+			    	
+			    	if (sign)
+			    		result.add(new WSEncryptionPart(e.getLocalName(), e.getNamespace().getNamespaceURI(), "Content"));
+			    	else
+			    		result.add(new WSEncryptionPart(e.getLocalName(), e.getNamespace().getNamespaceURI(), "Element"));
+			    }
+				
+			} catch (JaxenException e) {
+				// This has to be changed to propagate an instance of a RampartException up
+				throw new RuntimeException(e);
+			}
+        }
 
         return result;
     }

Modified: webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/builders/EncryptedElementsBuilder.java
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/builders/EncryptedElementsBuilder.java?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/builders/EncryptedElementsBuilder.java (original)
+++ webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/builders/EncryptedElementsBuilder.java Fri May 25 01:29:13 2007
@@ -57,7 +57,7 @@
 
     private void processElement(OMElement element, SignedEncryptedElements parent) {
         if (XPATH.equals(element.getQName())) {
-            parent.addXPathExpression(element.getText());                        
+            parent.setXPathVersion(element.getText());                        
         }
     }
     

Modified: webservices/rampart/trunk/java/modules/rampart-samples/basic/build.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/basic/build.xml?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/basic/build.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-samples/basic/build.xml Fri May 25 01:29:13 2007
@@ -23,8 +23,8 @@
 	<property name="keys.dir" value="../keys"/>
 	<property name="temp.client.dir" value="build/temp_client"/>
 	
-	<property name="addressing.mar" value="addressing-1.1.mar"/>
-	<property name="rampart.mar" value="rampart-1.1.mar"/>	
+	<property name="addressing.mar" value="addressing-1.2.mar"/>
+	<property name="rampart.mar" value="rampart-SNAPSHOT.mar"/>	
 	
 	<property name="client.port" value="8080"/>
 	<property name="server.port" value="8080"/>

Modified: webservices/rampart/trunk/java/modules/rampart-samples/policy/build.xml
URL: http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-samples/policy/build.xml?view=diff&rev=541583&r1=541582&r2=541583
==============================================================================
--- webservices/rampart/trunk/java/modules/rampart-samples/policy/build.xml (original)
+++ webservices/rampart/trunk/java/modules/rampart-samples/policy/build.xml Fri May 25 01:29:13 2007
@@ -24,9 +24,9 @@
 	<property name="keys.dir" value="../keys"/>
 	<property name="temp.client.dir" value="build/temp_client"/>
 	
-	<property name="addressing.mar" value="addressing-1.1.mar"/>
-	<property name="rampart.mar" value="rampart-1.1.mar"/>
-	<property name="rahas.mar" value="rahas-1.1.mar"/>
+	<property name="addressing.mar" value="addressing-1.2.mar"/>
+	<property name="rampart.mar" value="rampart-SNAPSHOT.mar"/>
+	<property name="rahas.mar" value="rahas-SNAPSHOT.mar"/>
 
 	<property name="client.port" value="8080"/>
 	<property name="server.port" value="8080"/>