You are viewing a plain text version of this content. The canonical link for it is here.
Posted to addressing-dev@ws.apache.org by gd...@apache.org on 2006/01/15 06:20:31 UTC
svn commit: r369180 - in /webservices/addressing/trunk:
src/org/apache/axis/message/addressing/
src/org/apache/axis/message/addressing/handler/
src/org/apache/axis/message/addressing/util/
test/org/apache/ws/addressing/handler/
Author: gdaniels
Date: Sat Jan 14 21:20:18 2006
New Revision: 369180
URL: http://svn.apache.org/viewcvs?rev=369180&view=rev
Log:
* Throw faults when duplicate headers detected
* Check for W3C namespace in appropriate places
* Send a default wsa:Action even if nothing specified (should this be ""?), since the header is (unnecessarily, IMO) mandatory
* Fix test and test message to accurately reflect a) soap namespaces on attributes, and b) targeting of headers
Modified:
webservices/addressing/trunk/src/org/apache/axis/message/addressing/AddressingHeaders.java
webservices/addressing/trunk/src/org/apache/axis/message/addressing/EndpointReference.java
webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java
webservices/addressing/trunk/src/org/apache/axis/message/addressing/util/AddressingUtils.java
webservices/addressing/trunk/test/org/apache/ws/addressing/handler/AbstractAddressingHandlerTestCase.java
webservices/addressing/trunk/test/org/apache/ws/addressing/handler/ServerSideAddressingHandlerTestCase.java
webservices/addressing/trunk/test/org/apache/ws/addressing/handler/testRequest.xml
Modified: webservices/addressing/trunk/src/org/apache/axis/message/addressing/AddressingHeaders.java
URL: http://svn.apache.org/viewcvs/webservices/addressing/trunk/src/org/apache/axis/message/addressing/AddressingHeaders.java?rev=369180&r1=369179&r2=369180&view=diff
==============================================================================
--- webservices/addressing/trunk/src/org/apache/axis/message/addressing/AddressingHeaders.java (original)
+++ webservices/addressing/trunk/src/org/apache/axis/message/addressing/AddressingHeaders.java Sat Jan 14 21:20:18 2006
@@ -17,6 +17,7 @@
package org.apache.axis.message.addressing;
import org.apache.axis.MessageContext;
+import org.apache.axis.AxisFault;
import org.apache.axis.message.MessageElement;
import org.apache.axis.message.addressing.util.AddressingUtils;
import org.apache.axis.message.addressing.util.TextExtractor;
@@ -240,18 +241,52 @@
if (localName.equals(Constants.MESSAGE_ID)) {
messageID = new MessageID(headerElement);
} else if (localName.equals(Constants.TO)) {
+ if (to != null) {
+ throw new AxisFault("Client.duplicateToHeader",
+ "duplicate To header",
+ null, null);
+ }
to = new To(headerElement);
- // set the WSA namespace URI in the MessageContext, so we'll know how to serialize types associated with this request
- MessageContext msgContext = MessageContext.getCurrentContext();
- if ( msgContext != null ) { msgContext.setProperty( Constants.ENV_ADDRESSING_NAMESPACE_URI, name.getURI() ); }
+ // set the WSA namespace URI in the MessageContext,
+ // so we'll know how to serialize types associated
+ // with this request
+ MessageContext msgContext =
+ MessageContext.getCurrentContext();
+ if ( msgContext != null ) {
+ msgContext.setProperty(
+ Constants.ENV_ADDRESSING_NAMESPACE_URI,
+ name.getURI());
+ }
} else if (localName.equals(Constants.ACTION)) {
- URI unspecified = new org.apache.axis.types.URI(TextExtractor.getText(headerElement), permitParseNonSpecificAction);
+ if (action != null) {
+ throw new AxisFault("Client.duplicateActionHeader",
+ "duplicate Action header",
+ null, null);
+ }
+ URI unspecified = new org.apache.axis.types.URI(
+ TextExtractor.getText(headerElement),
+ permitParseNonSpecificAction);
action = new Action(new URI(unspecified));
} else if (localName.equals(Constants.FROM)) {
+ if (from != null) {
+ throw new AxisFault("Client.duplicateFromHeader",
+ "duplicate From header",
+ null, null);
+ }
from = new From(headerElement);
} else if (localName.equals(Constants.REPLY_TO)) {
+ if (replyTo != null) {
+ throw new AxisFault("Client.duplicateReplyToHeader",
+ "duplicate ReplyTo header",
+ null, null);
+ }
replyTo = new ReplyTo(headerElement);
} else if (localName.equals(Constants.FAULT_TO)) {
+ if (faultTo != null) {
+ throw new AxisFault("Client.duplicateFaultToHeader",
+ "more than one FaultTo header",
+ null, null);
+ }
faultTo = new FaultTo(headerElement);
} else if (localName.equals(Constants.RECIPIENT)) {
recipient = new Recipient(headerElement);
Modified: webservices/addressing/trunk/src/org/apache/axis/message/addressing/EndpointReference.java
URL: http://svn.apache.org/viewcvs/webservices/addressing/trunk/src/org/apache/axis/message/addressing/EndpointReference.java?rev=369180&r1=369179&r2=369180&view=diff
==============================================================================
--- webservices/addressing/trunk/src/org/apache/axis/message/addressing/EndpointReference.java (original)
+++ webservices/addressing/trunk/src/org/apache/axis/message/addressing/EndpointReference.java Sat Jan 14 21:20:18 2006
@@ -156,9 +156,14 @@
for (int i=0;i<children.getLength();i++) {
Node child = children.item(i);
if (child instanceof Element) {
- if (!AddressingUtils.isAddressingNamespaceURI(child.getNamespaceURI())) {
- // skip for now - does not currently handle extensibility elements
- continue;
+ if (!AddressingUtils.isW3CAddressingNamespaceURI(
+ child.getNamespaceURI())) {
+ if (!AddressingUtils.isAddressingNamespaceURI(
+ child.getNamespaceURI())) {
+ // skip for now - does not currently handle
+ // extensibility elements
+ continue;
+ }
}
String localName = child.getLocalName();
if (Constants.ADDRESS.equals(localName)) {
Modified: webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java
URL: http://svn.apache.org/viewcvs/webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java?rev=369180&r1=369179&r2=369180&view=diff
==============================================================================
--- webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java (original)
+++ webservices/addressing/trunk/src/org/apache/axis/message/addressing/handler/AddressingHandler.java Sat Jan 14 21:20:18 2006
@@ -164,7 +164,8 @@
resHeaders.setFrom(fromEPR);
}
}
- URI actionURI = new org.apache.axis.types.URI(AddressingUtils.getFaultActionURI(), allowNonSpecificActions);
+ URI actionURI = new org.apache.axis.types.URI(
+ AddressingUtils.getFaultActionURI(), allowNonSpecificActions);
resHeaders.setAction(new Action(new URI(actionURI)));
// process RelatesTo
@@ -259,7 +260,13 @@
if (action != null) {
URI actionURI = new org.apache.axis.types.URI(action, allowNonSpecificActions);
headers.setAction(new Action(new URI(actionURI)));
- } else if(headers.getAction() != null) {
+ } else {
+ Action act = headers.getAction();
+ if (act == null) {
+ URI actionURI = new URI("http://apache.org/axis/defaultAction");
+ headers.setAction(new Action(new URI(actionURI)));
+ }
+
msgContext.setUseSOAPAction(true);
// Make SOAP action match
msgContext.setSOAPActionURI(headers.getAction().toString());
@@ -505,7 +512,7 @@
if (replyTo != null) {
resHeaders.setReferenceProperties(replyTo.getProperties());
resHeaders.setReferenceParameters(replyTo.getParameters());
-
+
AttributedURI address = replyTo.getAddress();
if (address != null) {
String uri = address.toString();
Modified: webservices/addressing/trunk/src/org/apache/axis/message/addressing/util/AddressingUtils.java
URL: http://svn.apache.org/viewcvs/webservices/addressing/trunk/src/org/apache/axis/message/addressing/util/AddressingUtils.java?rev=369180&r1=369179&r2=369180&view=diff
==============================================================================
--- webservices/addressing/trunk/src/org/apache/axis/message/addressing/util/AddressingUtils.java (original)
+++ webservices/addressing/trunk/src/org/apache/axis/message/addressing/util/AddressingUtils.java Sat Jan 14 21:20:18 2006
@@ -121,7 +121,8 @@
while (headers.hasNext()) {
SOAPHeaderElement hElement = (SOAPHeaderElement) headers.next();
Name hName = hElement.getElementName();
- if (isAddressingNamespaceURI( hName.getURI() )) {
+ if (isAddressingNamespaceURI(hName.getURI()) ||
+ isW3CAddressingNamespaceURI(hName.getURI())) {
existingElements.add(hElement);
}
}
Modified: webservices/addressing/trunk/test/org/apache/ws/addressing/handler/AbstractAddressingHandlerTestCase.java
URL: http://svn.apache.org/viewcvs/webservices/addressing/trunk/test/org/apache/ws/addressing/handler/AbstractAddressingHandlerTestCase.java?rev=369180&r1=369179&r2=369180&view=diff
==============================================================================
--- webservices/addressing/trunk/test/org/apache/ws/addressing/handler/AbstractAddressingHandlerTestCase.java (original)
+++ webservices/addressing/trunk/test/org/apache/ws/addressing/handler/AbstractAddressingHandlerTestCase.java Sat Jan 14 21:20:18 2006
@@ -274,7 +274,7 @@
protected void checkRelatesToHeader(AddressingHeaders addrHeaders, RelatesTo[] expectedRelatesTo) {
List relatesToList = addrHeaders.getRelatesTo();
assertNotNull(relatesToList);
- assertEquals(new Integer(expectedRelatesTo.length), new Integer(relatesToList.size()));
+ assertEquals(expectedRelatesTo.length, relatesToList.size());
for (int i = 0; i < relatesToList.size(); i++) {
RelatesTo relatesTo = (RelatesTo) relatesToList.get(i);
assertEquals(expectedRelatesTo[i].getType().toString(), relatesTo.getType().toString());
Modified: webservices/addressing/trunk/test/org/apache/ws/addressing/handler/ServerSideAddressingHandlerTestCase.java
URL: http://svn.apache.org/viewcvs/webservices/addressing/trunk/test/org/apache/ws/addressing/handler/ServerSideAddressingHandlerTestCase.java?rev=369180&r1=369179&r2=369180&view=diff
==============================================================================
--- webservices/addressing/trunk/test/org/apache/ws/addressing/handler/ServerSideAddressingHandlerTestCase.java (original)
+++ webservices/addressing/trunk/test/org/apache/ws/addressing/handler/ServerSideAddressingHandlerTestCase.java Sat Jan 14 21:20:18 2006
@@ -69,8 +69,9 @@
AddressingHeaders addrHeaders = (AddressingHeaders) prop;
assertFalse(addrHeaders.isSetMustUnderstand());
checkMessageIdHeader(addrHeaders, "aaaabbbb-cccc-dddd-eeee-ffffffffffff");
- checkRelatesToHeader(addrHeaders, new RelatesTo[]{new RelatesTo("uuid:11112222-3333-4444-5555-666666666666", "{urn:testNS}testPart"),
- new RelatesTo("uuid:11112222-3333-4444-5555-999999999999", AddressingUtils.getResponseRelationshipType().toString())});
+// checkRelatesToHeader(addrHeaders, new RelatesTo[]{new RelatesTo("uuid:11112222-3333-4444-5555-666666666666", "{urn:testNS}testPart"),
+// new RelatesTo("uuid:11112222-3333-4444-5555-999999999999", AddressingUtils.getResponseRelationshipType().toString())});
+ checkRelatesToHeader(addrHeaders, new RelatesTo[]{new RelatesTo("uuid:11112222-3333-4444-5555-666666666666", "{urn:testNS}testPart")});
ReplyTo expectedReplyTo = new ReplyTo(new Address(AddressingUtils.getAnonymousRoleURI()));
expectedReplyTo.setPortType(new PortType("urn:Foo", "Test"));
expectedReplyTo.setServiceName(new ServiceNameType("urn:Bar", "Test2"));
Modified: webservices/addressing/trunk/test/org/apache/ws/addressing/handler/testRequest.xml
URL: http://svn.apache.org/viewcvs/webservices/addressing/trunk/test/org/apache/ws/addressing/handler/testRequest.xml?rev=369180&r1=369179&r2=369180&view=diff
==============================================================================
--- webservices/addressing/trunk/test/org/apache/ws/addressing/handler/testRequest.xml (original)
+++ webservices/addressing/trunk/test/org/apache/ws/addressing/handler/testRequest.xml Sat Jan 14 21:20:18 2006
@@ -1,36 +1,37 @@
<Envelope
xmlns="http://schemas.xmlsoap.org/soap/envelope/"
+ xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Header xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing">
- <wsa:MessageID actor="http://schemas.xmlsoap.org/soap/actor/next">
+ <wsa:MessageID soap:actor="http://schemas.xmlsoap.org/soap/actor/next">
uuid:aaaabbbb-cccc-dddd-eeee-ffffffffffff
</wsa:MessageID>
- <wsa:RelatesTo actor="http://schemas.xmlsoap.org/soap/actor/next" xmlns:ws="urn:testNS" RelationshipType="ws:testPart">
+ <wsa:RelatesTo soap:actor="http://schemas.xmlsoap.org/soap/actor/next" xmlns:ws="urn:testNS" RelationshipType="ws:testPart">
uuid:11112222-3333-4444-5555-666666666666
</wsa:RelatesTo>
- <wsa:ReplyTo actor="http://schemas.xmlsoap.org/soap/actor/next">
+ <wsa:ReplyTo soap:actor="http://schemas.xmlsoap.org/soap/actor/next">
<wsa:Address>http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:Address>
<wsa:PortType xmlns:ns1="urn:Foo">ns1:Test</wsa:PortType>
<wsa:ServiceName xmlns:ns1="urn:Bar">ns1:Test2</wsa:ServiceName>
</wsa:ReplyTo>
- <wsa:FaultTo actor="http://schemas.xmlsoap.org/soap/actor/next">
+ <wsa:FaultTo soap:actor="http://schemas.xmlsoap.org/soap/actor/next">
<wsa:Address>http://business456.com/deadletters</wsa:Address>
</wsa:FaultTo>
- <wsa:To actor="urn:bob" mustUnderstand="1">mailto:mike@foo.com</wsa:To>
- <wsa:Action actor="urn:bob">http://fabrikam123.com/mail#Delete</wsa:Action>
- <wsa:RelatesTo actor="urn:bob">uuid:11112222-3333-4444-5555-999999999999</wsa:RelatesTo>
- <wsa:To actor="http://schemas.xmlsoap.org/soap/actor/next" mustUnderstand="1">mailto:joe@fabrikam123.com</wsa:To>
- <wsa:From actor="http://schemas.xmlsoap.org/soap/actor/next" mustUnderstand="1">
+ <wsa:To soap:actor="urn:bob" soap:mustUnderstand="1">mailto:mike@foo.com</wsa:To>
+ <wsa:Action soap:actor="urn:bob">http://fabrikam123.com/mail#Delete</wsa:Action>
+ <wsa:RelatesTo soap:actor="urn:bob">uuid:11112222-3333-4444-5555-999999999999</wsa:RelatesTo>
+ <wsa:To soap:actor="http://schemas.xmlsoap.org/soap/actor/next" soap:mustUnderstand="1">mailto:joe@fabrikam123.com</wsa:To>
+ <wsa:From soap:actor="http://schemas.xmlsoap.org/soap/actor/next" soap:mustUnderstand="1">
<wsa:Address>http://business456.com/client1</wsa:Address>
</wsa:From>
- <wsa:Recipient actor="http://schemas.xmlsoap.org/soap/actor/next" mustUnderstand="1">
+ <wsa:Recipient soap:actor="http://schemas.xmlsoap.org/soap/actor/next" soap:mustUnderstand="1">
<wsa:Address>http://blah.com:8080/axis/services/tester</wsa:Address>
</wsa:Recipient>
- <wsa:Action actor="http://schemas.xmlsoap.org/soap/actor/next">http://foo.com/mail#Get</wsa:Action>
- <hp:ResourceID xmlns:hp="http://www/hp/com/" actor="http://schemas.xmlsoap.org/soap/actor/next" mustUnderstand="0">1234</hp:ResourceID>
+ <wsa:Action soap:actor="http://schemas.xmlsoap.org/soap/actor/next">http://foo.com/mail#Get</wsa:Action>
+ <hp:ResourceID xmlns:hp="http://www/hp/com/" soap:actor="http://schemas.xmlsoap.org/soap/actor/next" soap:mustUnderstand="0">1234</hp:ResourceID>
</Header>
<Body>
---------------------------------------------------------------------
To unsubscribe, e-mail: addressing-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: addressing-dev-help@ws.apache.org