Author: barrettj
Date: Tue May  4 23:44:34 2010
New Revision: 941108

URL: http://svn.apache.org/viewvc?rev=941108&view=rev
Log:
Add client-side enablement for AddressingFeature.required set via 
AddressingFeature on the factory methods or via metadata.  Update associated 
tests.

Modified:
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/config/AddressingConfigurator.java
    
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.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/ProxyAddressingMetadataTest.java

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/config/AddressingConfigurator.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/config/AddressingConfigurator.java?rev=941108&r1=941107&r2=941108&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/config/AddressingConfigurator.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/config/AddressingConfigurator.java
 Tue May  4 23:44:34 2010
@@ -60,6 +60,7 @@ public class AddressingConfigurator impl
         String addressingNamespace = bnd.getAddressingNamespace();
         Boolean disableAddressing =
             (Boolean) 
messageContext.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        String addressingRequired = AddressingConstants.ADDRESSING_UNSPECIFIED;
         
         //Figure out which WS-Addressing feature was specified causing this 
configurator to run. 
         if (addressingFeature != null && submissionAddressingFeature != null) {
@@ -75,6 +76,9 @@ public class AddressingConfigurator impl
                     addressingNamespace = Final.WSA_NAMESPACE;
                 
                 disableAddressing = Boolean.FALSE;
+                if (addressingFeature.isRequired() || 
submissionAddressingFeature.isRequired()) {
+                    addressingRequired = 
AddressingConstants.ADDRESSING_REQUIRED;
+                }
             }
             else if (w3cAddressingEnabled) {
                 //Enable only 2005/08 addressing
@@ -85,6 +89,9 @@ public class AddressingConfigurator impl
                 }
                 addressingNamespace = Final.WSA_NAMESPACE;
                 disableAddressing = Boolean.FALSE;
+                if (addressingFeature.isRequired()) {
+                    addressingRequired = 
AddressingConstants.ADDRESSING_REQUIRED;
+                }
             }
             else if (submissionAddressingEnabled) {
                 //Enable only 2004/08 addressing
@@ -95,6 +102,9 @@ public class AddressingConfigurator impl
                 }
                 addressingNamespace = Submission.WSA_NAMESPACE;
                 disableAddressing = Boolean.FALSE;
+                if (submissionAddressingFeature.isRequired()) {
+                    addressingRequired = 
AddressingConstants.ADDRESSING_REQUIRED;
+                }
             }
             else {
                 //Disable 2005/08 and 2004/08 addressing
@@ -114,6 +124,9 @@ public class AddressingConfigurator impl
                 }
                 addressingNamespace = Final.WSA_NAMESPACE;
                 disableAddressing = Boolean.FALSE;
+                if (addressingFeature.isRequired()) {
+                    addressingRequired = 
AddressingConstants.ADDRESSING_REQUIRED;
+                }
             }
             else {
                 //Disable 2005/08 addressing
@@ -133,6 +146,9 @@ public class AddressingConfigurator impl
                 }
                 addressingNamespace = Submission.WSA_NAMESPACE;
                 disableAddressing = Boolean.FALSE;
+                if (submissionAddressingFeature.isRequired()) {
+                    addressingRequired = 
AddressingConstants.ADDRESSING_REQUIRED;
+                }
             }
             else {
                 //Disable 2004/08 addressing
@@ -167,6 +183,7 @@ public class AddressingConfigurator impl
 
         messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, 
addressingNamespace);                        
         
messageContext.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES,
 disableAddressing);
+        
messageContext.setProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER,
 addressingRequired);
         
         // If the Addressing feature was specified, then get the responses 
value from it and map to the value 
         // the addressing handler expects

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java?rev=941108&r1=941107&r2=941108&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/JAXWSProxyHandler.java
 Tue May  4 23:44:34 2010
@@ -412,17 +412,21 @@ public class JAXWSProxyHandler extends B
             if (implBinding.isAddressingConfigured()) {
                 String addressingNamespace = 
implBinding.getAddressingNamespace();
                 Boolean disableAddressing = new Boolean(true);
+                String addressingRequired = 
AddressingConstants.ADDRESSING_UNSPECIFIED;
                 
                 if (implBinding.isAddressingEnabled()) {
                     addressingNamespace = Final.WSA_NAMESPACE;
                     disableAddressing = new Boolean(false);
+                    if (implBinding.isAddressingRequired()) {
+                        addressingRequired = 
AddressingConstants.ADDRESSING_REQUIRED;
+                    }
                 }
                 
                 
messageContext.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, 
addressingNamespace);                        
                 
messageContext.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES,
 disableAddressing);
+                
messageContext.setProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER,
 addressingRequired);
             
-                // If the Addressing feature was specified, then get the 
responses value from it and map to the value 
-                // the addressing handler expects
+                // Get the responses value and map to the value the addressing 
handler expects
                 
messageContext.setProperty(AddressingConstants.WSAM_INVOCATION_PATTERN_PARAMETER_NAME,
 
                         
org.apache.axis2.jaxws.server.config.AddressingConfigurator.mapResponseAttributeToAddressing(implBinding.getAddressingResponses()));
             }

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=941108&r1=941107&r2=941108&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
 Tue May  4 23:44:34 2010
@@ -86,10 +86,12 @@ public class ProxyAddressingFeatureTest 
         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();
@@ -119,10 +121,12 @@ public class ProxyAddressingFeatureTest 
         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();
@@ -153,10 +157,12 @@ public class ProxyAddressingFeatureTest 
         
         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();
         org.apache.axis2.addressing.EndpointReference epr =

Modified: 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingMetadataTest.java
URL: 
http://svn.apache.org/viewvc/axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingMetadataTest.java?rev=941108&r1=941107&r2=941108&view=diff
==============================================================================
--- 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingMetadataTest.java
 (original)
+++ 
axis/axis2/java/core/trunk/modules/jaxws/test/org/apache/axis2/jaxws/client/proxy/ProxyAddressingMetadataTest.java
 Tue May  4 23:44:34 2010
@@ -62,10 +62,12 @@ public class ProxyAddressingMetadataTest
         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);
     }
 
     /**
@@ -98,6 +100,11 @@ public class ProxyAddressingMetadataTest
         String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
         assertNotNull("Version not set", version);
         assertEquals("Wrong addressing version", Final.WSA_NAMESPACE, version);
+        
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
+        assertNotNull("Required not set", required);
+        assertEquals("Wrong addressing required", 
AddressingConstants.ADDRESSING_REQUIRED, required);
+
 
         Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
         assertNotNull("Disabled not set", disabled);
@@ -109,6 +116,53 @@ public class ProxyAddressingMetadataTest
         
     }
 
+    /**
+     * Validate correct behavior when addressing is disabled via 
addressing-related metadata specified in a sparse composite, such as
+     * would be used to represent configuration via a Deployment Descriptor.
+     */
+    public void testAddressingMetadataDisabled() {
+        Map<String, List<Annotation>> map = new HashMap();
+        ArrayList<Annotation> wsFeatures = new ArrayList<Annotation>();
+        AddressingAnnot addressingFeature = new AddressingAnnot();
+        addressingFeature.setEnabled(false);
+        addressingFeature.setRequired(true);
+        addressingFeature.setResponses(Responses.NON_ANONYMOUS);
+        wsFeatures.add(addressingFeature);
+        map.put(ProxyAddressingService.class.getName(), wsFeatures);
+        DescriptionBuilderComposite serviceDBC = new 
DescriptionBuilderComposite();
+        serviceDBC.getProperties().put(MDQConstants.SEI_FEATURES_MAP, map);
+        ServiceDelegate.setServiceMetadata(serviceDBC);
+
+        Service svc = Service.create(new QName("http://test";, 
"ProxyAddressingService"));
+        ProxyAddressingService proxy = 
svc.getPort(ProxyAddressingService.class);
+        assertNotNull(proxy);
+        
+        proxy.doSomething("12345");
+        
+        TestClientInvocationController testController = 
getInvocationController();
+        InvocationContext ic = testController.getInvocationContext();
+        MessageContext request = ic.getRequestMessageContext();
+        
+        // If addressing is not enabled the version should not be set
+        String version = (String) 
request.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+        assertNull("Version set", version);
+        
+        Boolean disabled = (Boolean) 
request.getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES);
+        assertNotNull("Disabled not set", disabled);
+        assertTrue("Addressing disabled", disabled);
+
+        // Even though required=true above, per the addressing developers, 
they want to leave it set as unspecified when
+        // addressing is not enabled.
+        String required = (String) 
request.getProperty(AddressingConstants.ADDRESSING_REQUIREMENT_PARAMETER);
+        assertNotNull("Required not set", required);
+        assertEquals("Wrong addressing required", 
AddressingConstants.ADDRESSING_UNSPECIFIED, required);
+
+        String responses = (String) 
request.getProperty(AddressingConstants.WSAM_INVOCATION_PATTERN_PARAMETER_NAME);
+        assertNotNull("Responses not set", responses);
+        assertEquals("Wrong responses value", 
AddressingConstants.WSAM_INVOCATION_PATTERN_ASYNCHRONOUS, responses);
+        
+    }
+
     @WebService()
     public interface ProxyAddressingService {
     


Reply via email to