Author: klape
Date: 2011-04-14 16:56:11 -0400 (Thu, 14 Apr 2011)
New Revision: 14112
Modified:
stack/native/branches/jbossws-native-3.1.2.SP3_CP01_SOA-3027/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPElementImpl.java
Log:
[SOA-3027] One-off patch fix
Modified:
stack/native/branches/jbossws-native-3.1.2.SP3_CP01_SOA-3027/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPElementImpl.java
===================================================================
---
stack/native/branches/jbossws-native-3.1.2.SP3_CP01_SOA-3027/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPElementImpl.java 2011-04-14
20:52:17 UTC (rev 14111)
+++
stack/native/branches/jbossws-native-3.1.2.SP3_CP01_SOA-3027/modules/core/src/main/java/org/jboss/ws/core/soap/SOAPElementImpl.java 2011-04-14
20:56:11 UTC (rev 14112)
@@ -81,7 +81,7 @@
public SOAPElementImpl(String localPart, String prefix, String nsURI)
{
super(DOMUtils.createElement(localPart, prefix, nsURI));
- this.element = (Element)domNode;
+ this.element = (Element)domNode;
log.trace("new SOAPElementImpl: " + getElementName());
}
@@ -90,6 +90,13 @@
{
this(name.getLocalName(), name.getPrefix(), name.getURI());
}
+
+ /** Called by addChild */
+ private SOAPElementImpl(Element element)
+ {
+ super(element);
+ this.element = element;
+ }
/** Called by SOAPFactory */
public SOAPElementImpl(QName qname)
@@ -188,9 +195,8 @@
*/
public SOAPElement addChildElement(String name) throws SOAPException
{
- SOAPElement soapElement = new SOAPElementImpl(name);
- soapElement = addChildElement(soapElement);
- return soapElement;
+ Name nameImp = new NameImpl(name);
+ return addChildElement(nameImp);
}
/**
@@ -207,9 +213,8 @@
if (nsURI == null)
throw new IllegalArgumentException("Cannot obtain namespace URI for prefix:
" + prefix);
- SOAPElement soapElement = new SOAPElementImpl(localName, prefix, nsURI);
- soapElement = addChildElement(soapElement);
- return soapElement;
+ Name nameImp = new NameImpl(localName, prefix, nsURI);
+ return addChildElement(nameImp);
}
/**
@@ -223,9 +228,8 @@
*/
public SOAPElement addChildElement(String localName, String prefix, String uri) throws
SOAPException
{
- SOAPElement soapElement = new SOAPElementImpl(localName, prefix, uri);
- soapElement = addChildElement(soapElement);
- return soapElement;
+ Name nameImpl = new NameImpl(localName, prefix, uri);
+ return addChildElement(nameImpl);
}
/**
@@ -236,10 +240,19 @@
* @throws javax.xml.soap.SOAPException if there is an error in creating the
SOAPElement object
*/
public SOAPElement addChildElement(Name name) throws SOAPException
- {
- SOAPElement soapElement = new SOAPElementImpl(name);
- soapElement = addChildElement(soapElement);
- return soapElement;
+ {
+ Document doc = this.element.getOwnerDocument();
+ Element childEle = null;
+ if (name.getPrefix() == null || name.getPrefix().length() == 0)
+ {
+ childEle = doc.createElementNS(name.getURI(), name.getLocalName());
+ } else
+ {
+ childEle = doc.createElementNS(name.getURI(), name.getPrefix() + ":" +
name.getLocalName());
+ }
+
+ SOAPElement child = new SOAPElementImpl(childEle);
+ return addChildElement(child);
}
public SOAPElement addChildElement(QName qname) throws SOAPException
@@ -269,8 +282,17 @@
public SOAPElement addChildElement(SOAPElement child) throws SOAPException
{
log.trace("addChildElement: " + getElementName() + " -> " +
child.getElementName());
- SOAPElementImpl soapElement = (SOAPElementImpl)child;
- soapElement = (SOAPElementImpl)appendChild(soapElement);
+ SOAPElementImpl soapElement = (SOAPElementImpl) child;
+
+ if (soapElement.domNode.getOwnerDocument() != element.getOwnerDocument())
+ {
+ Document oldDoc = DOMUtils.peekOwnerDocument();
+ DOMUtils.setOwnerDocument(element.getOwnerDocument());
+ soapElement = (SOAPElementImpl)
SOAPFactoryImpl.newInstance().createElement((Element) (soapElement.domNode));
+ DOMUtils.setOwnerDocument(oldDoc);
+
+ }
+ soapElement = (SOAPElementImpl) appendChild(soapElement);
return soapElement.completeNamespaceDeclaration();
}
Show replies by date