You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by ba...@apache.org on 2006/10/10 22:05:33 UTC

svn commit: r462538 - in /webservices/axis2/trunk/java/modules/jaxws: src/javax/jws/ src/org/apache/axis2/jaxws/description/ src/org/apache/axis2/jaxws/marshaller/impl/ test/org/apache/axis2/jaxws/description/

Author: barrettj
Date: Tue Oct 10 13:05:32 2006
New Revision: 462538

URL: http://svn.apache.org/viewvc?view=rev&rev=462538
Log:
Add JAX-WS default processing for WebResult, along with associated test.

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/javax/jws/WebResult.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/javax/jws/WebResult.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/javax/jws/WebResult.java?view=diff&rev=462538&r1=462537&r2=462538
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/javax/jws/WebResult.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/javax/jws/WebResult.java Tue Oct 10 13:05:32 2006
@@ -11,7 +11,7 @@
 @Target (ElementType.METHOD)
 @Retention(RetentionPolicy.RUNTIME)
 public @interface WebResult {
-	String name() default "return";
+	String name() default "";
 	String targetNamespace() default "";
 	boolean header() default false;
 	String partName() default "";

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java?view=diff&rev=462538&r1=462537&r2=462538
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/OperationDescription.java Tue Oct 10 13:05:32 2006
@@ -152,6 +152,13 @@
     // ANNOTATION: @WebResult
     private WebResult           webResultAnnotation;
     private String              webResultName;
+    private String              webResultPartName;
+    // Default value per JSR-181 MR Sec 4.5.1, pg 23
+    public static final String  WebResult_TargetNamespace_DEFAULT = "";
+    private String              webResultTargetNamespace;
+    // Default value per JSR-181 MR sec 4.5, pg 24
+    public static final Boolean WebResult_Header_DEFAULT = new Boolean(false);
+    private Boolean             webResultHeader;
     
     OperationDescription(Method method, EndpointInterfaceDescription parent) {
         // TODO: Look for WebMethod anno; get name and action off of it
@@ -527,22 +534,92 @@
         }
         return webResultAnnotation;
     }
+    
     public boolean isWebResultAnnotationSpecified() {
         return getWebResult() != null;
     }
 
-    // TODO: This method returns null if the annotation is not specified; others return default values.  I think null is the correct thing to return; change the others
+    public boolean isOperationReturningResult() {
+        return !isOneWay() && (seiMethod.getReturnType() != Void.TYPE);
+    }
+
     public String getWebResultName() {
-        if (isWebResultAnnotationSpecified() && webResultName == null) {
-            if (!DescriptionUtils.isEmpty(getWebResult().name())) {
+        if (!isOperationReturningResult()) {
+            return null;
+        }
+        if (webResultName == null) {
+            if (getWebResult() != null && !DescriptionUtils.isEmpty(getWebResult().name())) {
                 webResultName = getWebResult().name();
             }
+            else if (getSoapBindingStyle() == SOAPBinding.Style.DOCUMENT
+                    && getSoapBindingParameterStyle() == SOAPBinding.ParameterStyle.BARE) {
+                // Default for operation style DOCUMENT and paramater style BARE per JSR 181 MR Sec 4.5.1, pg 23
+                webResultName = getWebMethodOperationName() + "Response";
+                
+            }
             else {
-                // Defeault value is "return" per JSR-181 Sec. 4.5.1, p. 22
+                // Defeault value is "return" per JSR-181 MR Sec. 4.5.1, p. 22
                 webResultName = "return";
             }
         }
         return webResultName;
+    }
+    
+    public String getWebResultPartName() {
+        if (!isOperationReturningResult()) {
+            return null;
+        }
+        if (webResultPartName == null) {
+            if (getWebResult() != null && !DescriptionUtils.isEmpty(getWebResult().partName())) {
+                webResultPartName = getWebResult().partName();
+            }
+            else {
+                // Default is the WebResult.name per JSR-181 MR Sec 4.5.1, pg 23
+                webResultPartName = getWebResultName();
+            }
+        }
+        return webResultPartName;
+    }
+    
+    public String getWebResultTargetNamespace() {
+        if (!isOperationReturningResult()) {
+            return null;
+        }
+        if (webResultTargetNamespace == null) {
+            if (getWebResult() != null && !DescriptionUtils.isEmpty(getWebResult().targetNamespace())) {
+                webResultTargetNamespace = getWebResult().targetNamespace();
+            }
+            else if (getSoapBindingStyle() == SOAPBinding.Style.DOCUMENT
+                    && getSoapBindingParameterStyle() == SOAPBinding.ParameterStyle.WRAPPED
+                    && !getWebResultHeader()) {
+                // Default for operation style DOCUMENT and paramater style WRAPPED and the return value
+                // does not map to a header per JSR-181 MR Sec 4.5.1, pg 23-24
+                webResultTargetNamespace = WebResult_TargetNamespace_DEFAULT;
+            }
+            else {
+                // Default is the namespace from the WebService per JSR-181 MR Sec 4.5.1, pg 23-24
+                webResultTargetNamespace = getEndpointInterfaceDescription().getEndpointDescription().getWebServiceTargetNamespace();
+            }
+            
+        }
+        return webResultTargetNamespace;
+    }
+    
+    public boolean getWebResultHeader() {
+        if (!isOperationReturningResult()) {
+            return false;
+        }
+        if (webResultHeader == null) {
+            if (getWebResult() != null) {
+                // Unlike the elements with a String value, if the annotation is present, exclude will always 
+                // return a usable value since it will default to FALSE if the element is not present.
+                webResultHeader = new Boolean(getWebResult().header());
+            }
+            else {
+                webResultHeader = WebResult_Header_DEFAULT;
+            }
+        }
+        return webResultHeader.booleanValue();
     }
 
     // ===========================================

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java?view=diff&rev=462538&r1=462537&r2=462538
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java Tue Oct 10 13:05:32 2006
@@ -68,8 +68,11 @@
 		String resultName = operationDesc.getWebResultName();
 		Object bo = createBusinessObject(wrapperClazz, message);
 		createResponseHolders(bo, inputArgs, false);
-		//if result name is null and that means there is no webResult meaning its a void return.
-		if(resultName !=null){
+        // REVIEW: Is the the appropriate logic, to be checking for the existence of the annotation
+        //         as the decision point for getting into the property logic?  Note that even if the annotation
+        //         is not present, a default result name will be returned.
+		// If the WebResult annotation is present, then look up the result Name
+		if(operationDesc.isWebResultAnnotationSpecified()){
 		//if ReturnType is not of same type as JAXBBlock business Object then I will look for resultName in Business Object and return that.
 			Object resultObject = findProperty(resultName, bo);
 			return resultObject;

Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java?view=diff&rev=462538&r1=462537&r2=462538
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java Tue Oct 10 13:05:32 2006
@@ -18,7 +18,9 @@
 
 package org.apache.axis2.jaxws.description;
 
+import javax.jws.Oneway;
 import javax.jws.WebMethod;
+import javax.jws.WebResult;
 import javax.jws.WebService;
 import javax.jws.soap.SOAPBinding;
 import javax.xml.ws.RequestWrapper;
@@ -160,9 +162,14 @@
                     // Check the WebParam Names (see note above) 
                     assertEquals(1, webParamNames.length);
                     assertEquals("invoke_str", webParamNames[0]);
-                    // Check the lack of a WebResult annotation
-                    assertEquals(false, operation.isWebResultAnnotationSpecified());
-                    assertEquals(null, operation.getWebResultName());
+                    // Check the lack of a WebResult annotation and the default values for
+                    // SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
+                    // Note that the SOAPBinding annotation is also not present and thus fully defaulted.
+                    assertNull(operation.getWebResult());
+                    assertEquals("return", operation.getWebResultName());
+                    assertEquals("return", operation.getWebResultPartName());
+                    assertEquals("", operation.getWebResultTargetNamespace());
+                    assertFalse(operation.getWebResultHeader());
                 }
             }
             else if (checkParams.length == 2) {
@@ -178,9 +185,14 @@
                     // Check the WebParam Names (see note above) 
                     assertEquals(2, webParamNames.length);
                     assertEquals("invoke_str", webParamNames[0]);
-                    // Check the lack of a WebResult annotation
-                    assertEquals(false, operation.isWebResultAnnotationSpecified());
-                    assertEquals(null, operation.getWebResultName());
+                    // Check the lack of a WebResult annotation and the default values for
+                    // SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
+                    // Note that the SOAPBinding annotation is also not present and thus fully defaulted.
+                    assertNull(operation.getWebResult());
+                    assertEquals("return", operation.getWebResultName());
+                    assertEquals("return", operation.getWebResultPartName());
+                    assertEquals("", operation.getWebResultTargetNamespace());
+                    assertFalse(operation.getWebResultHeader());
                 }
             }
             else {
@@ -216,9 +228,14 @@
                     assertEquals(3, webParamNames.length);
                     assertEquals("twoWayHolder_str", webParamNames[0]);
                     assertEquals("twoWayHolder_int", webParamNames[1]);
-                    // Check the lack of a WebResult annotation
-                    assertEquals(false, operation.isWebResultAnnotationSpecified());
-                    assertEquals(null, operation.getWebResultName());
+                    // Check the lack of a WebResult annotation and the default values for
+                    // SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
+                    // Note that the SOAPBinding annotation is also not present and thus fully defaulted.
+                    assertNull(operation.getWebResult());
+                    assertEquals("return", operation.getWebResultName());
+                    assertEquals("return", operation.getWebResultPartName());
+                    assertEquals("", operation.getWebResultTargetNamespace());
+                    assertFalse(operation.getWebResultHeader());
                 }
             }
             else if (checkParams.length == 2) {
@@ -234,9 +251,14 @@
                     assertEquals(2, webParamNames.length);
                     assertEquals("twoWayHolder_str", webParamNames[0]);
                     assertEquals("twoWayHolder_int", webParamNames[1]);
-                    // Check the lack of a WebResult annotation
-                    assertEquals(false, operation.isWebResultAnnotationSpecified());
-                    assertEquals(null, operation.getWebResultName());
+                    // Check the lack of a WebResult annotation and the default values for
+                    // SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
+                    // Note that the SOAPBinding annotation is also not present and thus fully defaulted.
+                    assertNull(operation.getWebResult());
+                    assertEquals("return", operation.getWebResultName());
+                    assertEquals("return", operation.getWebResultPartName());
+                    assertEquals("", operation.getWebResultTargetNamespace());
+                    assertFalse(operation.getWebResultHeader());
                 }
             }
             else {
@@ -253,16 +275,27 @@
         assertNotNull(checkEmptyParams);
         assertEquals(checkEmptyParams.length, 0);
         assertEquals(true, operations[0].isOneWay());
-        assertEquals(false, operations[0].isWebResultAnnotationSpecified());
+        // Check the lack of a WebResult annotation and the default values for
+        // a ONE-WAY / VOID operation with a SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
+        // Note that the SOAPBinding annotation is also not present and thus fully defaulted.
+        assertNull(operations[0].getWebResult());
+        assertFalse(operations[0].isWebResultAnnotationSpecified());
+        assertFalse(operations[0].isOperationReturningResult());
         assertEquals(null, operations[0].getWebResultName());
+        assertEquals(null, operations[0].getWebResultPartName());
+        assertEquals(null, operations[0].getWebResultTargetNamespace());
+        assertFalse(operations[0].getWebResultHeader());
         
         // Test two-way method for lack of OneWay annotation and WebResult annotation
         operations = endpointIntfDesc.getOperation("invoke");
         assertNotNull(operations);
         assertEquals(1, operations.length);
         assertEquals(false, operations[0].isOneWay());
-        assertEquals(true, operations[0].isWebResultAnnotationSpecified());
+        assertNotNull(operations[0].getWebResult());
         assertEquals("return_str", operations[0].getWebResultName());
+        assertEquals("return_str", operations[0].getWebResultPartName());
+        assertEquals("", operations[0].getWebResultTargetNamespace());
+        assertFalse(operations[0].getWebResultHeader());
     }
     
     // ===========================================
@@ -277,6 +310,15 @@
         assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, testEndpointInterfaceDesc.getSoapBindingStyle());
         assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL, testEndpointInterfaceDesc.getSoapBindingUse());
         assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED, testEndpointInterfaceDesc.getSoapBindingParameterStyle());
+        
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("echoString")[0];
+        // Verify WebResult annotation default values for DOC/LIT/WRAPPED from a defaulted SOAPBinding
+        assertNull(operationDesc.getWebResult());
+        assertEquals("return", operationDesc.getWebResultName());
+        assertEquals("return", operationDesc.getWebResultPartName());
+        assertEquals("", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
     }
 
     public void testSOAPBindingDocEncBare() {
@@ -331,6 +373,14 @@
         // TODO: Tests for request and response wrapper namespace; currently throws UnsupportedOperationException
         assertEquals("org.apache.axis2.jaxws.description.WrappedParams", operationDesc.getRequestWrapperClassName());
         assertEquals("org.apache.axis2.jaxws.description.WrappedParams", operationDesc.getResponseWrapperClassName());
+        // Test WebResult annotation defaults
+        assertNull(operationDesc.getWebResult());
+        assertFalse(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("return", operationDesc.getWebResultName());
+        assertEquals("return", operationDesc.getWebResultPartName());
+        assertEquals("", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
 
         operationDesc = testEndpointInterfaceDesc.getOperation("bareParams")[0];
         assertNotNull(operationDesc);
@@ -340,6 +390,14 @@
         assertNull(operationDesc.getResponseWrapperTargetNamespace());
         assertNull(operationDesc.getRequestWrapperClassName());
         assertNull(operationDesc.getResponseWrapperClassName());
+        // Test WebResult annotation defaults
+        assertNull(operationDesc.getWebResult());
+        assertFalse(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("bareParamsResponse", operationDesc.getWebResultName());
+        assertEquals("bareParamsResponse", operationDesc.getWebResultPartName());
+        assertEquals("http://description.jaxws.axis2.apache.org/", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
 
         // Test paramaterStyle = BARE set a the type level with various combinations of method annotation setting
         testEndpointInterfaceDesc = getEndpointInterfaceDesc(DefaultReqRspWrapperBareTestImpl.class);
@@ -423,6 +481,174 @@
         assertTrue(operationDesc.getWebMethodExclude());
 
     }
+    
+    public void testWebResult() {
+        EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(WebResultTestImpl.class);
+        
+        // DOCUMENT / LITERAL / WRAPPED methods
+        
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("method0")[0];
+        assertNotNull(operationDesc);
+        assertNull(operationDesc.getWebResult());
+        assertFalse(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("return", operationDesc.getWebResultName());
+        assertEquals("return", operationDesc.getWebResultPartName());
+        assertEquals("", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+        
+        operationDesc = testEndpointInterfaceDesc.getOperation("method1")[0];
+        assertNotNull(operationDesc);
+        assertNull(operationDesc.getWebResult());
+        assertFalse(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("return", operationDesc.getWebResultName());
+        assertEquals("return", operationDesc.getWebResultPartName());
+        assertEquals("", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method2")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("return", operationDesc.getWebResultName());
+        assertEquals("return", operationDesc.getWebResultPartName());
+        assertEquals("", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method3")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("resultName", operationDesc.getWebResultName());
+        assertEquals("resultName", operationDesc.getWebResultPartName());
+        assertEquals("", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method4")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("resultName", operationDesc.getWebResultName());
+        assertEquals("partName", operationDesc.getWebResultPartName());
+        assertEquals("http://result.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method5")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("resultName5", operationDesc.getWebResultName());
+        assertEquals("partName5", operationDesc.getWebResultPartName());
+        assertEquals("http://result.test.target.namespace.5/", operationDesc.getWebResultTargetNamespace());
+        assertTrue(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method6")[0];
+        assertNotNull(operationDesc);
+        assertNull(operationDesc.getWebResult());
+        assertFalse(operationDesc.isWebResultAnnotationSpecified());
+        assertFalse(operationDesc.isOperationReturningResult());
+        assertEquals(null, operationDesc.getWebResultName());
+        assertEquals(null, operationDesc.getWebResultPartName());
+        assertEquals(null, operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method7")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("resultName7", operationDesc.getWebResultName());
+        assertEquals("partName7", operationDesc.getWebResultPartName());
+        assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
+        assertTrue(operationDesc.getWebResultHeader());
+        
+        // DOCUMENT / LITERAL / BARE methods
+        
+        operationDesc = testEndpointInterfaceDesc.getOperation("method0_bare")[0];
+        assertNotNull(operationDesc);
+        assertNull(operationDesc.getWebResult());
+        assertFalse(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("method0_bareResponse", operationDesc.getWebResultName());
+        assertEquals("method0_bareResponse", operationDesc.getWebResultPartName());
+        assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+        
+        operationDesc = testEndpointInterfaceDesc.getOperation("method1_bare")[0];
+        assertNotNull(operationDesc);
+        assertNull(operationDesc.getWebResult());
+        assertFalse(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("renamedMethod1BareResponse", operationDesc.getWebResultName());
+        assertEquals("renamedMethod1BareResponse", operationDesc.getWebResultPartName());
+        assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method2_bare")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("renamedMethod2BareResponse", operationDesc.getWebResultName());
+        assertEquals("renamedMethod2BareResponse", operationDesc.getWebResultPartName());
+        assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method3_bare")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("resultName", operationDesc.getWebResultName());
+        assertEquals("resultName", operationDesc.getWebResultPartName());
+        assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method4_bare")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("resultName", operationDesc.getWebResultName());
+        assertEquals("partName", operationDesc.getWebResultPartName());
+        assertEquals("http://result.bare.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method5_bare")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("resultName5", operationDesc.getWebResultName());
+        assertEquals("partName5", operationDesc.getWebResultPartName());
+        assertEquals("http://result.bare.test.target.namespace.5/", operationDesc.getWebResultTargetNamespace());
+        assertTrue(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method6_bare")[0];
+        assertNotNull(operationDesc);
+        assertNull(operationDesc.getWebResult());
+        assertFalse(operationDesc.isWebResultAnnotationSpecified());
+        assertFalse(operationDesc.isOperationReturningResult());
+        assertEquals(null, operationDesc.getWebResultName());
+        assertEquals(null, operationDesc.getWebResultPartName());
+        assertEquals(null, operationDesc.getWebResultTargetNamespace());
+        assertFalse(operationDesc.getWebResultHeader());
+
+        operationDesc = testEndpointInterfaceDesc.getOperation("method7")[0];
+        assertNotNull(operationDesc);
+        assertNotNull(operationDesc.getWebResult());
+        assertTrue(operationDesc.isWebResultAnnotationSpecified());
+        assertTrue(operationDesc.isOperationReturningResult());
+        assertEquals("resultName7", operationDesc.getWebResultName());
+        assertEquals("partName7", operationDesc.getWebResultPartName());
+        assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
+        assertTrue(operationDesc.getWebResultHeader());
+    }
 
     /*
      * Method to return the endpoint interface description for a given implementation class.
@@ -448,6 +674,8 @@
 
 // ============================================================================
 // SOAPBindingDefaultTest service implementation class
+// @SOAPBinding values: style=DOCUMENT, use=LITERAL, paramaterStyle=WRAPPED
+// @WebResult values: are all defaulted
 // ============================================================================
 @WebService()
 class SOAPBindingDefaultTestImpl {
@@ -468,7 +696,7 @@
 }
 // ============================================================================
 // SOAPBindingDefaultMethodTest service implementation class
-// Note that style should default to DOCUMENT based on Type annotation
+// Note that style will default to DOCUMENT based on Type annotation
 // ============================================================================
 @WebService()
 class SOAPBindingDefaultMethodTestImpl {
@@ -556,3 +784,110 @@
         return s;
     }
 }
+
+// ===============================================
+// Web Result 
+// ===============================================
+@WebService(targetNamespace="http://service.test.target.namespace/")
+// Default SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
+class WebResultTestImpl {
+    // DOCUMENT / LITERAL / WRAPPED methods
+    public String method0(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod1")
+    public String method1(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod2")
+    @WebResult()
+    public String method2(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod3")
+    @WebResult(name="resultName")
+    public String method3(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod4")
+    @WebResult(name="resultName", partName="partName", targetNamespace="http://result.test.target.namespace/")
+    public String method4(String s) {
+        return s;
+    }
+
+    @WebMethod(operationName="renamedMethod5")
+    @WebResult(name="resultName5", partName="partName5", targetNamespace="http://result.test.target.namespace.5/", header=true)
+    public String method5(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod6")
+    @Oneway
+    public void method6(String s) {
+        return;
+    }
+
+    @WebMethod(operationName="renamedMethod7")
+    @WebResult(name="resultName7", partName="partName7", header=true)
+    public String method7(String s) {
+        return s;
+    }
+
+    // DOCUMENT / LITERAL / BARE methods
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public String method0_bare(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod1Bare")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public String method1_bare(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod2Bare")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult()
+    public String method2_bare(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod3Bare")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult(name="resultName")
+    public String method3_bare(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod4Bare")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult(name="resultName", partName="partName", targetNamespace="http://result.bare.test.target.namespace/")
+    public String method4_bare(String s) {
+        return s;
+    }
+
+    @WebMethod(operationName="renamedMethod5Bare")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult(name="resultName5", partName="partName5", targetNamespace="http://result.bare.test.target.namespace.5/", header=true)
+    public String method5_bare(String s) {
+        return s;
+    }
+    
+    @WebMethod(operationName="renamedMethod6Bare")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @Oneway
+    public void method6_bare(String s) {
+        return;
+    }
+
+    @WebMethod(operationName="renamedMethod7Bare")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult(name="resultName7", partName="partName7", header=true)
+    public String method7_bare(String s) {
+        return s;
+    }
+}
\ No newline at end of file



---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org