You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2012/12/20 20:11:42 UTC
svn commit: r1424642 - in
/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers:
AbstractBindingBuilder.java TransportBindingHandler.java
Author: dkulp
Date: Thu Dec 20 19:11:41 2012
New Revision: 1424642
URL: http://svn.apache.org/viewvc?rev=1424642&view=rev
Log:
[CXF-4715] If an element is being looked up for encryption only, don't put a wsu-Id on it.
Modified:
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/TransportBindingHandler.java
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java?rev=1424642&r1=1424641&r2=1424642&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java Thu Dec 20 19:11:41 2012
@@ -1244,7 +1244,7 @@ public abstract class AbstractBindingBui
// Handle sign/enc elements
try {
- result.addAll(this.getElements("Element", xpaths, namespaces, found));
+ result.addAll(this.getElements("Element", xpaths, namespaces, found, sign));
} catch (XPathExpressionException e) {
LOG.log(Level.FINE, e.getMessage(), e);
// REVISIT
@@ -1252,7 +1252,7 @@ public abstract class AbstractBindingBui
// Handle content encrypted elements
try {
- result.addAll(this.getElements("Content", contentXpaths, cnamespaces, found));
+ result.addAll(this.getElements("Content", contentXpaths, cnamespaces, found, sign));
} catch (XPathExpressionException e) {
LOG.log(Level.FINE, e.getMessage(), e);
// REVISIT
@@ -1355,6 +1355,8 @@ public abstract class AbstractBindingBui
* signing/encryption. Populated with additional matches found by
* this method and used to prevent including the same element
* twice under the same operation.
+ * @param forceId
+ * force adding a wsu:Id onto the elements. Recommended for signatures.
* @return a configured list of {@code WSEncryptionPart}s suitable for
* processing by WSS4J
* @throws XPathExpressionException
@@ -1365,7 +1367,8 @@ public abstract class AbstractBindingBui
*/
protected List<WSEncryptionPart> getElements(String encryptionModifier,
List<String> xpaths, Map<String, String> namespaces,
- List<Element> found) throws XPathExpressionException, SOAPException {
+ List<Element> found,
+ boolean forceId) throws XPathExpressionException, SOAPException {
List<WSEncryptionPart> result = new ArrayList<WSEncryptionPart>();
@@ -1383,8 +1386,21 @@ public abstract class AbstractBindingBui
Element el = (Element)list.item(x);
if (!found.contains(el)) {
- final String id = this.addWsuIdToElement(el);
-
+ String id = null;
+ if (forceId) {
+ id = this.addWsuIdToElement(el);
+ } else {
+ //not forcing an ID on this. Use one if there is one
+ //there already, but don't force one
+ Attr idAttr = el.getAttributeNode("Id");
+ if (idAttr == null) {
+ //then try the wsu:Id value
+ idAttr = el.getAttributeNodeNS(PolicyConstants.WSU_NAMESPACE_URI, "Id");
+ }
+ if (idAttr != null) {
+ id = idAttr.getValue();
+ }
+ }
WSEncryptionPart part =
new WSEncryptionPart(id, encryptionModifier);
part.setElement(el);
Modified: cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/TransportBindingHandler.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/TransportBindingHandler.java?rev=1424642&r1=1424641&r2=1424642&view=diff
==============================================================================
--- cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/TransportBindingHandler.java (original)
+++ cxf/trunk/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/TransportBindingHandler.java Thu Dec 20 19:11:41 2012
@@ -591,7 +591,7 @@ public class TransportBindingHandler ext
result.addAll(
this.getElements(
"Element", signedElements.getXPathExpressions(),
- signedElements.getDeclaredNamespaces(), found
+ signedElements.getDeclaredNamespaces(), found, true
)
);
} catch (XPathExpressionException e) {