You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by eg...@apache.org on 2007/05/15 12:50:48 UTC
svn commit: r538130 - in /incubator/cxf/branches/headerwork/rt:
bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/
bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/
ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/ ...
Author: eglynn
Date: Tue May 15 03:50:47 2007
New Revision: 538130
URL: http://svn.apache.org/viewvc?view=rev&rev=538130
Log:
Some more header-related fixes from Ulhas.
Modified:
incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java
incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
incubator/cxf/branches/headerwork/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
incubator/cxf/branches/headerwork/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java
Modified: incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java?view=diff&rev=538130&r1=538129&r2=538130
==============================================================================
--- incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java (original)
+++ incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ReadHeadersInterceptor.java Tue May 15 03:50:47 2007
@@ -31,6 +31,7 @@
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -108,30 +109,28 @@
Node currentHead = headerEls.item(i);
Node node = currentHead;
NodeList heads = node.getChildNodes();
- for (int x = 0; x < heads.getLength(); x++) {
+ int len = heads.getLength();
+ for (int x = 0; x < len; x++) {
node = (Node)heads.item(x);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element hel = (Element)node;
// Need to add any attributes that are present on the parent element
// which otherwise would be lost.
if (currentHead.hasAttributes()) {
- boolean found = false;
- for (int ct = 0; ct < currentHead.getAttributes().getLength(); ct++) {
- Node attr = currentHead.getAttributes().item(ct);
- for (int subct = 0;
- node.hasAttributes() && subct < node.getAttributes().getLength();
- subct++) {
- if (node.getAttributes().item(subct).equals(attr.getNodeName())) {
- found = true;
- break;
- }
- }
- if (!found && node instanceof Element) {
- Attr attribute = node.getOwnerDocument().createAttributeNS(
+ NamedNodeMap nnp = currentHead.getAttributes();
+ for (int ct = 0; ct < nnp.getLength(); ct++) {
+ Node attr = nnp.item(ct);
+ Node headerAttrNode = hel.hasAttributes()
+ ? hel.getAttributes().getNamedItemNS(
+ attr.getNamespaceURI(), attr.getLocalName())
+ : null;
+
+ if (headerAttrNode == null) {
+ Attr attribute = hel.getOwnerDocument().createAttributeNS(
attr.getNamespaceURI(),
attr.getNodeName());
attribute.setNodeValue(attr.getNodeValue());
- ((Element) node).setAttributeNodeNS(attribute);
+ hel.setAttributeNodeNS(attribute);
}
}
}
Modified: incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java?view=diff&rev=538130&r1=538129&r2=538130
==============================================================================
--- incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java (original)
+++ incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java Tue May 15 03:50:47 2007
@@ -76,8 +76,9 @@
if (preexistingHeaders) {
xtw.writeStartElement(soapVersion.getPrefix(),
soapVersion.getHeader().getLocalPart(),
- soapVersion.getNamespace());
- for (Header header : message.getHeaders()) {
+ soapVersion.getNamespace());
+ List<Header> hdrList = message.getHeaders();
+ for (Header header : hdrList) {
DataBinding b = header.getDataBinding();
if (b == null) {
HeaderProcessor hp = bus.getExtension(HeaderManager.class)
@@ -91,8 +92,6 @@
.write(header.getObject(), xtw);
} else {
Element node = (Element)header.getObject();
-// System.out.println("SOAPOUTINTERCEPTOR : node name : "
-// + node.getLocalName() + " namespace URI" + node.getNamespaceURI());
StaxUtils.copy(node, xtw);
}
}
Modified: incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java?view=diff&rev=538130&r1=538129&r2=538130
==============================================================================
--- incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java (original)
+++ incubator/cxf/branches/headerwork/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJInInterceptor.java Tue May 15 03:50:47 2007
@@ -96,7 +96,8 @@
//replace header element if necessary
if (message.hasHeaders()) {
NodeList headerEls = soapMessage.getSOAPHeader().getChildNodes();
- for (int i = 0; i < headerEls.getLength(); i++) {
+ int len = headerEls.getLength();
+ for (int i = 0; i < len; i++) {
Node nd = headerEls.item(i);
if (Node.ELEMENT_NODE == nd.getNodeType()) {
Element hel = (Element)nd;
Modified: incubator/cxf/branches/headerwork/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/headerwork/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java?view=diff&rev=538130&r1=538129&r2=538130
==============================================================================
--- incubator/cxf/branches/headerwork/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java (original)
+++ incubator/cxf/branches/headerwork/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java Tue May 15 03:50:47 2007
@@ -42,7 +42,6 @@
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
-import org.apache.cxf.binding.soap.Soap11;
import org.apache.cxf.binding.soap.SoapFault;
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.SoapVersion;
@@ -150,7 +149,7 @@
List<Header> header = message.getHeaders();
discardMAPs(header, maps);
- Element hdr = getHeaderFactory().getHeader();
+ Element hdr = getHeaderFactory().getHeader(message.getVersion());
JAXBContext jaxbContext =
VersionTransformer.getExposedJAXBContext(
maps.getNamespaceURI());
@@ -195,7 +194,8 @@
encodeReferenceParameters(maps, hdr, marshaller);
NodeList children = hdr.getChildNodes();
- for (int i = 0; i < children.getLength(); i++) {
+ int len = children.getLength();
+ for (int i = 0; i < len; i++) {
Node node = children.item(i);
if (node instanceof Element) {
@@ -636,11 +636,10 @@
protected HeaderFactory getHeaderFactory() {
if (headerFactory == null) {
headerFactory = new HeaderFactory() {
- public Element getHeader() {
+ public Element getHeader(SoapVersion soapversion) {
Document doc = DOMUtils.createDocument();
- SoapVersion version = Soap11.getInstance();
- return doc.createElementNS(version.getHeader().getNamespaceURI(),
- version.getHeader().getLocalPart());
+ return doc.createElementNS(soapversion.getHeader().getNamespaceURI(),
+ soapversion.getHeader().getLocalPart());
}
};
}
@@ -652,7 +651,7 @@
}
public interface HeaderFactory {
- Element getHeader();
+ Element getHeader(SoapVersion soapversion);
}
}
Modified: incubator/cxf/branches/headerwork/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java
URL: http://svn.apache.org/viewvc/incubator/cxf/branches/headerwork/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java?view=diff&rev=538130&r1=538129&r2=538130
==============================================================================
--- incubator/cxf/branches/headerwork/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java (original)
+++ incubator/cxf/branches/headerwork/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java Tue May 15 03:50:47 2007
@@ -39,6 +39,7 @@
import org.apache.cxf.binding.soap.SoapFault;
import org.apache.cxf.binding.soap.SoapMessage;
+import org.apache.cxf.binding.soap.SoapVersion;
import org.apache.cxf.headers.Header;
import org.apache.cxf.message.Exchange;
import org.apache.cxf.message.ExchangeImpl;
@@ -245,7 +246,7 @@
AddressingPropertiesImpl maps = getMAPs(requestor, outbound, exposeAs);
final Element header = control.createMock(Element.class);
codec.setHeaderFactory(new MAPCodec.HeaderFactory() {
- public Element getHeader() {
+ public Element getHeader(SoapVersion version) {
return header;
}
});