Author: nandana
Date: Fri Jan 11 02:40:49 2008
New Revision: 611132
URL: http://svn.apache.org/viewvc?rev=611132&view=rev
Log:
Fixing RAMPART-132 issue.
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.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-policy/src/main/java/org/apache/ws/secpolicy/builders/SignedElementsBuilder.java
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedElements.java
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java?rev=611132&r1=611131&r2=611132&view=diff
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyBuilder.java
Fri Jan 11 02:40:49 2008
@@ -208,6 +208,7 @@
rpd.setEncryptedElements((String) it.next());
}
}
+ rpd.addDeclaredNamespaces(see.getDeclaredNamespaces());
}
/**
Modified:
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java?rev=611132&r1=611131&r2=611132&view=diff
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-core/src/main/java/org/apache/rampart/policy/RampartPolicyData.java
Fri Jan 11 02:40:49 2008
@@ -100,6 +100,8 @@
private Vector encryptedParts = new Vector();
private Vector encryptedElements = new Vector();
+
+ private HashMap declaredNamespaces = new HashMap();
/*
* Holds the supporting tokens elements
@@ -368,6 +370,14 @@
*/
public Vector getSignedParts() {
return signedParts;
+ }
+
+ public HashMap getDeclaredNamespaces() {
+ return declaredNamespaces;
+ }
+
+ public void addDeclaredNamespaces(HashMap namespaces) {
+ declaredNamespaces.putAll(namespaces);
}
/**
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=611132&r1=611131&r2=611132&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
Fri Jan 11 02:40:49 2008
@@ -78,6 +78,7 @@
import java.security.NoSuchAlgorithmException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.Hashtable;
import java.util.Iterator;
@@ -603,16 +604,16 @@
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() );
+ return getPartsAndElements(false, envelope, rpd.isEncryptBody(),
rpd.getEncryptedParts(),
rpd.getEncryptedElements(),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() );
+ return getPartsAndElements(true, envelope, rpd.isSignBody(),
rpd.getSignedParts(), rpd.getSignedElements(), rpd.getDeclaredNamespaces());
}
- private static Set findAllPrefixNamespaces(OMElement currentElement)
+ private static Set findAllPrefixNamespaces(OMElement currentElement,
HashMap decNamespacess)
{
Set results = new HashSet();
@@ -626,6 +627,16 @@
OMNamespace ns = (OMNamespace) iterator.next();
results.add(ns);
}
+
+ for ( Iterator iterator = decNamespacess.keySet().iterator();
iterator.hasNext();) {
+ String prefix = (String) iterator.next();
+ String ns = (String) decNamespacess.get(prefix);
+ OMFactory omFactory = currentElement.getOMFactory();
+ OMNamespace namespace = omFactory.createOMNamespace(ns, prefix);
+ results.add(namespace);
+
+ }
+
return results;
}
@@ -662,7 +673,7 @@
}
- public static Vector getPartsAndElements(boolean sign, SOAPEnvelope
envelope, boolean includeBody, Vector parts, Vector elements) {
+ public static Vector getPartsAndElements(boolean sign, SOAPEnvelope
envelope, boolean includeBody, Vector parts, Vector elements, HashMap
decNamespaces) {
Vector found = new Vector();
Vector result = new Vector();
@@ -720,7 +731,7 @@
// ?? 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);
+ Set namespaces = findAllPrefixNamespaces(envelope, decNamespaces);
Iterator elementsIter = elements.iterator();
while (elementsIter.hasNext())
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?rev=611132&r1=611131&r2=611132&view=diff
==============================================================================
---
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 Jan 11 02:40:49 2008
@@ -21,6 +21,7 @@
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
import org.apache.neethi.Assertion;
import org.apache.neethi.AssertionBuilderFactory;
import org.apache.neethi.builders.AssertionBuilder;
@@ -57,7 +58,12 @@
private void processElement(OMElement element, SignedEncryptedElements
parent) {
if (XPATH.equals(element.getQName())) {
- parent.addXPathExpression(element.getText());
+ parent.addXPathExpression(element.getText());
+ Iterator namespaces = element.getAllDeclaredNamespaces();
+ while (namespaces.hasNext()) {
+ OMNamespace nm = (OMNamespace) namespaces.next();
+ parent.addDeclaredNamespaces(nm.getNamespaceURI(),
nm.getPrefix());
+ }
}
}
Modified:
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/builders/SignedElementsBuilder.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/builders/SignedElementsBuilder.java?rev=611132&r1=611131&r2=611132&view=diff
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/builders/SignedElementsBuilder.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/builders/SignedElementsBuilder.java
Fri Jan 11 02:40:49 2008
@@ -21,6 +21,7 @@
import org.apache.axiom.om.OMAttribute;
import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNamespace;
import org.apache.neethi.Assertion;
import org.apache.neethi.AssertionBuilderFactory;
import org.apache.neethi.builders.AssertionBuilder;
@@ -56,6 +57,12 @@
QName name = element.getQName();
if (XPATH.equals(name)) {
parent.addXPathExpression(element.getText());
+ Iterator namespaces = element.getAllDeclaredNamespaces();
+ while (namespaces.hasNext()) {
+ OMNamespace nm = (OMNamespace) namespaces.next();
+ parent.addDeclaredNamespaces(nm.getNamespaceURI(),
nm.getPrefix());
+ }
}
}
+
}
Modified:
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedElements.java
URL:
http://svn.apache.org/viewvc/webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedElements.java?rev=611132&r1=611131&r2=611132&view=diff
==============================================================================
---
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedElements.java
(original)
+++
webservices/rampart/trunk/java/modules/rampart-policy/src/main/java/org/apache/ws/secpolicy/model/SignedEncryptedElements.java
Fri Jan 11 02:40:49 2008
@@ -18,6 +18,7 @@
import java.util.ArrayList;
import java.util.Iterator;
+import java.util.HashMap;
import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
@@ -29,6 +30,8 @@
public class SignedEncryptedElements extends AbstractSecurityAssertion {
private ArrayList xPathExpressions = new ArrayList();
+
+ private HashMap declaredNamespaces = new HashMap();
private String xPathVersion;
@@ -74,7 +77,15 @@
public boolean isSignedElemets() {
return signedElemets;
}
-
+
+ public HashMap getDeclaredNamespaces () {
+ return declaredNamespaces;
+ }
+
+ public void addDeclaredNamespaces(String uri, String prefix ) {
+ declaredNamespaces.put(prefix, uri);
+ }
+
public void serialize(XMLStreamWriter writer) throws XMLStreamException {
String localName = getName().getLocalPart();