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 2008/09/02 17:10:47 UTC
svn commit: r691271 - in /cxf/trunk:
common/common/src/main/java/org/apache/cxf/staxutils/
rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/
rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/
Author: dkulp
Date: Tue Sep 2 08:10:46 2008
New Revision: 691271
URL: http://svn.apache.org/viewvc?rev=691271&view=rev
Log:
element.setAttributeNS(...) is very slow with Xerces. Don't use it on critical path.
Modified:
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java
cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptor.java
Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java?rev=691271&r1=691270&r2=691271&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/StaxUtils.java Tue Sep 2 08:10:46 2008
@@ -751,13 +751,15 @@
}
private static void declare(Element node, String uri, String prefix) {
+ String qualname;
if (prefix != null && prefix.length() > 0) {
- node.setAttributeNS(XML_NS, "xmlns:" + prefix, uri);
+ qualname = "xmlns:" + prefix;
} else {
- if (uri != null /* && uri.length() > 0 */) {
- node.setAttributeNS(XML_NS, "xmlns", uri);
- }
+ qualname = "xmlns";
}
+ Attr attr = node.getOwnerDocument().createAttributeNS(XML_NS, qualname);
+ attr.setValue(uri);
+ node.setAttributeNodeNS(attr);
}
/**
Modified: cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java
URL: http://svn.apache.org/viewvc/cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java?rev=691271&r1=691270&r2=691271&view=diff
==============================================================================
--- cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java (original)
+++ cxf/trunk/common/common/src/main/java/org/apache/cxf/staxutils/W3CDOMStreamWriter.java Tue Sep 2 08:10:46 2008
@@ -150,12 +150,16 @@
if (prefix.length() == 0) {
writeDefaultNamespace(namespace);
} else {
- currentNode.setAttributeNS(XML_NS, "xmlns:" + prefix, namespace);
+ Attr attr = document.createAttributeNS(XML_NS, "xmlns:" + prefix);
+ attr.setValue(namespace);
+ currentNode.setAttributeNodeNS(attr);
}
}
public void writeDefaultNamespace(String namespace) throws XMLStreamException {
- currentNode.setAttributeNS(XML_NS, "xmlns", namespace);
+ Attr attr = document.createAttributeNS(XML_NS, "xmlns");
+ attr.setValue(namespace);
+ currentNode.setAttributeNodeNS(attr);
}
public void writeComment(String value) throws XMLStreamException {
Modified: cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java?rev=691271&r1=691270&r2=691271&view=diff
==============================================================================
--- cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java (original)
+++ cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java Tue Sep 2 08:10:46 2008
@@ -327,9 +327,10 @@
//attributes cannot be in empty namespace...
if (lastAdded.lookupNamespaceURI(JAXWSAConstants.WSA_PREFIX) == null) {
pfx = JAXWSAConstants.WSA_PREFIX;
- lastAdded.setAttributeNS("http://www.w3.org/2000/xmlns/",
- "xmlns:wsa",
- namespaceURI);
+ Attr attr = lastAdded.getOwnerDocument()
+ .createAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:wsa");
+ attr.setValue(namespaceURI);
+ lastAdded.setAttributeNodeNS(attr);
} else if (lastAdded.lookupNamespaceURI(JAXWSAConstants.WSA_PREFIX).equals(namespaceURI)) {
pfx = JAXWSAConstants.WSA_PREFIX;
} else {
@@ -338,9 +339,10 @@
cnt++;
}
pfx = JAXWSAConstants.WSA_PREFIX + cnt;
- lastAdded.setAttributeNS("http://www.w3.org/2000/xmlns/",
- "xmlns:wsa" + cnt,
- namespaceURI);
+ Attr attr = lastAdded.getOwnerDocument()
+ .createAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:wsa" + cnt);
+ attr.setValue(namespaceURI);
+ lastAdded.setAttributeNodeNS(attr);
}
}
Attr isRefParamAttr =
Modified: cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptor.java?rev=691271&r1=691270&r2=691271&view=diff
==============================================================================
--- cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptor.java (original)
+++ cxf/trunk/rt/ws/rm/src/main/java/org/apache/cxf/ws/rm/soap/RMSoapInterceptor.java Tue Sep 2 08:10:46 2008
@@ -37,6 +37,7 @@
import javax.xml.namespace.QName;
import javax.xml.soap.SOAPException;
+import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -182,9 +183,12 @@
version.getHeader().getLocalPart());
// add WSRM namespace declaration to header, instead of
// repeating in each individual child node
- hdr.setAttributeNS("http://www.w3.org/2000/xmlns/",
- "xmlns:" + RMConstants.getNamespacePrefix(),
- RMConstants.getNamespace());
+
+ Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/",
+ "xmlns:" + RMConstants.getNamespacePrefix());
+ attr.setValue(RMConstants.getNamespace());
+ hdr.setAttributeNodeNS(attr);
+
Marshaller marshaller = getJAXBContext().createMarshaller();
marshaller.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);
@@ -262,9 +266,11 @@
marshaller);
Node node = hdr.getFirstChild();
if (node instanceof Element) {
- ((Element)node).setAttributeNS("http://www.w3.org/2000/xmlns/",
- "xmlns:" + RMConstants.getNamespacePrefix(),
- RMConstants.getNamespace());
+
+ Attr attr = doc.createAttributeNS("http://www.w3.org/2000/xmlns/",
+ "xmlns:" + RMConstants.getNamespacePrefix());
+ attr.setValue(RMConstants.getNamespace());
+ ((Element)node).setAttributeNodeNS(attr);
}
header.add(new Header(new QName(node.getNamespaceURI(), node.getLocalName()), node));