You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by co...@apache.org on 2016/12/02 13:30:20 UTC
cxf git commit: CXF-6604 - Sporadic ClassCastException in
AsymmetricBindingHandler#doSignBeforeEncrypt
Repository: cxf
Updated Branches:
refs/heads/master a644c5d06 -> 66e97c77e
CXF-6604 - Sporadic ClassCastException in AsymmetricBindingHandler#doSignBeforeEncrypt
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/66e97c77
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/66e97c77
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/66e97c77
Branch: refs/heads/master
Commit: 66e97c77eaa43ab3a2cd95f0edc6a27e7445e8ce
Parents: a644c5d
Author: Colm O hEigeartaigh <co...@apache.org>
Authored: Fri Dec 2 13:30:06 2016 +0000
Committer: Colm O hEigeartaigh <co...@apache.org>
Committed: Fri Dec 2 13:30:06 2016 +0000
----------------------------------------------------------------------
.../java/org/apache/cxf/staxutils/StaxUtils.java | 2 +-
.../policyhandlers/AbstractBindingBuilder.java | 19 +++++++++++++++++--
2 files changed, 18 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/66e97c77/core/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/cxf/staxutils/StaxUtils.java b/core/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
index d307b04..7f29345 100644
--- a/core/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
+++ b/core/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
@@ -95,7 +95,7 @@ import org.apache.cxf.helpers.DOMUtils;
import org.apache.cxf.message.Message;
public final class StaxUtils {
- // System properies for defaults, but also contextual properties usable
+ // System properties for defaults, but also contextual properties usable
// for StaxInInterceptor
public static final String MAX_CHILD_ELEMENTS =
"org.apache.cxf.stax.maxChildElements";
http://git-wip-us.apache.org/repos/asf/cxf/blob/66e97c77/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
----------------------------------------------------------------------
diff --git a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
index cf4333d..66de78c 100644
--- a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
+++ b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/policyhandlers/AbstractBindingBuilder.java
@@ -41,6 +41,8 @@ import javax.xml.namespace.QName;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
@@ -48,6 +50,7 @@ import javax.xml.xpath.XPathFactory;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
+import org.w3c.dom.DocumentFragment;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -63,6 +66,8 @@ import org.apache.cxf.interceptor.Fault;
import org.apache.cxf.message.MessageUtils;
import org.apache.cxf.rt.security.utils.SecurityUtils;
import org.apache.cxf.service.model.EndpointInfo;
+import org.apache.cxf.staxutils.StaxUtils;
+import org.apache.cxf.staxutils.W3CDOMStreamWriter;
import org.apache.cxf.ws.policy.AssertionInfo;
import org.apache.cxf.ws.policy.AssertionInfoMap;
import org.apache.cxf.ws.policy.PolicyConstants;
@@ -608,8 +613,18 @@ public abstract class AbstractBindingBuilder extends AbstractCommonBindingHandle
}
protected Element cloneElement(Element el) {
- if (!secHeader.getSecurityHeaderElement().getOwnerDocument().equals(el.getOwnerDocument())) {
- return (Element)secHeader.getSecurityHeaderElement().getOwnerDocument().importNode(el, true);
+ Document doc = secHeader.getSecurityHeaderElement().getOwnerDocument();
+ if (!doc.equals(el.getOwnerDocument())) {
+
+ XMLStreamReader reader = StaxUtils.createXMLStreamReader(el);
+ DocumentFragment fragment = doc.createDocumentFragment();
+ W3CDOMStreamWriter writer = new W3CDOMStreamWriter(fragment);
+ try {
+ StaxUtils.copy(reader, writer);
+ return (Element)fragment.getFirstChild();
+ } catch (XMLStreamException ex) {
+ LOG.log(Level.FINE, "Error cloning security element", ex);
+ }
}
return el;
}