Author: barrettj
Date: Thu May  6 15:09:55 2010
New Revision: 941769

URL: http://svn.apache.org/viewvc?rev=941769&view=rev
Log:
Add enforcement of Addressing.required on the client side.  Patch submitted by 
Katherine Sanders.

Modified:
    
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java
    
axis/axis2/java/core/trunk/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingValidationHandlerTest.java
    
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchAddressingFeatureTest.java
    
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchSubmissionAddressingFeatureTest.java
    
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingFeatureTest.java
    
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxySubmissionAddressingFeatureTest.java
    
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
    
axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java

Modified: 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java?rev=941769&r1=941768&r2=941769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/addressing/src/org/apache/axis2/handlers/addressing/AddressingValidationHandler.java
 Thu May  6 15:09:55 2010
@@ -65,26 +65,35 @@ public class AddressingValidationHandler
     }
 
     /**
-     * Check that if the wsaddressing="required" attribute exists on the 
service definition or
-     * <wsaw:UsingAddressing wsdl:required="true" /> was found in the WSDL 
that WS-Addressing
-     * headers were found on the inbound message
+     * Check that if the wsaddressing="required" attribute exists on the 
service definition
+     * (or AddressingFeature on the client) or <wsaw:UsingAddressing 
wsdl:required="true" />
+     * was found in the WSDL (provider side only) that WS-Addressing headers 
were found on
+     * the inbound message.
      */
     private void checkUsingAddressing(MessageContext msgContext)
             throws AxisFault {
+        String addressingFlag;
        AxisDescription ad = msgContext.getAxisService();
         if (ad == null) {
+            // On client side, get required value from the message context
+            // (set by AddressingConfigurator).
+            // We do not use the UsingAddressing required attribute on the
+            // client side since it is not generated/processed by java tooling.
+            addressingFlag = 
AddressingHelper.getAddressingRequirementParemeterValue(msgContext);
             if (log.isTraceEnabled()) {
-                log.trace("checkUsingAddressing: axisService null, cannot 
check UsingAddressing");
+                log.trace("checkUsingAddressing: WSAddressingFlag from 
MessageContext=" + addressingFlag);
+            }
+        } else {
+            // On provider side, get required value from AxisOperation
+            // (set by AddressingConfigurator and UsingAddressing WSDL 
processing).
+            if(msgContext.getAxisOperation()!=null){
+                  ad = msgContext.getAxisOperation();
+            }
+            addressingFlag =
+                AddressingHelper.getAddressingRequirementParemeterValue(ad);
+            if (log.isTraceEnabled()) {
+                log.trace("checkUsingAddressing: WSAddressingFlag from 
AxisOperation=" + addressingFlag);
             }
-            return;
-        }
-        if(msgContext.getAxisOperation()!=null){
-               ad = msgContext.getAxisOperation();
-        }
-        String addressingFlag =
-            AddressingHelper.getAddressingRequirementParemeterValue(ad);
-        if (log.isTraceEnabled()) {
-            log.trace("checkUsingAddressing: WSAddressingFlag=" + 
addressingFlag);
         }
         if (AddressingConstants.ADDRESSING_REQUIRED.equals(addressingFlag)) {
             
AddressingFaultsHelper.triggerMessageAddressingRequiredFault(msgContext,

Modified: 
axis/axis2/java/core/trunk/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingValidationHandlerTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingValidationHandlerTest.java?rev=941769&r1=941768&r2=941769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingValidationHandlerTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/addressing/test/org/apache/axis2/handlers/addressing/AddressingValidationHandlerTest.java
 Thu May  6 15:09:55 2010
@@ -127,4 +127,27 @@ public class AddressingValidationHandler
         }
         fail("Validated message with missing message ID!");
     }
+    
+    public void testCheckUsingAdressingOnClient() throws Exception {
+        // Make addressing required using the same property as the 
AddressingConfigurator
+        MessageContext mc = new MessageContext();
+        mc.setProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER, 
AddressingConstants.ADDRESSING_REQUIRED);
+        
+        // Invoke the in handler for a message without addressing headers
+        
mc.setConfigurationContext(ConfigurationContextFactory.createEmptyConfigurationContext());
+        StAXSOAPModelBuilder omBuilder = 
testUtil.getOMBuilder("addressingDisabledTest.xml");
+        mc.setEnvelope(omBuilder.getSOAPEnvelope());
+        inHandler.invoke(mc);
+        
+        // Check the correct exception is thrown by the validation handler
+        try {
+            validationHandler.invoke(mc);
+            fail("An AxisFault should have been thrown due to the absence of 
addressing headers.");
+        } catch (AxisFault axisFault) {
+            // Confirm this is the correct fault
+            assertEquals("Wrong fault code",
+                         new QName(Final.FAULT_ADDRESSING_HEADER_REQUIRED),
+                         axisFault.getFaultCode());
+        }
+    }
 }

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchAddressingFeatureTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchAddressingFeatureTest.java?rev=941769&r1=941768&r2=941769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchAddressingFeatureTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchAddressingFeatureTest.java
 Thu May  6 15:09:55 2010
@@ -88,10 +88,12 @@ public class DispatchAddressingFeatureTe
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
         String responses = (String) 
request.getProperty(AddressingConstants.WSAM_INVOCATION_PATTERN_PARAMETER_NAME);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertNull(version);
         assertTrue(disabled);
         assertNull(responses);
+        assertNull(required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -121,10 +123,12 @@ public class DispatchAddressingFeatureTe
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
         String responses = (String) 
request.getProperty(AddressingConstants.WSAM_INVOCATION_PATTERN_PARAMETER_NAME);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertEquals(Final.WSA_NAMESPACE, version);
         assertFalse(disabled);
         assertEquals("Wrong default responses", 
AddressingConstants.WSAM_INVOCATION_PATTERN_BOTH, responses);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_UNSPECIFIED, required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -155,9 +159,11 @@ public class DispatchAddressingFeatureTe
         
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertEquals(Final.WSA_NAMESPACE, version);
         assertTrue(disabled);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_UNSPECIFIED, required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -167,6 +173,43 @@ public class DispatchAddressingFeatureTe
         assertNull(epr);
     }
     
+    /*
+     * Test requiring the Addressing feature.
+     */
+    public void testRequiredAddressingFeature() throws Exception {
+        // Set the feature to be required
+        AddressingFeature feature = new AddressingFeature(true, true);
+                
+        Service svc = Service.create(new QName("http://test";, "TestService"));
+        svc.addPort(new QName("http://test";, "TestPort"), 
SOAPBinding.SOAP11HTTP_BINDING, "http://localhost";);
+        Dispatch<Source> d = svc.createDispatch(w3cEPR, Source.class, 
Service.Mode.PAYLOAD, feature);
+        
+        d.invoke(null);
+        
+        TestClientInvocationController testController = 
getInvocationController();
+        InvocationContext ic = testController.getInvocationContext();
+        MessageContext request = ic.getRequestMessageContext();
+        
+        String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+        Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String responses = (String) 
request.getProperty(AddressingConstants.WSAM_INVOCATION_PATTERN_PARAMETER_NAME);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
+        
+        assertEquals(Final.WSA_NAMESPACE, version);
+        assertFalse(disabled);
+        assertEquals("Wrong default responses", 
AddressingConstants.WSAM_INVOCATION_PATTERN_BOTH, responses);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_REQUIRED, required);
+        
+        org.apache.axis2.context.MessageContext axis2Request =
+            request.getAxisMessageContext();
+        org.apache.axis2.addressing.EndpointReference epr =
+            axis2Request.getTo();
+        
+        OMElement omElement =
+            EndpointReferenceHelper.toOM(OMF, epr, ELEMENT200508, 
Final.WSA_NAMESPACE);
+        assertXMLEqual(w3cEPR.toString(), omElement.toString());
+    }
+    
     // Test configurations that are not allowed with the AddressingFeature
     public void testInvalidAddressingFeature() {
         // Use the default feature config

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchSubmissionAddressingFeatureTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchSubmissionAddressingFeatureTest.java?rev=941769&r1=941768&r2=941769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchSubmissionAddressingFeatureTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/dispatch/DispatchSubmissionAddressingFeatureTest.java
 Thu May  6 15:09:55 2010
@@ -87,9 +87,11 @@ public class DispatchSubmissionAddressin
         
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertNull(version);
         assertTrue(disabled);
+        assertNull(required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -118,9 +120,11 @@ public class DispatchSubmissionAddressin
         
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertEquals(Submission.WSA_NAMESPACE, version);
         assertFalse(disabled);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_UNSPECIFIED, required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -151,9 +155,11 @@ public class DispatchSubmissionAddressin
         
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertEquals(Submission.WSA_NAMESPACE, version);
         assertTrue(disabled);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_UNSPECIFIED, required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -163,6 +169,41 @@ public class DispatchSubmissionAddressin
         assertNull(epr);
     }
     
+    /*
+     * Test requiring the SubmissionAddressing feature.
+     */
+    public void testRequiredSubmissionAddressingFeature() throws Exception {
+        // Set the feature to be required
+        SubmissionAddressingFeature feature = new 
SubmissionAddressingFeature(true, true);
+                
+        Service svc = Service.create(new QName("http://test";, "TestService"));
+        svc.addPort(new QName("http://test";, "TestPort"), 
SOAPBinding.SOAP11HTTP_BINDING, "http://localhost";);
+        Dispatch<Source> d = svc.createDispatch(subEPR, Source.class, 
Service.Mode.PAYLOAD, feature);
+        
+        d.invoke(null);
+        
+        TestClientInvocationController testController = 
getInvocationController();
+        InvocationContext ic = testController.getInvocationContext();
+        MessageContext request = ic.getRequestMessageContext();
+        
+        String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+        Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
+        
+        assertEquals(Submission.WSA_NAMESPACE, version);
+        assertFalse(disabled);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_REQUIRED, required);
+        
+        org.apache.axis2.context.MessageContext axis2Request =
+            request.getAxisMessageContext();
+        org.apache.axis2.addressing.EndpointReference epr =
+            axis2Request.getTo();
+        
+        OMElement omElement =
+            EndpointReferenceHelper.toOM(OMF, epr, ELEMENT200408, 
Submission.WSA_NAMESPACE);
+        assertXMLEqual(subEPR.toString(), omElement.toString());
+    }
+    
     // Test configurations that are not allowed with the 
SubmissionAddressingFeature
     public void testInvalidSubmissionAddressingFeature() {
         // Use the default feature config

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingFeatureTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingFeatureTest.java?rev=941769&r1=941768&r2=941769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingFeatureTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingFeatureTest.java
 Thu May  6 15:09:55 2010
@@ -142,7 +142,7 @@ public class ProxyAddressingFeatureTest 
      * Test disabling the Addressing feature.
      */
     public void testDisabledAddressingFeature() {
-        // Use the default feature config
+        // Set the feature to be disabled.
         AddressingFeature feature = new AddressingFeature(false);
         
         Service svc = Service.create(new QName("http://test";, 
"ProxyAddressingService"));
@@ -172,6 +172,43 @@ public class ProxyAddressingFeatureTest 
     }
     
     /*
+     * Test requiring the AddressingFeature.
+     */
+    public void testRequiredAddressingFeature() throws Exception {
+        // Set the feature to be required.
+        AddressingFeature feature = new AddressingFeature(true, true);
+        
+        Service svc = Service.create(new QName("http://test";, 
"ProxyAddressingService"));
+        ProxyAddressingService proxy = svc.getPort(w3cEPR, 
ProxyAddressingService.class, feature);
+        assertNotNull(proxy);
+        
+        proxy.doSomething("12345");
+        
+        TestClientInvocationController testController = 
getInvocationController();
+        InvocationContext ic = testController.getInvocationContext();
+        MessageContext request = ic.getRequestMessageContext();
+        
+        String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+        Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String responses = (String) 
request.getProperty(AddressingConstants.WSAM_INVOCATION_PATTERN_PARAMETER_NAME);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
+        
+        assertEquals(Final.WSA_NAMESPACE, version);
+        assertFalse(disabled);
+        assertEquals("Wrong default responses", 
AddressingConstants.WSAM_INVOCATION_PATTERN_BOTH, responses);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_REQUIRED, required);
+        
+        org.apache.axis2.context.MessageContext axis2Request =
+            request.getAxisMessageContext();
+        org.apache.axis2.addressing.EndpointReference epr =
+            axis2Request.getTo();
+        
+        OMElement omElement =
+            EndpointReferenceHelper.toOM(OMF, epr, ELEMENT200508, 
Final.WSA_NAMESPACE);
+        assertXMLEqual(w3cEPR.toString(), omElement.toString());
+    }
+    
+    /*
      * Test the default configuration of the AddressingFeature.
      */
     public void testInvalidAddressingFeature() {

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxySubmissionAddressingFeatureTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxySubmissionAddressingFeatureTest.java?rev=941769&r1=941768&r2=941769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxySubmissionAddressingFeatureTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxySubmissionAddressingFeatureTest.java
 Thu May  6 15:09:55 2010
@@ -85,9 +85,11 @@ public class ProxySubmissionAddressingFe
         
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertNull(version);
         assertTrue(disabled);
+        assertNull(required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -116,9 +118,11 @@ public class ProxySubmissionAddressingFe
         
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertEquals(Submission.WSA_NAMESPACE, version);
         assertFalse(disabled);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_UNSPECIFIED, required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -149,9 +153,11 @@ public class ProxySubmissionAddressingFe
         
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
         
         assertEquals(Submission.WSA_NAMESPACE, version);
         assertTrue(disabled);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_UNSPECIFIED, required);
         
         org.apache.axis2.context.MessageContext axis2Request =
             request.getAxisMessageContext();
@@ -162,6 +168,41 @@ public class ProxySubmissionAddressingFe
     }
     
     /*
+     * Test requiring the SubmissionAddressingFeature.
+     */
+    public void testRequiredSubmissionAddressingFeature() throws Exception {
+        // Set the feature to be required.
+        SubmissionAddressingFeature feature = new 
SubmissionAddressingFeature(true, true);
+        
+        Service svc = Service.create(new QName("http://test";, 
"ProxyAddressingService"));
+        ProxyAddressingService proxy = svc.getPort(subEPR, 
ProxyAddressingService.class, feature);
+        assertNotNull(proxy);
+        
+        proxy.doSomething("12345");
+        
+        TestClientInvocationController testController = 
getInvocationController();
+        InvocationContext ic = testController.getInvocationContext();
+        MessageContext request = ic.getRequestMessageContext();
+        
+        String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+        Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
+        
+        assertEquals(Submission.WSA_NAMESPACE, version);
+        assertFalse(disabled);
+        assertEquals("Wrong required attribute", 
AddressingConstants.ADDRESSING_REQUIRED, required);
+        
+        org.apache.axis2.context.MessageContext axis2Request =
+            request.getAxisMessageContext();
+        org.apache.axis2.addressing.EndpointReference epr =
+            axis2Request.getTo();
+        
+        OMElement omElement =
+            EndpointReferenceHelper.toOM(OMF, epr, ELEMENT200408, 
Submission.WSA_NAMESPACE);
+        assertXMLEqual(subEPR.toString(), omElement.toString());
+    }
+    
+    /*
      * Test the default configuration of the SubmissionAddressingFeature.
      */
     public void testInvalidSubmissionAddressingFeature() {

Modified: 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java?rev=941769&r1=941768&r2=941769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/kernel/src/org/apache/axis2/addressing/AddressingHelper.java
 Thu May  6 15:09:55 2010
@@ -158,7 +158,22 @@ public class AddressingHelper {
                value = value.trim();
             }
             if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
-                log.debug("getAddressingRequirementParemeterValue: value: '" + 
value + "'");
+                
log.debug("getAddressingRequirementParemeterValue(AxisDescription): value: '" + 
value + "'");
+            }
+        }
+
+        if (value == null || "".equals(value)) {
+            value = AddressingConstants.ADDRESSING_UNSPECIFIED;
+        }
+        return value;
+    }
+
+    public static String getAddressingRequirementParemeterValue(MessageContext 
mc){
+        String value = "";
+        if (mc != null) {
+            value = 
mc.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER).toString();
+            if (LoggingControl.debugLoggingAllowed && log.isDebugEnabled()) {
+                
log.debug("getAddressingRequirementParemeterValue(MessageContext): value: '" + 
value + "'");
             }
         }
 

Modified: 
axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java?rev=941769&r1=941768&r2=941769&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/kernel/test/org/apache/axis2/addressing/AddressingHelperTest.java
 Thu May  6 15:09:55 2010
@@ -21,6 +21,10 @@ package org.apache.axis2.addressing;
 
 import junit.framework.TestCase;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.InOutAxisOperation;
+import org.apache.axis2.description.Parameter;
 
 public class AddressingHelperTest extends TestCase {
 
@@ -127,4 +131,51 @@ public class AddressingHelperTest extend
         mc.setReplyTo(new 
EndpointReference(AddressingConstants.Final.WSA_NONE_URI));
         assertTrue(AddressingHelper.isSyncFaultAllowed(mc));
     }
+    
+    public void testGetInvocationPatternParameterValueFromAxisOperation() 
throws Exception {
+        AxisService axisService = new AxisService();
+        AxisOperation axisOperation = new InOutAxisOperation();
+        axisService.addOperation(axisOperation);
+        
+        // Set invocation pattern on AxisOperation only 
+        AddressingHelper.setInvocationPatternParameterValue(axisOperation,
+                AddressingConstants.WSAM_INVOCATION_PATTERN_ASYNCHRONOUS);
+        
+        String value = AddressingHelper
+                .getInvocationPatternParameterValue(axisOperation);
+        assertEquals(value, 
AddressingConstants.WSAM_INVOCATION_PATTERN_ASYNCHRONOUS);
+    }
+    
+    public void testGetInvocationPatternParameterValueFromAxisService() throws 
Exception {
+        AxisService axisService = new AxisService();
+        AxisOperation axisOperation = new InOutAxisOperation();
+        axisService.addOperation(axisOperation);
+
+        // Set invocation pattern on AxisService only
+        axisService.addParameter(new Parameter(
+                AddressingConstants.WSAM_INVOCATION_PATTERN_PARAMETER_NAME,
+                AddressingConstants.WSAM_INVOCATION_PATTERN_ASYNCHRONOUS));
+
+        String value = AddressingHelper
+                .getInvocationPatternParameterValue(axisOperation);
+        assertEquals(value, 
AddressingConstants.WSAM_INVOCATION_PATTERN_ASYNCHRONOUS);
+    }
+    
+    public void testGetInvocationPatternParameterValueFromBoth() throws 
Exception {
+        AxisService axisService = new AxisService();
+        AxisOperation axisOperation = new InOutAxisOperation();
+        axisService.addOperation(axisOperation);
+
+        // Set invocation pattern on AxisOperation and AxisService 
+        AddressingHelper.setInvocationPatternParameterValue(axisOperation,
+                AddressingConstants.WSAM_INVOCATION_PATTERN_ASYNCHRONOUS);
+        axisService.addParameter(new Parameter(
+                AddressingConstants.WSAM_INVOCATION_PATTERN_PARAMETER_NAME,
+                AddressingConstants.WSAM_INVOCATION_PATTERN_SYNCHRONOUS));
+
+        // Check that the AxisOperation value has precedence over the 
AxisService value
+        String value = AddressingHelper
+                .getInvocationPatternParameterValue(axisOperation);
+        assertEquals(value, 
AddressingConstants.WSAM_INVOCATION_PATTERN_ASYNCHRONOUS);
+    }
 }


Reply via email to