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/12 03:44:57 UTC

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

Author: barrettj
Date: Wed Oct 11 18:44:57 2006
New Revision: 463099

URL: http://svn.apache.org/viewvc?view=rev&rev=463099
Log:
Add JAXWS defaults for WebParam annotation.  Indcludes support for Holder-related elements.

Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.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/description/ParameterDescription.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/description/AnnotationServiceImplDescriptionTests.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java?view=diff&rev=463099&r1=463098&r2=463099
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/EndpointInterfaceDescription.java Wed Oct 11 18:44:57 2006
@@ -241,8 +241,8 @@
      * @return
      */
     // FIXME: This is confusing; some getOperations use the QName from the WSDL or annotation; this one uses the java method name; rename this signature I think; add on that takes a String but does a QName lookup against the WSDL/Annotation
-    public OperationDescription[] getOperation(String javaMethodName) {
-        if (javaMethodName == null) {
+    public OperationDescription[] getOperationForJavaMethod(String javaMethodName) {
+        if (DescriptionUtils.isEmpty(javaMethodName)) {
             return null;
         }
         
@@ -257,6 +257,26 @@
             return null;
         else
             return matchingOperations.toArray(new OperationDescription[0]);
+    }
+    
+    /**
+     * Return the OperationDesription (only one) corresponding to the OperationName passed in.
+     * @param operationName
+     * @return
+     */
+    public OperationDescription getOperation(String operationName) {
+        if (DescriptionUtils.isEmpty(operationName)) {
+            return null;
+        }
+        
+        OperationDescription matchingOperation = null;
+        for (OperationDescription operation:getOperations()) {
+            if (operationName.equals(operation.getWebMethodOperationName())) {
+                matchingOperation = operation;
+                break;
+            }
+        }
+        return matchingOperation;
     }
     
     public OperationDescription[] getOperations() {

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=463099&r1=463098&r2=463099
==============================================================================
--- 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 Wed Oct 11 18:44:57 2006
@@ -20,6 +20,7 @@
 
 import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
+import java.lang.reflect.Type;
 import java.util.ArrayList;
 
 import javax.jws.Oneway;
@@ -93,6 +94,7 @@
     private AxisOperation axisOperation;
     private QName operationName;
     private Method seiMethod;
+    private ParameterDescription[] parameterDescriptions;
 
     // ===========================================
     // ANNOTATION related information
@@ -130,7 +132,6 @@
     // Default value per JSR-181 MR Sec 4.7 "Annotation: javax.jws.soap.SOAPBinding" pg 28
     public static final javax.jws.soap.SOAPBinding.ParameterStyle SOAPBinding_ParameterStyle_DEFAULT = javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED;
 
-    
     // ANNOTATION: @WebMethod
     private WebMethod           webMethodAnnotation;
     private String              webMethodOperationName;
@@ -146,7 +147,7 @@
     private WebParam[]          webParamAnnotations;
     private String[]            webParamNames;
     private Mode[]				webParamMode;
-    private String[]            webParamTNS;
+    private String[]            webParamTargetNamespace;
 
     
     // ANNOTATION: @WebResult
@@ -164,7 +165,7 @@
         // TODO: Look for WebMethod anno; get name and action off of it
         parentEndpointInterfaceDescription = parent;
         setSEIMethod(method);
-        webMethodAnnotation = seiMethod.getAnnotation(WebMethod.class);
+
         
         this.operationName = new QName(getWebMethodOperationName());
     }
@@ -175,11 +176,15 @@
     }
 
     public void setSEIMethod(Method method) {
-        if (seiMethod != null)
+        if (seiMethod != null) {
             // TODO: This is probably an error, but error processing logic is incorrect
             throw new UnsupportedOperationException("Can not set an SEI method once it has been set.");
-        else 
+        }
+        else  {
             seiMethod = method;
+            webMethodAnnotation = seiMethod.getAnnotation(WebMethod.class);
+            parameterDescriptions = createParameterDescriptions();
+        }
     }
 
     public EndpointInterfaceDescription getEndpointInterfaceDescription() {
@@ -226,6 +231,18 @@
         // TODO: WSDL may need to be considered in this check as well
         return getSoapBindingParameterStyle() == javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED;
     }
+    
+    private ParameterDescription[] createParameterDescriptions() {
+       Class[] parameters = seiMethod.getParameterTypes();
+       Type[] paramaterTypes = seiMethod.getGenericParameterTypes();
+       Annotation[][] annotations = seiMethod.getParameterAnnotations();
+       ArrayList<ParameterDescription> buildParameterList = new ArrayList<ParameterDescription>();
+       for(int i = 0; i < parameters.length; i++) {
+           ParameterDescription paramDesc = new ParameterDescription(i, parameters[i], paramaterTypes[i], annotations[i], this);
+           buildParameterList.add(paramDesc);
+       }
+       return buildParameterList.toArray(new ParameterDescription[buildParameterList.size()]);
+    }
 
     // =====================================
     // ANNOTATION: WebMethod
@@ -462,69 +479,77 @@
     // ===========================================
     // ANNOTATION: WebParam
     // ===========================================
-    // TODO: Should this annotation be moved to ParameterDescription 
-    WebParam[] getWebParam() {
-        if (webParamAnnotations == null) {
-            Annotation[][] paramAnnotation = seiMethod.getParameterAnnotations();
-            ArrayList<WebParam> webParamList = new ArrayList<WebParam>();
-            for(Annotation[] pa:paramAnnotation){
-                for(Annotation webParam:pa){
-                    if(webParam.annotationType() == WebParam.class){
-                        webParamList.add((WebParam)webParam);
-                    }
+    // Note that this annotation is handled by the ParameterDescripton.
+    // Methods are provided on OperationDescription as convenience methods.
+    public ParameterDescription[] getParameterDescriptions() {
+        return parameterDescriptions;
+    }
+    
+    public ParameterDescription getParameterDescription(String parameterName) {
+        // TODO: Validation: For BARE paramaterUse, only a single IN our INOUT paramater and a single output (either return or OUT or INOUT) is allowed 
+        //       Per JSR-224, Sec 3.6.2.2, pg 37
+        ParameterDescription matchingParamDesc = null;
+        if (parameterName != null && !parameterName.equals("")) {
+            for (ParameterDescription paramDesc:parameterDescriptions) {
+                if (parameterName.equals(paramDesc.getWebParamName())) {
+                    matchingParamDesc = paramDesc;
+                    break;
                 }
             }
-            webParamAnnotations = webParamList.toArray(new WebParam[0]);
         }
-        return webParamAnnotations;
+        return matchingParamDesc;
+    }
+    
+    public ParameterDescription getParameterDescription(int parameterNumber) {
+        return parameterDescriptions[parameterNumber];
     }
     
     public String[] getWebParamNames() {
         if (webParamNames == null) {
             ArrayList<String> buildNames = new ArrayList<String>();
-            WebParam[] webParams = getWebParam();
-            for (WebParam currentParam:webParams) {
-                    buildNames.add(currentParam.name());
+            ParameterDescription[] paramDescs = getParameterDescriptions();
+            for (ParameterDescription currentParamDesc:paramDescs) {
+                buildNames.add(currentParamDesc.getWebParamName());
             }
             webParamNames = buildNames.toArray(new String[0]);
         }
         return webParamNames;
-        
     }
     
-    public String[] getWebParamTNS(){
-        if (webParamTNS == null) {
-            ArrayList<String> buildNames = new ArrayList<String>();
-            WebParam[] webParams = getWebParam();
-            for (WebParam currentParam:webParams) {
-            	buildNames.add(currentParam.targetNamespace());
+    public String[] getWebParamTargetNamespaces(){
+        if (webParamTargetNamespace == null) {
+            ArrayList<String> buildTargetNS = new ArrayList<String>();
+            ParameterDescription[] paramDescs = getParameterDescriptions();
+            for (ParameterDescription currentParamDesc:paramDescs) {
+                buildTargetNS.add(currentParamDesc.getWebParamTargetNamespace());
             }
-            webParamTNS = buildNames.toArray(new String[0]);
+            webParamTargetNamespace = buildTargetNS.toArray(new String[0]);
+        }
+        return webParamTargetNamespace;
+    }
+
+    public String getWebParamTargetNamespace(String name){
+        String returnTargetNS = null;
+        ParameterDescription paramDesc = getParameterDescription(name);
+        if (paramDesc != null) {
+            returnTargetNS = paramDesc.getWebParamTargetNamespace();
         }
-        return webParamTNS;
+        return returnTargetNS;
     }
+    
              
     public Mode[] getWebParamModes(){
     	if(webParamMode == null){
     		ArrayList<Mode> buildModes = new ArrayList<Mode>();
-    		WebParam[] webParams = getWebParam();
-    		for (WebParam currentParam:webParams){
-                buildModes.add(currentParam.mode());
-    		}
+            ParameterDescription[] paramDescs = getParameterDescriptions();
+            for (ParameterDescription currentParamDesc:paramDescs) {
+                buildModes.add(currentParamDesc.getWebParamMode());
+            }
     		 webParamMode = buildModes.toArray(new Mode[0]);
     	}
     	return webParamMode;
     }
-    public String getWebParamTNS(String name){
-       WebParam[] webParams = getWebParam();
-       for (WebParam currentParam:webParams){
-           if(currentParam.name().equals(name)){
-                return currentParam.targetNamespace();
-            }
-        }
-        return null;    
-     }
-    
+
     // ===========================================
     // ANNOTATION: WebResult
     // ===========================================

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ParameterDescription.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ParameterDescription.java?view=diff&rev=463099&r1=463098&r2=463099
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ParameterDescription.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/description/ParameterDescription.java Wed Oct 11 18:44:57 2006
@@ -18,6 +18,17 @@
 
 package org.apache.axis2.jaxws.description;
 
+import java.lang.annotation.Annotation;
+import java.lang.reflect.GenericDeclaration;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.lang.reflect.TypeVariable;
+
+import javax.jws.WebParam;
+import javax.jws.soap.SOAPBinding;
+
+import org.apache.axis2.jaxws.description.builder.WebParamAnnot;
+
 /**
  * 
  */
@@ -31,7 +42,6 @@
 
 JSR-181 Annotations: 
 @WebParam(name, targetNamespace, mode, header, partName) [Input, Output]
-@WebResult(name, targetNamespace, header, partName) [Output only?]
 TBD
 
 WSDL Elements: TBD
@@ -42,5 +52,179 @@
 
  */
 public class ParameterDescription {
-
+    private OperationDescription parentOperationDescription;
+    private Class parameterType;
+    private ParameterizedType parameterGenericType;
+    // 0-based number of the parameter in the argument list
+    private int parameterNumber = -1;
+
+    // ANNOTATION: @WebMethod
+    private WebParam            webParamAnnotation;
+    private String              webParamName;
+    private String              webParamPartName;
+    public static final String  WebParam_TargetNamespace_DEFAULT = "";
+    private String              webParamTargetNamespace;
+    private WebParam.Mode       webParamMode;
+    public static final Boolean WebParam_Header_DEFAULT = new Boolean(false);
+    private Boolean             webParamHeader;
+    
+    ParameterDescription(int parameterNumber, Class parameterType, Type parameterGenericType, Annotation[] parameterAnnotations, OperationDescription parent) {
+        this.parameterNumber = parameterNumber;
+        this.parentOperationDescription = parent;
+        this.parameterType = parameterType;
+        // The Type argument could be a Type (if the parameter is a Paramaterized Generic) or
+        // just a Class (if it is not).  We only need to keep track of Paramaterized Type information. 
+        if (ParameterizedType.class.isInstance(parameterGenericType)) {   
+            this.parameterGenericType = (ParameterizedType) parameterGenericType;
+        }
+        findWebParamAnnotation(parameterAnnotations);
+    }
+    
+    private void findWebParamAnnotation(Annotation[] annotations) {
+        for (Annotation checkAnnotation:annotations) {
+            // REVIEW: This may not work with the MDQInput.  From the java.lang.annotation.Annotation interface
+            //         javadoc: "Note that an interface that manually extends this one does not define an annotation type."
+            if (checkAnnotation.annotationType() == WebParam.class) {
+                webParamAnnotation =  (WebParam) checkAnnotation;
+            }
+        }
+    }
+    
+    public OperationDescription getOperationDescription() {
+        return parentOperationDescription;
+    }
+    
+    public Class getParameterType() {
+        return parameterType;
+    }
+    
+    /**
+     * For a non-Holder type, returns the parameter class.  For a Holder<T> type, returns the class of T
+     * @return
+     */
+    public Class getParameterActualType() {
+        if (isHolderType() && parameterGenericType != null) {
+            // For types of Holder<T>, return the class associated with T
+            return (Class) parameterGenericType.getActualTypeArguments()[0];
+        }
+        else {
+            return parameterType;
+        }
+            
+    }
+    
+    public boolean isHolderType() {
+        // Holder types are defined by JSR-224 JAX-WS 2.0, Sec 2.3.3, pg 16
+        boolean returnValue = false;
+        if (parameterGenericType != null && ParameterizedType.class.isInstance(parameterGenericType)) {   
+            if (parameterGenericType.getRawType() == javax.xml.ws.Holder.class) {
+                returnValue = true;
+            }
+        }
+        return returnValue;
+    }
+
+    // =====================================
+    // ANNOTATION: WebParam
+    // =====================================
+    WebParam getWebParam() {
+        return webParamAnnotation;
+    }
+    
+    public String getWebParamName() {
+        if (webParamName == null) {
+            if (getWebParam() != null && !DescriptionUtils.isEmpty(getWebParam().name())) {
+                webParamName = getWebParam().name();
+            }
+            else if (getOperationDescription().getSoapBindingStyle() == SOAPBinding.Style.DOCUMENT
+                    && getOperationDescription().getSoapBindingParameterStyle() == SOAPBinding.ParameterStyle.BARE) {
+                // Defaul per JSR-181 MR Sec 4.4.1, pg 19
+                // TODO: Validation: For BARE paramaterUse, only a single IN our INOUT paramater and a single output (either return or OUT or INOUT) is allowed
+                //       Per JSR-224, Sec 3.6.2.2, pg 37
+                webParamName = getOperationDescription().getWebMethodOperationName(); 
+            }
+            else {
+                // Default per JSR-181 MR Sec 4.4.1, pg 20
+                // Return "argN" where N is the index of the parameter in the method signature
+                webParamName = "arg" + parameterNumber;
+            }
+        }
+        return webParamName;
+    }
+    
+    public String getWebParamPartName() {
+        if (webParamPartName == null) {
+            if (getWebParam() != null && !DescriptionUtils.isEmpty(getWebParam().partName())) {
+                webParamPartName = getWebParam().partName();
+            }
+            else {
+                // Default per JSR-181 MR Sec 4.4.1, pg 20
+                webParamPartName = getWebParamName();
+            }
+        }
+        return webParamPartName;
+    }
+
+    public String getWebParamTargetNamespace() {
+        if (webParamTargetNamespace == null) {
+            if (getWebParam() != null && !DescriptionUtils.isEmpty(getWebParam().targetNamespace())) {
+                webParamTargetNamespace = getWebParam().targetNamespace();
+            }
+            else if (getOperationDescription().getSoapBindingStyle() == SOAPBinding.Style.DOCUMENT
+                    && getOperationDescription().getSoapBindingParameterStyle() == SOAPBinding.ParameterStyle.WRAPPED
+                    && !getWebParamHeader()) {
+                // Defaul per JSR-181 MR Sec 4.4.1, pg 20
+                webParamTargetNamespace = WebParam_TargetNamespace_DEFAULT; 
+            }
+            else {
+                // Default per JSR-181 MR Sec 4.4.1, pg 20
+                webParamTargetNamespace = getOperationDescription().getEndpointInterfaceDescription().getEndpointDescription().getWebServiceTargetNamespace();
+            }
+        }
+        return webParamTargetNamespace;
+    }
+    
+    public WebParam.Mode getWebParamMode() {
+        if (webParamMode == null) {
+            // REVIEW: Is the following correct?
+            // Interesting conundrum here:
+            // Because WebParam.mode has a default value, it will always return something if the
+            // annotation is present.  That value is currently Mode.IN.  However, that default is only
+            // correct for a non-Holder Type; the correct default for a Holder Type is Mode.INOUT.  Furthermore,
+            // there's no way (I can tell) to differentiate if the setting for mode() was specified or defaulted,
+            // so there's no way to tell if the value is defaulted to IN or explicitly specified IN by the annotation.
+            // The conundrum is: Do we return the value from the annotation, or do we return the default value based on the
+            // type.  For now, for a Holder type that has a value of IN, we reset the value to INOUT.
+            // That means even if WebParam.mode=IN was explicitly set, it will be overridden to INOUT.
+            // The default values are from JSR-181 MR Sec 4.4.1, pg 20
+            
+            // Unlike a String value, if the annotation is present, it will return a usable default value as defined by 
+            // the Annotation.  That is currently Mode.IN
+            if (getWebParam() != null) {
+                webParamMode = getWebParam().mode();
+            }
+            else {
+                webParamMode = WebParam.Mode.IN;
+            }
+            
+            if (isHolderType() && webParamMode == WebParam.Mode.IN) {
+                // Default per JSR-181 MR Sec 4.4.1, pg 20
+                webParamMode = WebParam.Mode.INOUT;
+            }
+        }
+        return webParamMode;
+    }
+    
+    public boolean getWebParamHeader() {
+        if (webParamHeader == null) {
+            // Unlike a String value, if the annotation is present, it will return a usable default value.
+            if (getWebParam() != null) {
+                webParamHeader = getWebParam().header();
+            }
+            else {
+                webParamHeader = WebParam_Header_DEFAULT;
+            }
+        }
+        return webParamHeader.booleanValue();
+    }
 }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java?view=diff&rev=463099&r1=463098&r2=463099
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java Wed Oct 11 18:44:57 2006
@@ -214,12 +214,6 @@
 		ArrayList<Class> actualTypes = getInputTypes();
 		int i =0;
 		
-		//if no webParam defined then lets get default names.
-		if(paramNames.size() == 0 && paramValues.size()>0){
-			while(i< paramValues.size()){
-				paramNames.add(DEFAULT_ARG + i++);
-			}
-		}
 		if(paramNames.size() != paramValues.size()){
 			throw ExceptionFactory.makeWebServiceException(Messages.getMessage("InvalidWebParams"));
 		}

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=463099&r1=463098&r2=463099
==============================================================================
--- 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 Wed Oct 11 18:44:57 2006
@@ -20,9 +20,11 @@
 
 import javax.jws.Oneway;
 import javax.jws.WebMethod;
+import javax.jws.WebParam;
 import javax.jws.WebResult;
 import javax.jws.WebService;
 import javax.jws.soap.SOAPBinding;
+import javax.xml.ws.Holder;
 import javax.xml.ws.RequestWrapper;
 import javax.xml.ws.ResponseWrapper;
 
@@ -58,13 +60,13 @@
         assertNotNull(endpointIntfDesc);
         assertEquals(endpointIntfDesc.getSEIClass(), EchoPort.class);
         
-        OperationDescription[] operations = endpointIntfDesc.getOperation("badMethodName");
+        OperationDescription[] operations = endpointIntfDesc.getOperationForJavaMethod("badMethodName");
         assertNull(operations);
-        operations = endpointIntfDesc.getOperation("");
+        operations = endpointIntfDesc.getOperationForJavaMethod("");
         assertNull(operations);
-        operations = endpointIntfDesc.getOperation((String) null);
+        operations = endpointIntfDesc.getOperationForJavaMethod((String) null);
         assertNull(operations);
-        operations = endpointIntfDesc.getOperation("echo");
+        operations = endpointIntfDesc.getOperationForJavaMethod("echo");
         assertNotNull(operations);
         assertEquals(operations.length, 1);
         assertEquals(operations[0].getJavaMethodName(), "echo");
@@ -127,7 +129,7 @@
 
         // Test for overloaded methods
         // SEI defines two Java methods with this name
-        OperationDescription[] operations = endpointIntfDesc.getOperation("invokeAsync");
+        OperationDescription[] operations = endpointIntfDesc.getOperationForJavaMethod("invokeAsync");
         assertNotNull(operations);
         assertEquals(operations.length, 2);
         assertEquals(operations[0].getJavaMethodName(), "invokeAsync");
@@ -202,7 +204,7 @@
 
         // Test for a method with parameters of primitive types.  Note
         // this method IS overloaded
-        operations = endpointIntfDesc.getOperation("twoWayHolderAsync");
+        operations = endpointIntfDesc.getOperationForJavaMethod("twoWayHolderAsync");
         assertNotNull(operations);
         assertEquals(operations.length, 2);
         assertEquals(operations[0].getJavaMethodName(), "twoWayHolderAsync");
@@ -267,7 +269,7 @@
         }
 
         // Test for a one-way, void method with no parameters which also is not overloaded
-        operations = endpointIntfDesc.getOperation("oneWayVoid");
+        operations = endpointIntfDesc.getOperationForJavaMethod("oneWayVoid");
         assertNotNull(operations);
         assertEquals(operations.length, 1);
         assertEquals(operations[0].getJavaMethodName(), "oneWayVoid");
@@ -287,7 +289,7 @@
         assertFalse(operations[0].getWebResultHeader());
         
         // Test two-way method for lack of OneWay annotation and WebResult annotation
-        operations = endpointIntfDesc.getOperation("invoke");
+        operations = endpointIntfDesc.getOperationForJavaMethod("invoke");
         assertNotNull(operations);
         assertEquals(1, operations.length);
         assertEquals(false, operations[0].isOneWay());
@@ -311,7 +313,7 @@
         assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL, testEndpointInterfaceDesc.getSoapBindingUse());
         assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED, testEndpointInterfaceDesc.getSoapBindingParameterStyle());
         
-        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("echoString")[0];
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("echoString")[0];
         // Verify WebResult annotation default values for DOC/LIT/WRAPPED from a defaulted SOAPBinding
         assertNull(operationDesc.getWebResult());
         assertEquals("return", operationDesc.getWebResultName());
@@ -339,7 +341,7 @@
         assertEquals(javax.jws.soap.SOAPBinding.Use.ENCODED, testEndpointInterfaceDesc.getSoapBindingUse());
         assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.BARE, testEndpointInterfaceDesc.getSoapBindingParameterStyle());
 
-        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("echoString")[0];
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("echoString")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getSoapBinding());
         assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, operationDesc.getSoapBindingStyle());
@@ -354,7 +356,7 @@
         assertEquals(javax.jws.soap.SOAPBinding.Use.LITERAL, testEndpointInterfaceDesc.getSoapBindingUse());
         assertEquals(javax.jws.soap.SOAPBinding.ParameterStyle.WRAPPED, testEndpointInterfaceDesc.getSoapBindingParameterStyle());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("echoString")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("echoString")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getSoapBinding());
         assertEquals(javax.jws.soap.SOAPBinding.Style.DOCUMENT, operationDesc.getSoapBindingStyle());
@@ -366,7 +368,7 @@
 
         // Test paramaterStyle = WRAPPED set a the type level with various combinations of method annotation setting
         EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(DefaultReqRspWrapperTestImpl.class);
-        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("wrappedParams")[0];
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("wrappedParams")[0];
         assertNotNull(operationDesc);
         assertEquals("wrappedParams", operationDesc.getRequestWrapperLocalName());
         assertEquals("wrappedParamsResponse", operationDesc.getResponseWrapperLocalName());
@@ -382,7 +384,7 @@
         assertEquals("", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("bareParams")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("bareParams")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getRequestWrapperLocalName());
         assertNull(operationDesc.getResponseWrapperLocalName());
@@ -401,7 +403,7 @@
 
         // Test paramaterStyle = BARE set a the type level with various combinations of method annotation setting
         testEndpointInterfaceDesc = getEndpointInterfaceDesc(DefaultReqRspWrapperBareTestImpl.class);
-        operationDesc = testEndpointInterfaceDesc.getOperation("wrappedParams")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("wrappedParams")[0];
         assertNotNull(operationDesc);
         assertEquals("wrappedParams", operationDesc.getRequestWrapperLocalName());
         assertEquals("wrappedParamsResponse", operationDesc.getResponseWrapperLocalName());
@@ -409,7 +411,7 @@
         assertEquals("org.apache.axis2.jaxws.description.WrappedParams", operationDesc.getRequestWrapperClassName());
         assertEquals("org.apache.axis2.jaxws.description.WrappedParams", operationDesc.getResponseWrapperClassName());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("bareParams")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("bareParams")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getRequestWrapperLocalName());
         assertNull(operationDesc.getResponseWrapperLocalName());
@@ -421,7 +423,7 @@
     
     public void testReqRspWrapper() {
         EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(ReqRspWrapperTestImpl.class);
-        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("method1")[0];
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method1")[0];
         assertNotNull(operationDesc);
         assertEquals("method1ReqWrapper", operationDesc.getRequestWrapperLocalName());
         assertEquals("method1RspWrapper", operationDesc.getResponseWrapperLocalName());
@@ -430,7 +432,7 @@
         assertEquals("org.apache.axis2.jaxws.description.method1ReqWrapper", operationDesc.getRequestWrapperClassName());
         assertEquals("org.apache.axis2.jaxws.description.method1RspWrapper", operationDesc.getResponseWrapperClassName());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method2")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2")[0];
         assertEquals("method2", operationDesc.getRequestWrapperLocalName());
         assertEquals("method2RspWrapper", operationDesc.getResponseWrapperLocalName());
         assertEquals("http://a.b.c.method2ReqTNS", operationDesc.getRequestWrapperTargetNamespace());
@@ -443,38 +445,38 @@
         EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(WebMethodTestImpl.class);
         
         // Test results from method with no annotation
-        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("method1")[0];
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method1")[0];
         assertNotNull(operationDesc);
         assertEquals("method1", operationDesc.getWebMethodOperationName());
         assertEquals("", operationDesc.getWebMethodAction());
         assertFalse(operationDesc.getWebMethodExclude());
         
-        operationDesc = testEndpointInterfaceDesc.getOperation("method2")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2")[0];
         assertNotNull(operationDesc);
         assertEquals("renamedMethod2", operationDesc.getWebMethodOperationName());
         assertEquals("", operationDesc.getWebMethodAction());
         assertFalse(operationDesc.getWebMethodExclude());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method3")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3")[0];
         assertNotNull(operationDesc);
         assertEquals("method3", operationDesc.getWebMethodOperationName());
         assertEquals("ActionMethod3", operationDesc.getWebMethodAction());
         assertFalse(operationDesc.getWebMethodExclude());
         
-        operationDesc = testEndpointInterfaceDesc.getOperation("method4")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4")[0];
         assertNotNull(operationDesc);
         assertEquals("renamedMethod4", operationDesc.getWebMethodOperationName());
         assertEquals("ActionMethod4", operationDesc.getWebMethodAction());
         assertFalse(operationDesc.getWebMethodExclude());
         
-        operationDesc = testEndpointInterfaceDesc.getOperation("method4")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4")[0];
         assertNotNull(operationDesc);
         assertEquals("renamedMethod4", operationDesc.getWebMethodOperationName());
         assertEquals("ActionMethod4", operationDesc.getWebMethodAction());
         assertFalse(operationDesc.getWebMethodExclude());
 
         // REVIEW: Should these getters be throwing an exception or returning a default value since exclude=true? 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method5")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5")[0];
         assertNotNull(operationDesc);
         assertEquals("method5", operationDesc.getWebMethodOperationName());
         assertEquals("", operationDesc.getWebMethodAction());
@@ -487,7 +489,7 @@
         
         // DOCUMENT / LITERAL / WRAPPED methods
         
-        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperation("method0")[0];
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method0")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getWebResult());
         assertFalse(operationDesc.isWebResultAnnotationSpecified());
@@ -497,7 +499,7 @@
         assertEquals("", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
         
-        operationDesc = testEndpointInterfaceDesc.getOperation("method1")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method1")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getWebResult());
         assertFalse(operationDesc.isWebResultAnnotationSpecified());
@@ -507,7 +509,7 @@
         assertEquals("", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method2")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -517,7 +519,7 @@
         assertEquals("", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method3")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -527,7 +529,7 @@
         assertEquals("", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method4")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -537,7 +539,7 @@
         assertEquals("http://result.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method5")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -547,7 +549,7 @@
         assertEquals("http://result.test.target.namespace.5/", operationDesc.getWebResultTargetNamespace());
         assertTrue(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method6")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method6")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getWebResult());
         assertFalse(operationDesc.isWebResultAnnotationSpecified());
@@ -557,7 +559,7 @@
         assertEquals(null, operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method7")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method7")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -569,7 +571,7 @@
         
         // DOCUMENT / LITERAL / BARE methods
         
-        operationDesc = testEndpointInterfaceDesc.getOperation("method0_bare")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method0_bare")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getWebResult());
         assertFalse(operationDesc.isWebResultAnnotationSpecified());
@@ -579,7 +581,7 @@
         assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
         
-        operationDesc = testEndpointInterfaceDesc.getOperation("method1_bare")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method1_bare")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getWebResult());
         assertFalse(operationDesc.isWebResultAnnotationSpecified());
@@ -589,7 +591,7 @@
         assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method2_bare")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2_bare")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -599,7 +601,7 @@
         assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method3_bare")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3_bare")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -609,7 +611,7 @@
         assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method4_bare")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4_bare")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -619,7 +621,7 @@
         assertEquals("http://result.bare.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method5_bare")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5_bare")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -629,7 +631,7 @@
         assertEquals("http://result.bare.test.target.namespace.5/", operationDesc.getWebResultTargetNamespace());
         assertTrue(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method6_bare")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method6_bare")[0];
         assertNotNull(operationDesc);
         assertNull(operationDesc.getWebResult());
         assertFalse(operationDesc.isWebResultAnnotationSpecified());
@@ -639,7 +641,7 @@
         assertEquals(null, operationDesc.getWebResultTargetNamespace());
         assertFalse(operationDesc.getWebResultHeader());
 
-        operationDesc = testEndpointInterfaceDesc.getOperation("method7")[0];
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method7")[0];
         assertNotNull(operationDesc);
         assertNotNull(operationDesc.getWebResult());
         assertTrue(operationDesc.isWebResultAnnotationSpecified());
@@ -649,7 +651,454 @@
         assertEquals("http://service.test.target.namespace/", operationDesc.getWebResultTargetNamespace());
         assertTrue(operationDesc.getWebResultHeader());
     }
+    
+    public void testWebParamWrapped() {
+        EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(WebParamTestImpl.class);
+        
+        // DOCUMENT / LITERAL / WRAPPED methods
+        
+        // method0
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method0")[0];
+        assertNotNull(operationDesc);
+        ParameterDescription[] paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        ParameterDescription checkParamDesc = paramDesc[0];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg0", checkParamDesc.getWebParamName());
+        assertEquals("arg0", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg0"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals(String.class, checkParamDesc.getParameterActualType());
+        assertFalse(checkParamDesc.isHolderType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        // method00
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method00")[0];
+        assertNotNull(operationDesc);
+        assertEquals(0, operationDesc.getParameterDescriptions().length);
+        
+        // method1
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method1")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        checkParamDesc = paramDesc[0];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg0", checkParamDesc.getWebParamName());
+        assertEquals("arg0", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg0"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+
+        // method2
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("arg0", checkParamDesc.getWebParamName());
+        assertEquals("arg0", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg0"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+
+        // method3
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(5, paramDesc.length);
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param0NameMethod3", checkParamDesc.getWebParamName());
+        assertEquals("param0NameMethod3", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod3"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[1];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param1NameMethod3", checkParamDesc.getWebParamName());
+        assertEquals("param1NameMethod3", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(1));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod3"));
+        assertEquals(Holder.class, checkParamDesc.getParameterType());
+        assertEquals(Integer.class, checkParamDesc.getParameterActualType());
+        assertTrue(checkParamDesc.isHolderType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.INOUT, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[2];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg2", checkParamDesc.getWebParamName());
+        assertEquals("arg2", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(2));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg2"));
+        assertEquals(Object.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[3];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg3", checkParamDesc.getWebParamName());
+        assertEquals("arg3", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(3));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg3"));
+        assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[4];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("lastParamNameMethod3", checkParamDesc.getWebParamName());
+        assertEquals("lastParamNameMethod3", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(4));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod3"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        // method4
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(5, paramDesc.length);
+        
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param0NameMethod4", checkParamDesc.getWebParamName());
+        assertEquals("param0PartName", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod4"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("http://param.4.0.result.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[1];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param1NameMethod4", checkParamDesc.getWebParamName());
+        assertEquals("param1PartName", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(1));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod4"));
+        assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
+        assertEquals("http://param.4.1.result.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[2];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg2", checkParamDesc.getWebParamName());
+        assertEquals("arg2", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(2));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg2"));
+        assertEquals(Object.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[3];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg3", checkParamDesc.getWebParamName());
+        assertEquals("arg3", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(3));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg3"));
+        assertEquals(Holder.class, checkParamDesc.getParameterType());
+        assertEquals(Integer.class, checkParamDesc.getParameterActualType());
+        assertTrue(checkParamDesc.isHolderType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.INOUT, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[4];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("lastParamNameMethod4", checkParamDesc.getWebParamName());
+        assertEquals("lastParamNameMethod4", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(4));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod4"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        // method5
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(5, paramDesc.length);
+        
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param0NameMethod5", checkParamDesc.getWebParamName());
+        assertEquals("param0PartName", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod5"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertFalse(checkParamDesc.isHolderType());
+        assertEquals("http://param.5.0.result.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertTrue(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[1];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param1NameMethod5", checkParamDesc.getWebParamName());
+        assertEquals("param1PartName", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(1));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod5"));
+        assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
+        assertFalse(checkParamDesc.isHolderType());
+        assertEquals("http://param.5.1.result.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[2];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg2", checkParamDesc.getWebParamName());
+        assertEquals("arg2", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(2));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg2"));
+        assertEquals(Holder.class, checkParamDesc.getParameterType());
+        assertEquals(Object.class, checkParamDesc.getParameterActualType());
+        assertTrue(checkParamDesc.isHolderType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.INOUT, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[3];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg3", checkParamDesc.getWebParamName());
+        assertEquals("arg3", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(3));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg3"));
+        assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[4];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("lastParamNameMethod5", checkParamDesc.getWebParamName());
+        assertEquals("lastParamNameMethod5", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(4));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod5"));
+        assertEquals(Holder.class, checkParamDesc.getParameterType());
+        assertEquals(String.class, checkParamDesc.getParameterActualType());
+        assertTrue(checkParamDesc.isHolderType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.OUT, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        // method6
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method6")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(5, paramDesc.length);
+        
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param0NameMethod6", checkParamDesc.getWebParamName());
+        assertEquals("param0PartName", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod6"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("http://param.service.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertTrue(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[1];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param1NameMethod6", checkParamDesc.getWebParamName());
+        assertEquals("param1PartName", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(1));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod6"));
+        assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[2];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg2", checkParamDesc.getWebParamName());
+        assertEquals("arg2", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(2));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg2"));
+        assertEquals(Object.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[3];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("arg3", checkParamDesc.getWebParamName());
+        assertEquals("arg3", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(3));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("arg3"));
+        assertEquals(Integer.TYPE, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        checkParamDesc = paramDesc[4];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("lastParamNameMethod6", checkParamDesc.getWebParamName());
+        assertEquals("lastParamNameMethod6", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(4));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod6"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+    }
+
+    public void testWebParamBare() {
+        EndpointInterfaceDescription testEndpointInterfaceDesc = getEndpointInterfaceDesc(WebParamTestImpl.class);
+        
+        // DOCUMENT / LITERAL / BARE methods
+        OperationDescription operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method0_bare")[0];
+        assertNotNull(operationDesc);
+        ParameterDescription[] paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        ParameterDescription checkParamDesc = paramDesc[0];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("method0_bare", checkParamDesc.getWebParamName());
+        assertEquals("method0_bare", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("method0_bare"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals(String.class, checkParamDesc.getParameterActualType());
+        assertFalse(checkParamDesc.isHolderType());
+        assertEquals("http://param.service.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        // method00
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method00_bare")[0];
+        assertNotNull(operationDesc);
+        assertEquals(0, operationDesc.getParameterDescriptions().length);
+        
+        // method1
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method1_bare")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        checkParamDesc = paramDesc[0];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("renamedMethod1", checkParamDesc.getWebParamName());
+        assertEquals("renamedMethod1", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("renamedMethod1"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("http://param.service.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+
+        // method2
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method2_bare")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("renamedMethod2", checkParamDesc.getWebParamName());
+        assertEquals("renamedMethod2", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("renamedMethod2"));
+        assertEquals(String.class, checkParamDesc.getParameterType());
+        assertEquals("http://param.service.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.IN, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+
+        // method3
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method3_bare")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param1NameMethod3", checkParamDesc.getWebParamName());
+        assertEquals("param1NameMethod3", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param1NameMethod3"));
+        assertEquals(Holder.class, checkParamDesc.getParameterType());
+        assertEquals(Integer.class, checkParamDesc.getParameterActualType());
+        assertTrue(checkParamDesc.isHolderType());
+        assertEquals("http://param.service.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.INOUT, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        // method4
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method4_bare")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        
+        checkParamDesc = paramDesc[0];
+        assertNull(checkParamDesc.getWebParam());
+        assertEquals("renamedMethod4", checkParamDesc.getWebParamName());
+        assertEquals("renamedMethod4", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("renamedMethod4"));
+        assertEquals(Holder.class, checkParamDesc.getParameterType());
+        assertEquals(Integer.class, checkParamDesc.getParameterActualType());
+        assertEquals("http://param.service.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.INOUT, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+
+        // method5
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method5_bare")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("lastParamNameMethod5", checkParamDesc.getWebParamName());
+        assertEquals("lastParamNameMethod5", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("lastParamNameMethod5"));
+        assertEquals(Holder.class, checkParamDesc.getParameterType());
+        assertEquals(String.class, checkParamDesc.getParameterActualType());
+        assertTrue(checkParamDesc.isHolderType());
+        assertEquals("http://method5.bare.result.test.target.namespace.5/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.OUT, checkParamDesc.getWebParamMode());
+        assertFalse(checkParamDesc.getWebParamHeader());
+        
+        // method6
+        operationDesc = testEndpointInterfaceDesc.getOperationForJavaMethod("method6_bare")[0];
+        assertNotNull(operationDesc);
+        paramDesc = operationDesc.getParameterDescriptions();
+        assertEquals(1, paramDesc.length);
+        
+        checkParamDesc = paramDesc[0];
+        assertNotNull(checkParamDesc.getWebParam());
+        assertEquals("param0NameMethod6", checkParamDesc.getWebParamName());
+        assertEquals("param0PartName", checkParamDesc.getWebParamPartName());
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription(0));
+        assertEquals(checkParamDesc, operationDesc.getParameterDescription("param0NameMethod6"));
+        assertEquals(Holder.class, checkParamDesc.getParameterType());
+        assertEquals(String.class, checkParamDesc.getParameterActualType());
+        assertEquals("http://param.service.test.target.namespace/", checkParamDesc.getWebParamTargetNamespace());
+        assertEquals(WebParam.Mode.INOUT, checkParamDesc.getWebParamMode());
+        assertTrue(checkParamDesc.getWebParamHeader());
+    }
 
+    
     /*
      * Method to return the endpoint interface description for a given implementation class.
      */
@@ -890,4 +1339,152 @@
     public String method7_bare(String s) {
         return s;
     }
-}
\ No newline at end of file
+}
+
+// ===============================================
+// Web Param test impl
+// ===============================================
+@WebService(targetNamespace="http://param.service.test.target.namespace/")
+//Default SOAPBinding Style=DOCUMENT, Use=LITERAL, ParamStyle=WRAPPED
+class WebParamTestImpl {
+    
+    // DOCUMENT / LITERAL / WRAPPED methods
+    public String method0(String s) {
+        return s;
+    }
+    
+    public void method00() {
+        return;
+    }
+
+    @WebMethod(operationName = "renamedMethod1")
+    public String method1(String s) {
+        return s;
+    }
+
+    @WebMethod(operationName = "renamedMethod2")
+    @WebResult()
+    public String method2(
+            @WebParam()
+            String s) {
+        return s;
+    }
+
+    @WebMethod(operationName = "renamedMethod3")
+    @WebResult(name = "resultName")
+    public String method3(
+            @WebParam(name="param0NameMethod3")
+            String s, 
+            @WebParam(name="param1NameMethod3")
+            javax.xml.ws.Holder<Integer> holderInteger,
+            Object objNoWebParamAnno,
+            int intNoWebParamAnno,
+            @WebParam(name="lastParamNameMethod3")
+            String last) {
+        return s;
+    }
+
+    @WebMethod(operationName = "renamedMethod4")
+    @WebResult(name = "resultName", partName = "partName", targetNamespace = "http://result.test.target.namespace/")
+    public String method4(
+            @WebParam(name="param0NameMethod4", partName="param0PartName", targetNamespace="http://param.4.0.result.test.target.namespace/")
+            String s, 
+            @WebParam(name="param1NameMethod4", partName="param1PartName", targetNamespace="http://param.4.1.result.test.target.namespace/")
+            int i,
+            Object objNoWebParamAnno,
+            javax.xml.ws.Holder<Integer> intNoWebParamAnno,
+            @WebParam(name="lastParamNameMethod4")
+            String last) {
+
+        return s;
+    }
+
+    @WebMethod(operationName = "renamedMethod5")
+    @WebResult(name = "resultName5", partName = "partName5", targetNamespace = "http://result.test.target.namespace.5/", header = true)
+    public String method5(
+            @WebParam(name="param0NameMethod5", partName="param0PartName", targetNamespace="http://param.5.0.result.test.target.namespace/", header=true)
+            String s, 
+            @WebParam(name="param1NameMethod5", partName="param1PartName", targetNamespace="http://param.5.1.result.test.target.namespace/", header=false)
+            int i,
+            javax.xml.ws.Holder<Object> objNoWebParamAnno,
+            int intNoWebParamAnno,
+            @WebParam(name="lastParamNameMethod5", mode=WebParam.Mode.OUT)
+            javax.xml.ws.Holder<String> last) {
+        return s;
+    }
+
+    @WebMethod(operationName = "renamedMethod6")
+    @WebResult(name = "resultName5", partName = "partName5", header = true)
+    public String method6(
+            @WebParam(name="param0NameMethod6", partName="param0PartName", header=true)
+            String s, 
+            @WebParam(name="param1NameMethod6", partName="param1PartName", header=false)
+            int i,
+            Object objNoWebParamAnno,
+            int intNoWebParamAnno,
+            @WebParam(name="lastParamNameMethod6")
+            String last) {
+        return s;
+    }
+
+    // DOCUMENT / LITERAL / BARE methods
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public String method0_bare(String s) {
+        return s;
+    }
+    
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void method00_bare() {
+        return;
+    }
+
+    @WebMethod(operationName = "renamedMethod1")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public String method1_bare(String s) {
+        return s;
+    }
+
+    @WebMethod(operationName = "renamedMethod2")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult()
+    public String method2_bare(
+            @WebParam()
+            String s) {
+        return s;
+    }
+    @WebMethod(operationName = "renamedMethod3")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult(name = "resultName")
+    public String method3_bare(
+            @WebParam(name="param1NameMethod3")
+            javax.xml.ws.Holder<Integer> holderInteger) {
+        return null;
+    }
+
+    @WebMethod(operationName = "renamedMethod4")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult(name = "resultName", partName = "partName", targetNamespace = "http://result.test.target.namespace/")
+    public String method4_bare(
+            javax.xml.ws.Holder<Integer> intNoWebParamAnno) {
+
+        return null;
+    }
+
+    @WebMethod(operationName = "renamedMethod5")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult(name = "resultName5", partName = "partName5", targetNamespace = "http://result.test.target.namespace.5/", header = true)
+    public void method5_bare(
+            @WebParam(name="lastParamNameMethod5", mode=WebParam.Mode.OUT, targetNamespace = "http://method5.bare.result.test.target.namespace.5/")
+            javax.xml.ws.Holder<String> last) {
+        return;
+    }
+
+    @WebMethod(operationName = "renamedMethod6")
+    @SOAPBinding(parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    @WebResult(name = "resultName5", partName = "partName5", header = true)
+    public String method6_bare(
+            @WebParam(name="param0NameMethod6", partName="param0PartName", header=true)
+            javax.xml.ws.Holder<String> s) {
+        return null;
+    }
+}



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