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 2009/04/10 22:58:00 UTC
svn commit: r764052 - in /cxf/branches/2.1.x-fixes: ./
rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/
rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/
rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/
Author: dkulp
Date: Fri Apr 10 20:58:00 2009
New Revision: 764052
URL: http://svn.apache.org/viewvc?rev=764052&view=rev
Log:
Merged revisions 763931 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r763931 | eglynn | 2009-04-10 09:36:22 -0400 (Fri, 10 Apr 2009) | 2 lines
Commited patch for CXF-2167 on behalf of Andrew Dinn. Added unit test coverage also.
........
Modified:
cxf/branches/2.1.x-fixes/ (props changed)
cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
cxf/branches/2.1.x-fixes/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java
Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Apr 10 20:58:00 2009
@@ -1 +1 @@
-/cxf/trunk:743446,753380,753397,753421,754585,755365,757499,757859,757899,757935,757951,758195,758303,758308,758378,758690,758910,759890,759961,759963-759964,759966,760029,760073,760150,760171,760178,760198,760212,760456,760468,760582,760938,761094,761113,761120,761317,761759,761789,762393,762518,762567,763200,763272,763495,763854
+/cxf/trunk:743446,753380,753397,753421,754585,755365,757499,757859,757899,757935,757951,758195,758303,758308,758378,758690,758910,759890,759961,759963-759964,759966,760029,760073,760150,760171,760178,760198,760212,760456,760468,760582,760938,761094,761113,761120,761317,761759,761789,762393,762518,762567,763200,763272,763495,763854,763931
Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java?rev=764052&r1=764051&r2=764052&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java (original)
+++ cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/VersionTransformer.java Fri Apr 10 20:58:00 2009
@@ -425,7 +425,7 @@
QName exposedRelationshipType = exposed.getRelationshipType();
if (exposedRelationshipType != null) {
String internalRelationshipType =
- Names.WSA_REPLY_NAME.equals(
+ Names.WSA_REPLY_NAME.equalsIgnoreCase(
exposedRelationshipType.getLocalPart())
? Names.WSA_RELATIONSHIP_REPLY
: exposedRelationshipType.toString();
Modified: cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java?rev=764052&r1=764051&r2=764052&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java (original)
+++ cxf/branches/2.1.x-fixes/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/soap/MAPCodec.java Fri Apr 10 20:58:00 2009
@@ -726,7 +726,9 @@
* @param maps the addressing properties
*/
private void restoreExchange(SoapMessage message, AddressingProperties maps) {
- if (maps != null && maps.getRelatesTo() != null) {
+ if (maps != null
+ && maps.getRelatesTo() != null
+ && isRelationshipReply(maps.getRelatesTo())) {
Exchange correlatedExchange =
uncorrelatedExchanges.remove(maps.getRelatesTo().getValue());
if (correlatedExchange != null) {
@@ -756,6 +758,14 @@
}
+ /**
+ * @param relatesTo the current RelatesTo
+ * @return true iff the relationship type is reply
+ */
+ private boolean isRelationshipReply(RelatesToType relatesTo) {
+ return Names.WSA_RELATIONSHIP_REPLY.equals(relatesTo.getRelationshipType());
+ }
+
/**
* Marks a message as partial response
*
Modified: cxf/branches/2.1.x-fixes/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java?rev=764052&r1=764051&r2=764052&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java (original)
+++ cxf/branches/2.1.x-fixes/rt/ws/addr/src/test/java/org/apache/cxf/ws/addressing/soap/MAPCodecTest.java Fri Apr 10 20:58:00 2009
@@ -79,7 +79,9 @@
private Map<String, List<String>> mimeHeaders;
private Exchange correlatedExchange;
private boolean expectRelatesTo;
-
+ private String nonReplyRelationship;
+ private boolean expectFaultTo;
+
@Before
public void setUp() {
codec = new MAPCodec();
@@ -96,6 +98,7 @@
mimeHeaders = null;
correlatedExchange = null;
ContextUtils.setJAXBContext(null);
+ nonReplyRelationship = null;
}
@Test
@@ -243,6 +246,25 @@
verifyMessage(message, true, false, false);
}
+ @Test
+ public void testRequestorInboundNonReply() throws Exception {
+ nonReplyRelationship = "wsat:correlatedOneway";
+ SoapMessage message = setUpMessage(true, false);
+ codec.handleMessage(message);
+ control.verify();
+ verifyMessage(message, true, false, true);
+ }
+
+ @Test
+ public void testRequestorInboundNonNativeNonReply() throws Exception {
+ nonReplyRelationship = "wsat:correlatedOneway";
+ String uri = VersionTransformer.Names200408.WSA_NAMESPACE_NAME;
+ SoapMessage message = setUpMessage(true, false, false, false, uri);
+ codec.handleMessage(message);
+ control.verify();
+ verifyMessage(message, true, false, false);
+ }
+
private SoapMessage setUpMessage(boolean requestor, boolean outbound) throws Exception {
return setUpMessage(requestor, outbound, false);
}
@@ -423,8 +445,12 @@
relatesTo = new RelatesToType();
relatesTo.setValue(correlationID);
maps.setRelatesTo(relatesTo);
- correlatedExchange = new ExchangeImpl();
- codec.uncorrelatedExchanges.put(correlationID, correlatedExchange);
+ if (nonReplyRelationship == null) {
+ correlatedExchange = new ExchangeImpl();
+ codec.uncorrelatedExchanges.put(correlationID, correlatedExchange);
+ } else {
+ relatesTo.setRelationshipType(nonReplyRelationship);
+ }
}
AttributedURIType action = ContextUtils.getAttributedURI("http://foo/bar/SEI/opRequest");
maps.setAction(action);
@@ -614,18 +640,27 @@
boolean exposedAsNative) {
if (requestor) {
if (outbound) {
- String id = expectedValues[0] instanceof AttributedURIType
- ? ((AttributedURIType)expectedValues[0]).getValue()
- : expectedValues[0] instanceof AttributedURI ? ((AttributedURI)expectedValues[0])
- .getValue() : ((org.apache.cxf.ws.addressing.v200403.AttributedURI)expectedValues[0])
- .getValue();
- // assertTrue("expected correlationID : " + id + " in map: " +
- // codec.uncorrelatedExchanges,
- // codec.uncorrelatedExchanges.containsKey(id));
- assertSame("unexpected correlated exchange", codec.uncorrelatedExchanges.get(id), message
- .getExchange());
+ String id = expectedValues[1] instanceof AttributedURIType
+ ? ((AttributedURIType)expectedValues[1]).getValue()
+ : expectedValues[0] instanceof AttributedURI
+ ? ((AttributedURI)expectedValues[1]).getValue()
+ : ((org.apache.cxf.ws.addressing.v200403.AttributedURI)expectedValues[1]).getValue();
+ assertSame("unexpected correlated exchange",
+ codec.uncorrelatedExchanges.get(id),
+ message.getExchange());
} else {
- assertSame("unexpected correlated exchange", correlatedExchange, message.getExchange());
+ if (isReply(exposedAsNative)) {
+ assertSame("unexpected correlated exchange",
+ correlatedExchange,
+ message.getExchange());
+ } else {
+ assertNotSame("unexpected correlated exchange",
+ correlatedExchange,
+ message.getExchange());
+ }
+ assertEquals("expected empty uncorrelated exchange cache",
+ 0,
+ codec.uncorrelatedExchanges.size());
}
}
if (outbound) {
@@ -638,6 +673,24 @@
}
}
assertTrue("unexpected MAPs", verifyMAPs(message.get(getMAPProperty(requestor, outbound))));
+ }
+
+ private boolean isReply(boolean exposedAsNative) {
+ boolean isReply = false;
+ if (exposedAsNative) {
+ isReply =
+ Names.WSA_RELATIONSHIP_REPLY.equals(
+ ((RelatesToType)expectedValues[4]).getRelationshipType());
+ } else {
+ QName relationship =
+ expectedValues[4] instanceof Relationship
+ ? ((Relationship)expectedValues[4]).getRelationshipType()
+ : ((org.apache.cxf.ws.addressing.v200403.Relationship)expectedValues[4])
+ .getRelationshipType();
+ isReply = relationship == null
+ || Names.WSA_REPLY_NAME.equalsIgnoreCase(relationship.getLocalPart());
+ }
+ return isReply;
}
}