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/14 17:48:30 UTC
svn commit: r537890 - in /incubator/cxf/branches/headerwork/rt/ws/addr/src:
main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java
Author: eglynn
Date: Mon May 14 08:48:29 2007
New Revision: 537890
URL: http://svn.apache.org/viewvc?view=rev&rev=537890
Log:
Modified WS-A unit tests to reflect changes to header processing logic in the code.
Modified:
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/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=537890&r1=537889&r2=537890
==============================================================================
--- 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 Mon May 14 08:48:29 2007
@@ -40,6 +40,7 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+import org.w3c.dom.NodeList;
import org.apache.cxf.binding.soap.Soap11;
import org.apache.cxf.binding.soap.SoapFault;
@@ -82,6 +83,7 @@
Collections.synchronizedMap(new HashMap<String, Exchange>());
private VersionTransformer transformer;
+ private HeaderFactory headerFactory;
/**
* Constructor.
@@ -147,20 +149,8 @@
try {
List<Header> header = message.getHeaders();
discardMAPs(header, maps);
-// List<Header> extraHdrs = new ArrayList<Header>();
- Document doc = DOMUtils.createDocument();
- SoapVersion version = Soap11.getInstance();
- Element hdr = doc.createElementNS(version.getHeader().getNamespaceURI(),
- version.getHeader().getLocalPart());
-
- //ubhole: This doesn't seems to matter as we need to add on each node now.
-
- // add WSA namespace declaration to header, instead of
- // repeating in each individual child node
-// hdr.setAttributeNS("http://www.w3.org/2000/xmlns/",
-// "xmlns:" + Names.WSA_NAMESPACE_PREFIX,
-// maps.getNamespaceURI());
+ Element hdr = getHeaderFactory().getHeader();
JAXBContext jaxbContext =
VersionTransformer.getExposedJAXBContext(
maps.getNamespaceURI());
@@ -204,17 +194,14 @@
marshaller);
encodeReferenceParameters(maps, hdr, marshaller);
- for (int i = 0; i < hdr.getChildNodes().getLength(); i++) {
- Node node = hdr.getChildNodes().item(i);
+ NodeList children = hdr.getChildNodes();
+ for (int i = 0; i < children.getLength(); i++) {
+ Node node = children.item(i);
-// System.out.println("node name : " + node.getLocalName()
-// + " namespace URI" + node.getNamespaceURI());
if (node instanceof Element) {
((Element) node).setAttributeNS("http://www.w3.org/2000/xmlns/",
"xmlns:" + Names.WSA_NAMESPACE_PREFIX,
maps.getNamespaceURI());
- } else {
- System.out.println("Should not come here...");
}
Header holder = new Header(
@@ -331,8 +318,6 @@
if (unmarshaller == null) {
JAXBContext jaxbContext =
VersionTransformer.getExposedJAXBContext(headerURI);
-// System.out.println("JAxbcontext supports : " + jaxbContext.toString());
-
unmarshaller =
jaxbContext.createUnmarshaller();
}
@@ -493,7 +478,6 @@
Marshaller marshaller) throws JAXBException {
if (value != null) {
marshaller.marshal(new JAXBElement<T>(qname, clz, value), header);
-// System.out.println("Last header child is : " + header.getLastChild());
}
}
@@ -508,7 +492,6 @@
protected <T> T decodeMAP(Class<T> clz,
Element headerElement,
Unmarshaller unmarshaller) throws JAXBException {
-// System.out.println("unmarshaller supports : " + unmarshaller);
JAXBElement<T> element =
unmarshaller.unmarshal(headerElement, clz);
return element.getValue();
@@ -649,7 +632,28 @@
message.put(Message.PARTIAL_RESPONSE_MESSAGE, Boolean.TRUE);
}
}
+
+ protected HeaderFactory getHeaderFactory() {
+ if (headerFactory == null) {
+ headerFactory = new HeaderFactory() {
+ public Element getHeader() {
+ Document doc = DOMUtils.createDocument();
+ SoapVersion version = Soap11.getInstance();
+ return doc.createElementNS(version.getHeader().getNamespaceURI(),
+ version.getHeader().getLocalPart());
+ }
+ };
+ }
+ return headerFactory;
+ }
+
+ protected void setHeaderFactory(HeaderFactory factory) {
+ headerFactory = factory;
+ }
+ public interface HeaderFactory {
+ Element getHeader();
+ }
}
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=537890&r1=537889&r2=537890
==============================================================================
--- 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 Mon May 14 08:48:29 2007
@@ -243,9 +243,14 @@
message.put(REQUESTOR_ROLE, Boolean.valueOf(requestor));
String mapProperty = getMAPProperty(requestor, outbound);
AddressingPropertiesImpl maps = getMAPs(requestor, outbound, exposeAs);
- Element header = control.createMock(Element.class);
-// message.setHeaders(Element.class, header);
-// List<Header> header = message.getHeaders();
+ final Element header = control.createMock(Element.class);
+ codec.setHeaderFactory(new MAPCodec.HeaderFactory() {
+ public Element getHeader() {
+ return header;
+ }
+ });
+ List<Header> headers = new ArrayList<Header>();
+ message.put(Header.HEADER_LIST, headers);
JAXBContext jaxbContext = control.createMock(JAXBContext.class);
ContextUtils.setJAXBContext(jaxbContext);
VersionTransformer.Names200408.setJAXBContext(jaxbContext);
@@ -258,8 +263,7 @@
invalidMAP,
preExistingSOAPAction);
} else {
- List<Header> hdr = message.getHeaders();
- setUpDecode(message, hdr, maps, mapProperty, requestor);
+ setUpDecode(message, headers, maps, mapProperty, requestor);
}
control.replay();
return message;
@@ -273,16 +277,6 @@
boolean invalidMAP,
boolean preExistingSOAPAction) throws Exception {
message.put(mapProperty, maps);
-// NodeList headerElements = control.createMock(NodeList.class);
-// header.getElementsByTagNameNS(EasyMock.eq(maps.getNamespaceURI()),
-// EasyMock.eq("*"));
-// EasyMock.expectLastCall().andReturn(headerElements);
-// headerElements.getLength();
-// EasyMock.expectLastCall().andReturn(0);
-// header.setAttributeNS(EasyMock.eq("http://www.w3.org/2000/xmlns/"),
-// EasyMock.eq("xmlns:" + Names.WSA_NAMESPACE_PREFIX),
-// EasyMock.eq(maps.getNamespaceURI()));
-// EasyMock.expectLastCall();
Marshaller marshaller = control.createMock(Marshaller.class);
ContextUtils.getJAXBContext().createMarshaller();
EasyMock.expectLastCall().andReturn(marshaller);
@@ -294,13 +288,28 @@
: expectedValues.length;
for (int i = 0; i < expectedMarshals; i++) {
EasyMock.reportMatcher(matcher);
-
-
-// Element elem = null;
EasyMock.eq(header);
marshaller.marshal(null, header);
EasyMock.expectLastCall();
}
+
+ NodeList children = control.createMock(NodeList.class);
+ header.getChildNodes();
+ EasyMock.expectLastCall().andReturn(children);
+ children.getLength();
+ EasyMock.expectLastCall().andReturn(1);
+ Element child = control.createMock(Element.class);
+ children.item(0);
+ EasyMock.expectLastCall().andReturn(child);
+ child.setAttributeNS(EasyMock.eq("http://www.w3.org/2000/xmlns/"),
+ EasyMock.eq("xmlns:" + Names.WSA_NAMESPACE_PREFIX),
+ EasyMock.eq(maps.getNamespaceURI()));
+ EasyMock.expectLastCall();
+ child.getNamespaceURI();
+ EasyMock.expectLastCall().andReturn("bar");
+ child.getLocalName();
+ EasyMock.expectLastCall().andReturn("foo");
+
mimeHeaders = new HashMap<String, List<String>>();
message.put(MIME_HEADERS, mimeHeaders);
if (preExistingSOAPAction) {
@@ -317,25 +326,20 @@
}
private void setUpDecode(SoapMessage message,
- List<Header> header,
+ List<Header> headers,
AddressingPropertiesImpl maps,
String mapProperty,
boolean requestor) throws Exception {
Unmarshaller unmarshaller = control.createMock(Unmarshaller.class);
ContextUtils.getJAXBContext().createUnmarshaller();
EasyMock.expectLastCall().andReturn(unmarshaller);
- NodeList headerElements = control.createMock(NodeList.class);
-// header.getChildNodes();
- EasyMock.expectLastCall().andReturn(headerElements);
String uri = maps.getNamespaceURI();
boolean exposedAsNative = Names.WSA_NAMESPACE_NAME.equals(uri);
boolean exposedAs200408 =
VersionTransformer.Names200408.WSA_NAMESPACE_NAME.equals(uri);
assertTrue("unexpected namescape URI: " + uri,
exposedAsNative || exposedAs200408);
- headerElements.getLength();
- EasyMock.expectLastCall().andReturn(6);
- setUpHeaderDecode(headerElements,
+ setUpHeaderDecode(headers,
uri,
Names.WSA_MESSAGEID_NAME,
exposedAsNative
@@ -343,7 +347,7 @@
: AttributedURI.class,
0,
unmarshaller);
- setUpHeaderDecode(headerElements,
+ setUpHeaderDecode(headers,
uri,
Names.WSA_TO_NAME,
exposedAsNative
@@ -351,7 +355,7 @@
: AttributedURI.class,
1,
unmarshaller);
- setUpHeaderDecode(headerElements,
+ setUpHeaderDecode(headers,
uri,
Names.WSA_REPLYTO_NAME,
exposedAsNative
@@ -359,7 +363,7 @@
: VersionTransformer.Names200408.EPR_TYPE,
2,
unmarshaller);
- setUpHeaderDecode(headerElements,
+ setUpHeaderDecode(headers,
uri,
Names.WSA_FAULTTO_NAME,
exposedAsNative
@@ -367,7 +371,7 @@
: VersionTransformer.Names200408.EPR_TYPE,
3,
unmarshaller);
- setUpHeaderDecode(headerElements,
+ setUpHeaderDecode(headers,
uri,
Names.WSA_RELATESTO_NAME,
exposedAsNative
@@ -375,7 +379,7 @@
: Relationship.class,
4,
unmarshaller);
- setUpHeaderDecode(headerElements,
+ setUpHeaderDecode(headers,
uri,
Names.WSA_ACTION_NAME,
exposedAsNative
@@ -385,7 +389,7 @@
unmarshaller);
}
- private <T> void setUpHeaderDecode(NodeList headerElements,
+ private <T> void setUpHeaderDecode(List<Header> headers,
String uri,
String name,
Class<T> clz,
@@ -393,8 +397,7 @@
Unmarshaller unmarshaller)
throws Exception {
Element headerElement = control.createMock(Element.class);
- headerElements.item(index);
- EasyMock.expectLastCall().andReturn(headerElement).times(2);
+ headers.add(new Header(new QName(uri, name), headerElement));
headerElement.getNamespaceURI();
EasyMock.expectLastCall().andReturn(uri);
headerElement.getLocalName();
@@ -518,7 +521,6 @@
Object value = expectedValues[expectedIndex];
boolean ret = false;
expectedIndex++;
- System.out.println("Expected index is : " + expectedIndex);
if (expectedIndex == 5 && !expectRelatesTo) {
return true;
}
@@ -532,7 +534,7 @@
}
public void appendTo(StringBuffer buffer) {
- buffer.append("JAXBElements did not match");
+ buffer.append("JAXBElements did not match[" + expectedIndex + "]");
}
private boolean compare(Object a, Object b) {