You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by em...@apache.org on 2010/10/12 11:32:38 UTC
svn commit: r1021707 - in /cxf/trunk:
rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_disable/WSADisableTest.java
Author: ema
Date: Tue Oct 12 09:32:38 2010
New Revision: 1021707
URL: http://svn.apache.org/viewvc?rev=1021707&view=rev
Log:
[CXF-3060]:Made the AddressingFeature(true,true) work when the wsa policy is not enforced
Modified:
cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_disable/WSADisableTest.java
Modified: cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java?rev=1021707&r1=1021706&r2=1021707&view=diff
==============================================================================
--- cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java (original)
+++ cxf/trunk/rt/ws/addr/src/main/java/org/apache/cxf/ws/addressing/MAPAggregator.java Tue Oct 12 09:32:38 2010
@@ -574,6 +574,38 @@ public class MAPAggregator extends Abstr
&& !getWSAddressingFeature(message).isAddressingRequired()) {
assertAddressing(message);
}
+ //CXF-3060 :If wsa policy is not enforced, AddressingProperties map is null and
+ // AddressingFeature.isRequired, requestor checks inbound message and throw exception
+ if (null == theMaps
+ && !ContextUtils.isOutbound(message)
+ && ContextUtils.isRequestor(message)
+ && getWSAddressingFeature(message) != null
+ && getWSAddressingFeature(message).isAddressingRequired()) {
+ boolean missingWsaHeader = false;
+ AssertionInfoMap aim = message.get(AssertionInfoMap.class);
+ if (aim == null || aim.size() == 0) {
+ missingWsaHeader = true;
+ }
+ if (aim != null && aim.size() > 0) {
+ missingWsaHeader = true;
+ QName[] types = new QName[] {
+ MetadataConstants.ADDRESSING_ASSERTION_QNAME,
+ MetadataConstants.USING_ADDRESSING_2004_QNAME,
+ MetadataConstants.USING_ADDRESSING_2005_QNAME,
+ MetadataConstants.USING_ADDRESSING_2006_QNAME
+ };
+ for (QName type : types) {
+ if (aim.containsKey(type) && aim.get(type).size() > 0) {
+ missingWsaHeader = false;
+ }
+ }
+ }
+ if (missingWsaHeader) {
+ String reason = BUNDLE.getString("MISSING_ACTION_MESSAGE");
+ throw new SoapFault(reason, new QName(Names.WSA_NAMESPACE_NAME,
+ Names.HEADER_REQUIRED_NAME));
+ }
+ }
}
return continueProcessing;
}
Modified: cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_disable/WSADisableTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_disable/WSADisableTest.java?rev=1021707&r1=1021706&r2=1021707&view=diff
==============================================================================
--- cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_disable/WSADisableTest.java (original)
+++ cxf/trunk/systests/ws-specs/src/test/java/org/apache/cxf/systest/ws/addr_disable/WSADisableTest.java Tue Oct 12 09:32:38 2010
@@ -117,6 +117,25 @@ public class WSADisableTest extends Abst
//expected
}
}
+
+ //CXF-3060
+ @Test
+ public void testDisableServerEnableClientRequired() throws Exception {
+ AddNumbersPortType port = getService().getAddNumbersPort(new AddressingFeature(true, true));
+
+ ((BindingProvider)port).getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
+ "http://localhost:" + PORT + "/jaxws/add");
+ try {
+ port.addNumbers(1, 2);
+ fail("Expected missing WSA header exception");
+ } catch (Exception e) {
+ String expected = "A required header representing a Message Addressing"
+ + " Property is not present";
+ assertTrue("Caught unexpected exception : " + e.getMessage(),
+ e.getMessage().indexOf(expected) > -1);
+ }
+ }
+
private AddNumbersService getService() {
URL wsdl = getClass().getResource("/wsdl_systest_wsspec/add_numbers.wsdl");