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 2007/03/02 22:26:41 UTC

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

Author: barrettj
Date: Fri Mar  2 13:26:40 2007
New Revision: 513964

URL: http://svn.apache.org/viewvc?view=rev&rev=513964
Log:
AXIS2-2286
Support for Doc/Lit/Bare operation routing in metadata layer.

Added:
    webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java
Modified:
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
    webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java?view=diff&rev=513964&r1=513963&r2=513964
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/EndpointInterfaceDescriptionImpl.java Fri Mar  2 13:26:40 2007
@@ -32,6 +32,7 @@
 import javax.wsdl.PortType;
 import javax.xml.namespace.QName;
 
+import org.apache.axis2.description.AxisMessage;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.jaxws.ExceptionFactory;
@@ -44,6 +45,7 @@
 import org.apache.axis2.jaxws.description.builder.DescriptionBuilderComposite;
 import org.apache.axis2.jaxws.description.builder.MDQConstants;
 import org.apache.axis2.jaxws.description.builder.MethodDescriptionComposite;
+import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 //import org.apache.log4j.BasicConfigurator;
@@ -178,12 +180,9 @@
            		OperationDescription operation = new OperationDescriptionImpl(mdc, this, axisOperation);
            	
             	if (axisOperation == null) {
-            		//This axisOperation does not already exist on the AxisService, so add it now
-            		
-                    // TODO: Do we need to worry about a null AxisOperation at this level?
-        
-            		axisService.addOperation(operation.getAxisOperation());
-            		
+            		// This axisOperation did not already exist on the AxisService, and so was created
+                    // with the OperationDescription, so we need to add the operation to the service
+                    ((OperationDescriptionImpl) operation).addToAxisService(axisService);
             	}
             	
         		if (log.isDebugEnabled())
@@ -204,9 +203,8 @@
         //          WebServiceRefAnnot (List) (JAXWS)
         //          BindingTypeAnnot (JAXWS Sec. 7.8 -- Used to set either the AS.endpoint, or AS.SoapNSUri)
         //          WebServiceContextAnnot (JAXWS via injection)
-        
-//        BasicConfigurator.resetConfiguration();
     }
+
 
     private static Method[] getSEIMethods(Class sei) {
         // Per JSR-181 all methods on the SEI are mapped to operations regardless

Modified: webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java?view=diff&rev=513964&r1=513963&r2=513964
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java (original)
+++ webservices/axis2/trunk/java/modules/metadata/src/org/apache/axis2/jaxws/description/impl/OperationDescriptionImpl.java Fri Mar  2 13:26:40 2007
@@ -31,6 +31,7 @@
 
 import javax.jws.Oneway;
 import javax.jws.WebMethod;
+import javax.jws.WebParam;
 import javax.jws.WebResult;
 import javax.jws.WebParam.Mode;
 import javax.jws.soap.SOAPBinding;
@@ -42,8 +43,11 @@
 import javax.xml.ws.WebFault;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.description.AxisMessage;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisOperationFactory;
+import org.apache.axis2.description.AxisService;
+import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.description.EndpointDescriptionJava;
 import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;
 import org.apache.axis2.jaxws.description.FaultDescription;
@@ -183,77 +187,131 @@
         
         webMethodAnnotation = methodComposite.getWebMethodAnnot();
 
-        this.axisOperation = axisOperation;
-        
-        //If an AxisOperation was already created for us by populateService then just use that onw
-        //Otherwise, build it up here
-        if (this.axisOperation == null) {
-        	
-        	try {
-        		if (isOneWay()) {               
-        			axisOperation = AxisOperationFactory.getOperationDescription(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY);
-        		} else {
-        			axisOperation = AxisOperationFactory.getOperationDescription(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT);
-        		}
-        		//TODO: There are several other MEP's, such as: OUT_ONLY, IN_OPTIONAL_OUT, OUT_IN, OUT_OPTIONAL_IN, ROBUST_OUT_ONLY,
-        		//                                              ROBUST_IN_ONLY
-        		//      Determine how these MEP's should be handled, if at all
-        	} catch (Exception e) {
-        		AxisFault ex = new AxisFault("OperationDescriptionImpl:cons - unable to build AxisOperation ");
-        	}
-            
-        	if (axisOperation != null){
-        		
-        		axisOperation.setName(determineOperationQName(this.methodComposite));
-        		axisOperation.setSoapAction(this.getAction());
-        		
-        		
-        		//TODO: Determine other axisOperation values that may need to be set
-        		//      Currently, the following values are being set on AxisOperation in 
-        		//      ServiceBuilder.populateService which we are not setting:
-        		//          AxisOperation.setPolicyInclude()
-        		//          AxisOperation.setWsamappingList()
-        		//          AxisOperation.setOutputAction()
-        		//          AxisOperation.addFaultAction()
-        		//          AxisOperation.setFaultMessages()
-        		
-        		// TODO: The WSMToAxisServiceBuilder sets the message receiver, not sure why this is done
-        		//       since AxisService.addOperation does this as well by setting it to a default
-        		//       MessageReceiver...it appears that this code is also setting it to a default
-        		//       receiver..need to understand this
-        		
-        		/*
-        		 String messageReceiverClass = "org.apache.axis2.rpc.receivers.RPCMessageReceiver";
-        		 if(wsmOperation.isOneWay()){
-        		 messageReceiverClass = "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver";
-        		 }
-        		 try{
-        		 MessageReceiver msgReceiver = (MessageReceiver)Class.forName(messageReceiverClass).newInstance();
-        		 axisOperation.setMessageReceiver(msgReceiver);
-        		 
-        		 }catch(Exception e){
-        		 }
-        		 */
-        		
-        		//TODO: Need to process the other annotations that can exist, on the server side
-        		//      and at the method level.
-        		//      They are, as follows:       
-        		//          WebResultAnnot (181)
-        		//          HandlerChain
-        		//          SoapBinding (181)
-        		//          WebServiceRefAnnot (List) (JAXWS)
-        		//          WebServiceContextAnnot (JAXWS via injection)
-        		//          RequestWrapper (JAXWS)
-        		//          ResponseWrapper (JAXWS)	
-        	}
-        	
-        	this.axisOperation = axisOperation;
-        }
-        
 		parameterDescriptions = createParameterDescriptions();
 		faultDescriptions = createFaultDescriptions();
+
+        //If an AxisOperation was already created for us by populateService then just use that one
+        //Otherwise, create it
+        if (axisOperation != null) {
+            this.axisOperation = axisOperation;
+        }
+        else {
+            this.axisOperation = createAxisOperation();
+        }
     }
-    
+
+    /**
+     * Create an AxisOperation for this Operation.  Note that the ParameterDescriptions must
+     * be created before calling this method since, for a DOC/LIT/BARE (aka UNWRAPPED) message, the 
+     * ParamaterDescription is used to setup the AxisMessage correctly for use in SOAP Body-based
+     * dispatching on incoming DOC/LIT/BARE messages.
+     */
+    private AxisOperation createAxisOperation() {
+        AxisOperation newAxisOperation = null;	
+        try {
+            if (isOneWay()) {               
+                newAxisOperation = AxisOperationFactory.getOperationDescription(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_ONLY);
+            } else {
+                newAxisOperation = AxisOperationFactory.getOperationDescription(WSDLConstants.WSDL20_2006Constants.MEP_URI_IN_OUT);
+            }
+            //TODO: There are several other MEP's, such as: OUT_ONLY, IN_OPTIONAL_OUT, OUT_IN, OUT_OPTIONAL_IN, ROBUST_OUT_ONLY,
+            //                                              ROBUST_IN_ONLY
+            //      Determine how these MEP's should be handled, if at all
+        } catch (Exception e) {
+            if (log.isDebugEnabled()) {
+                log.debug("Unable to build AxisOperation for OperationDescrition; caught exception.", e);
+            }
+            // TODO: NLS & RAS
+            throw ExceptionFactory.makeWebServiceException("Caught exception trying to create AxisOperation", e);
+        }
+        
+        newAxisOperation.setName(determineOperationQName(this.methodComposite));
+        newAxisOperation.setSoapAction(this.getAction());
+
+        //REVIEW: Determine if other axisOperation values may need to be set
+        //      Currently, the following values are being set on AxisOperation in 
+        //      ServiceBuilder.populateService which we are not setting:
+        //          AxisOperation.setPolicyInclude()
+        //          AxisOperation.setWsamappingList()
+        //          AxisOperation.setOutputAction()
+        //          AxisOperation.addFaultAction()
+        //          AxisOperation.setFaultMessages()
+        
+        // If this is a DOC/LIT/BARE operation, then set the QName of the input AxisMessage to the 
+        // part for the first IN or IN/OUT non-header parameter.  If there are no parameters, then don't set
+        // anything.  The AxisMessage name is used to do SOAP-body based routing of DOC/LIT/BARE
+        // incoming messages.
+        if (getSoapBindingStyle() == javax.jws.soap.SOAPBinding.Style.DOCUMENT
+            && getSoapBindingUse() == javax.jws.soap.SOAPBinding.Use.LITERAL
+            && getSoapBindingParameterStyle() == javax.jws.soap.SOAPBinding.ParameterStyle.BARE) {
+            ParameterDescription[] paramDescs = getParameterDescriptions();
+            if (paramDescs != null && paramDescs.length > 0) {
+                for (ParameterDescription paramDesc : paramDescs) {
+                    WebParam.Mode paramMode = paramDesc.getMode();
+                    if (!paramDesc.isHeader() 
+                            && (paramMode == WebParam.Mode.IN || paramMode == WebParam.Mode.INOUT)) {
+                        // We've found the first IN or INOUT non-header parameter, so set the AxisMessage
+                        // QName based on this parameter then break out of the loop.
+                        AxisMessage axisMessage = 
+                            newAxisOperation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                        String partLocalName = paramDesc.getPartName();
+                        String partNamespace = paramDesc.getTargetNamespace();
+                        if (log.isDebugEnabled()) {
+                            log.debug("Setting up annotation based Doc/Lit/Bare operation: " + newAxisOperation.getName()
+                                    + "; axisMessage: " + axisMessage + "; partLocalName: " 
+                                    + partLocalName + "; partTNS: " + partNamespace);
+                        }
+                        if (axisMessage == null) {
+                            // TODO: RAS & NLS
+                            throw ExceptionFactory.makeWebServiceException("Could not setup Doc/Lit/Bare operation because input message is null");
+                        }
+                        else if (DescriptionUtils.isEmpty(partNamespace)) {
+                            // TODO: RAS & NLS
+                            throw ExceptionFactory.makeWebServiceException("Could not setup Doc/Lit/Bare operation because part namespace is empty");
+                        }
+                        else if (DescriptionUtils.isEmpty(partLocalName)) {
+                            // TODO: RAS & NLS
+                            throw ExceptionFactory.makeWebServiceException("Could not setup Doc/Lit/Bare operation because part local name is empty");
+                        }
+                        else {
+                            QName partQName = new QName(partNamespace, partLocalName);
+                            axisMessage.setElementQName(partQName);
+                        }
+                        break;
+                    }
+                }
+            }
+        }
+        return newAxisOperation;
+    }
+    /**
+     * Adds the AxisOperation corresponding to this OperationDescription to the AxisService
+     * if it isn't already there.
+     * It also addes the AxisOperation to any other routing mechanisms for that AxisService:
+     * - For Doc/Lit/Bare operations it is added to the MessageElementQNameToOperationMapping 
+     * @param axisService
+     */
+     void addToAxisService(AxisService axisService) {
+        AxisOperation newAxisOperation = getAxisOperation();
+        QName axisOpQName = newAxisOperation.getName();
+        if (axisService.getOperation(axisOpQName) == null) {
+            axisService.addOperation(newAxisOperation);
+            // For a Doc/Lit/Bare operation, we also need to add the element mapping
+            if (getSoapBindingStyle() == javax.jws.soap.SOAPBinding.Style.DOCUMENT
+                    && getSoapBindingUse() == javax.jws.soap.SOAPBinding.Use.LITERAL
+                    && getSoapBindingParameterStyle() == javax.jws.soap.SOAPBinding.ParameterStyle.BARE) {
+                AxisMessage axisMessage = 
+                    newAxisOperation.getMessage(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
+                if (axisMessage != null) {
+                    QName elementQName = axisMessage.getElementQName();
+                    if (!DescriptionUtils.isEmpty(elementQName)) {
+                        axisService.addMessageElementQNameToOperationMapping(elementQName, newAxisOperation);
+                    }
+                }
+            }
+        }
+    }
+
     void setSEIMethod(Method method) {
         if (seiMethod != null) {
             // TODO: This is probably an error, but error processing logic is incorrect

Added: webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java?view=auto&rev=513964
==============================================================================
--- webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java (added)
+++ webservices/axis2/trunk/java/modules/metadata/test/org/apache/axis2/jaxws/description/DocLitBareResolveOperationTests.java Fri Mar  2 13:26:40 2007
@@ -0,0 +1,273 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *      
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axis2.jaxws.description;
+
+import javax.jws.WebParam;
+import javax.jws.WebService;
+
+import junit.framework.TestCase;
+import javax.jws.soap.SOAPBinding;
+import javax.xml.ws.Holder;
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.AxisService;
+
+/**
+ * Validate that the information needed to resolve an incoming Doc/Lit/Bare message is setup
+ * correctly via annotations.
+ */
+public class DocLitBareResolveOperationTests extends TestCase {
+    private ServiceDescription svcDesc;
+    private EndpointDescription endpointDesc;
+    private AxisService axisService;
+    
+    protected void setUp() {
+        if (svcDesc == null) {
+            svcDesc = DescriptionFactory.createServiceDescription(DLBResolveOperation.class);
+            assertNotNull(svcDesc);
+            EndpointDescription[] epDescs = svcDesc.getEndpointDescriptions();
+            assertNotNull(epDescs);
+            assertEquals(1, epDescs.length);
+            endpointDesc = epDescs[0];
+            axisService = endpointDesc.getAxisService();
+            assertNotNull(axisService);
+        }
+    }
+    
+
+    public void testDocLitBareSingleInParam() {
+        QName operationQName = new QName("", "op1");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+                "op1param1PartName");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNotNull(axisOperationFromElement);
+        assertEquals(axisOperationFromOpName, axisOperationFromElement);
+        
+        QName wrongMessageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+        "wrongElementName");
+        AxisOperation axisOperationFromWrongElement = axisService.getOperationByMessageElementQName(wrongMessageElementQName);
+        assertNull(axisOperationFromWrongElement);
+
+        QName wrongMessageElementNSQName = new QName("wrong.namespace",
+            "op1param1PartName");
+        AxisOperation axisOperationFromWrongElementNS = axisService.getOperationByMessageElementQName(wrongMessageElementNSQName);
+        assertNull(axisOperationFromWrongElementNS);
+        
+    }
+    
+    public void testDocLitBareSingleInOutParam() {
+        QName operationQName = new QName("", "op2");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+                "op2param1PartName");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNotNull(axisOperationFromElement);
+        assertEquals(axisOperationFromOpName, axisOperationFromElement);
+    }
+    
+    public void testDocLitBareTwoInParams() {
+        QName operationQName = new QName("", "op3");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+                "op3param1PartName");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNotNull(axisOperationFromElement);
+        assertEquals(axisOperationFromOpName, axisOperationFromElement);
+        
+        QName wrongMessageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+            "op3param2PartName"); 
+        AxisOperation axisOperationFromWrongElement = axisService.getOperationByMessageElementQName(wrongMessageElementQName);
+        assertNull(axisOperationFromWrongElement);
+        
+    }
+    
+    public void testDocLitBareOutParamOnly() {
+        QName operationQName = new QName("", "op4");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+                "op4param1PartName");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNull(axisOperationFromElement);
+        
+    }
+    
+    public void testDocLitBareOutParamFirst() {
+        QName operationQName = new QName("", "op5");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+                "op5param2PartName");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNotNull(axisOperationFromElement);
+        assertEquals(axisOperationFromOpName, axisOperationFromElement);
+        
+        QName wrongMessageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+            "op5param1PartName"); 
+        AxisOperation axisOperationFromWrongElement = axisService.getOperationByMessageElementQName(wrongMessageElementQName);
+        assertNull(axisOperationFromWrongElement);
+
+    }
+    
+    public void testDocLitBareDefaultPartAnno() {
+        QName operationQName = new QName("", "op6");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("http://description.jaxws.axis2.apache.org/",
+                "op6");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNotNull(axisOperationFromElement);
+        assertEquals(axisOperationFromOpName, axisOperationFromElement);
+        
+    }
+
+    public void testDocLitBareNoParams() {
+        QName operationQName = new QName("", "op7");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("http://description.jaxws.axis2.apache.org/",
+                "op7");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNull(axisOperationFromElement);
+        
+    }
+    
+    public void testDocLitBareHeaderParamFirst() {
+        QName operationQName = new QName("", "op8");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+                "op8param2PartName");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNotNull(axisOperationFromElement);
+        assertEquals(axisOperationFromOpName, axisOperationFromElement);
+        
+        QName wrongMessageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+            "op8param1PartName"); 
+        AxisOperation axisOperationFromWrongElement = axisService.getOperationByMessageElementQName(wrongMessageElementQName);
+        assertNull(axisOperationFromWrongElement);
+    }
+    
+    
+    public void testDocLitWrapped() {
+        QName operationQName = new QName("", "op10");
+        AxisOperation axisOperationFromOpName = axisService.getOperation(operationQName);
+        assertNotNull(axisOperationFromOpName);
+        
+        QName messageElementQName = new QName("org.apache.axis2.jaxws.description.DLBResolveOperation",
+                "op10param1PartName");
+        AxisOperation axisOperationFromElement = axisService.getOperationByMessageElementQName(messageElementQName);
+        assertNull(axisOperationFromElement);
+    }
+}
+
+@WebService
+class DLBResolveOperation {
+    
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void op1(
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op1param1PartName")
+            int param1) {}
+
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void op2(
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op2param1PartName",
+                    mode=WebParam.Mode.INOUT)
+            Holder<Integer> param1) {}
+
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void op3(
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op3param1PartName",
+                    mode=WebParam.Mode.INOUT)
+            Holder<Integer> param1,
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op3param2PartName",
+                    mode=WebParam.Mode.IN)
+            int param2) {}
+    
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void op4(
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op4param1PartName",
+                    mode=WebParam.Mode.OUT)
+            Holder<Integer> param1) {}
+
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void op5(
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op5param1PartName",
+                    mode=WebParam.Mode.OUT)
+            Holder<Integer> param1,
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op5param2PartName",
+                    mode=WebParam.Mode.IN)
+            int param2) {}
+
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void op6(
+            @WebParam
+            int param1) {}
+
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void op7() {}
+    
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.BARE)
+    public void op8(
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op8param1PartName",
+                    mode=WebParam.Mode.IN,
+                    header=true)
+            Integer param1,
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op8param2PartName",
+                    mode=WebParam.Mode.IN)
+            int param2) {}
+
+    @SOAPBinding(style=SOAPBinding.Style.DOCUMENT, use=SOAPBinding.Use.LITERAL, 
+            parameterStyle=SOAPBinding.ParameterStyle.WRAPPED)
+    public void op10(
+            @WebParam(targetNamespace="org.apache.axis2.jaxws.description.DLBResolveOperation", 
+                    partName="op10param1PartName")
+            int param1) {}
+
+}



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