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 ng...@apache.org on 2006/09/11 19:39:52 UTC

svn commit: r442275 [1/2] - in /webservices/axis2/trunk/java/modules/jaxws: ./ src/org/apache/axis2/jaxws/client/proxy/ src/org/apache/axis2/jaxws/i18n/ src/org/apache/axis2/jaxws/message/databinding/impl/ src/org/apache/axis2/jaxws/server/dispatcher/ ...

Author: ngallardo
Date: Mon Sep 11 10:39:50 2006
New Revision: 442275

URL: http://svn.apache.org/viewvc?view=rev&rev=442275
Log:
AXIS2-1131
Contributor: Nikhil Thaker

Nikhil's patch for adding in non-wrapped document/literal endpoint support.

Added:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/Mapper.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/MapperImpl.java
    webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclit_nonwrap.wsdl
    webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/DocLitNonWrapPortTypeImpl.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/services.xml
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapPortType.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapService.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/doclitwrap.wsdl
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/META-INF/services.xml
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrap.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/sei/DocLitWrapService.java
Modified:
    webservices/axis2/trunk/java/modules/jaxws/maven.xml
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/DocLitProxyHandler.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java

Modified: webservices/axis2/trunk/java/modules/jaxws/maven.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/maven.xml?view=diff&rev=442275&r1=442274&r2=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/maven.xml (original)
+++ webservices/axis2/trunk/java/modules/jaxws/maven.xml Mon Sep 11 10:39:50 2006
@@ -92,7 +92,20 @@
     	    <classpath location="${compiled.classes.dir}"/>
     	    <arg line="-d ${schema.generated.src.dir} -p org.test.dispatch.jaxbsource ${schema.source.dir}/jaxbsource.xsd"/>
     	</java>
-    	
+    	<ant:echo>Generating java from doclit_nonwrap.wsdl for javabean endpoint support</ant:echo>
+    	<java classname="com.sun.tools.xjc.Driver" fork="true"> 
+    		<jvmarg line="${maven.junit.jvmargs}"/>
+    		<classpath refid="maven.dependency.classpath"/>
+    		<classpath location="${compiled.classes.dir}"/>
+    		<arg line="-d ${schema.generated.src.dir} -quiet -wsdl ${wsdl.source.dir}/doclit_nonwrap.wsdl"/>
+		</java>
+    	<ant:echo>Generating java from doclitwrap.wsdl for javabean endpoint support</ant:echo>
+		<java classname="com.sun.tools.xjc.Driver" fork="true"> 
+			<jvmarg line="${maven.junit.jvmargs}"/>
+			<classpath refid="maven.dependency.classpath"/>
+			<classpath location="${compiled.classes.dir}"/>
+			<arg line="-d ${schema.generated.src.dir} -quiet -wsdl ${wsdl.source.dir}/doclitwrap.wsdl"/>
+		</java>
        <!-- Compile the generated classes -->
     	<ant:echo>Compiling generated schema</ant:echo>
         <javac destdir="${schema.generated.classes.dir}" srcdir="${schema.generated.src.dir}">
@@ -231,6 +244,30 @@
 		  <ant:fileset dir="test/org/apache/axis2/jaxws/sample/addressbook">
 		    <ant:include name="META-INF/**"/>
 		  </ant:fileset>
+		</ant:copy>
+		
+		<ant:copy toDir="target/test-classes/services/DocLitNonWrapService/">
+		  <ant:fileset dir="target/test-classes">
+		    <ant:include name="org/apache/axis2/jaxws/sample/nonwrap/**"/>
+		  </ant:fileset>
+		  <ant:fileset dir="test/org/apache/axis2/jaxws/sample/nonwrap">
+		    <ant:include name="META-INF/**"/>
+		  </ant:fileset>
+		  <ant:fileset dir="target/classes">
+			 <ant:include name="org/apache/axis2/jaxws/server/**"/>
+		  </ant:fileset>
+		</ant:copy>
+		
+		<ant:copy toDir="target/test-classes/services/DocLitWrapService/">
+			<ant:fileset dir="target/test-classes">
+			   	<ant:include name="org/apache/axis2/jaxws/sample/wrap/**"/>
+			</ant:fileset>
+			<ant:fileset dir="test/org/apache/axis2/jaxws/sample/wrap">
+			  	<ant:include name="META-INF/**"/>
+			</ant:fileset>
+			<ant:fileset dir="target/classes">
+				<ant:include name="org/apache/axis2/jaxws/server/**"/>
+			</ant:fileset>
 		</ant:copy>
 		
 		<ant:copy toDir="target/test-classes/services/AddNumbersService/">

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/DocLitProxyHandler.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/DocLitProxyHandler.java?view=diff&rev=442275&r1=442274&r2=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/DocLitProxyHandler.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/client/proxy/DocLitProxyHandler.java Mon Sep 11 10:39:50 2006
@@ -65,9 +65,15 @@
 	protected MessageContext createRequest(Method method, Object[] args) throws ClassNotFoundException, JAXBWrapperException, JAXBException, MessageException, javax.xml.stream.XMLStreamException {
 		MessageContext requestCtx = null;
 		if(isDocLitWrapped()){
+			if (log.isDebugEnabled()) {
+	            log.debug("Creating Doc Lit Wrapped Request for method : " +method.getName());
+	        }
 			return createDocLitWrappedRequest(method, args);
 		}
 		if(isDocLitBare()){
+			if (log.isDebugEnabled()) {
+	            log.debug("Creating Doc Lit Bare Request for method : " +method.getName());
+	        }
 			return createDocLitNONWrappedRequest(method, args);
 		}
 		return requestCtx;
@@ -77,9 +83,15 @@
 	protected Object createResponse(Method method, MessageContext responseContext) throws IllegalAccessException, ClassNotFoundException, JAXBWrapperException, JAXBException, javax.xml.stream.XMLStreamException, MessageException, IntrospectionException, NoSuchFieldException, InvocationTargetException{
 		Object result = null;
 		if(isDocLitWrapped()){
+			if (log.isDebugEnabled()) {
+	            log.debug("Creating Doc Lit Wrapped Response ");
+	        }
 			return createDocLitWrappedResponse(method, responseContext);
 		}
 		if(isDocLitBare()){
+			if (log.isDebugEnabled()) {
+	            log.debug("Creating Doc Lit Bare Request ");
+	        }
 			return createDocLitNONWrappedResponse(method, responseContext);
 		}
 		return result;
@@ -105,13 +117,24 @@
 		String localName = proxyDescriptor.getResponseWrapperLocalName();
 		Map<String, Object> values = getParamValues(objects, names);
 		JAXBWrapperTool wrapTool = new JAXBWrapperToolImpl();
-		
+		if (log.isDebugEnabled()) {
+            log.debug("JAXBWrapperTool attempting to wrap propertes in WrapperClass :" + wrapperClazz);
+        }
 		//TODO:if(@XmlRootElement) annotation found or defined
 		Object jaxbObject = wrapTool.wrap(wrapperClazz, localName,names, values);
+		if (log.isDebugEnabled()) {
+            log.debug("JAXBWrapperTool wrapped following propertes :");
+        }
 		//TODO: if (!@XmlRootElement) annotation not found or not defined then can I use JAXBElement?
 		//JAXBElement jaxbObject = wrapTool.wrapAsJAXBElement(wrapperClazz, requestWrapper.localName(),names, values);
 		JAXBContext ctx = JAXBContext.newInstance(new Class[]{wrapperClazz});
+		if (log.isDebugEnabled()) {
+            log.debug("Attempting to create Block");
+        }
 		Block reqBlock = createJAXBBlock(jaxbObject, ctx);
+		if (log.isDebugEnabled()) {
+            log.debug("JAXBBlock Created");
+        }
 		MessageContext requestCtx = initializeRequest(reqBlock);
 		return requestCtx;
 		
@@ -132,17 +155,29 @@
 		ArrayList<String> names = getParamNames(objects);
 		Map<String, Object> values = getParamValues(objects, names);
 		if(names.size()> SIZE || values.size() > SIZE){
-			throw ExceptionFactory.makeWebServiceException("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");
+			if (log.isDebugEnabled()) {
+	            log.debug("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");
+	        }
+			throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr1"));
 		}
 		for(String name:names){
 			requestObject = values.get(name);
 			if(requestObject == null){
-				throw ExceptionFactory.makeWebServiceException("Method Input parameter for NON Wrapped Request cannot be null");
+				if (log.isDebugEnabled()) {
+		            log.debug("Method Input parameter for NON Wrapped Request cannot be null");
+		        }
+				throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr2"));
 			}
 		}
 			
 		ctx = JAXBContext.newInstance(new Class[]{requestObject.getClass()});
+		if (log.isDebugEnabled()) {
+            log.debug("Attempting to create Block");
+        }
 		Block reqBlock = createJAXBBlock(requestObject, ctx);
+		if (log.isDebugEnabled()) {
+            log.debug("Block Created");
+        }
 		MessageContext requestCtx = initializeRequest(reqBlock);
 		return requestCtx;
 	}
@@ -239,7 +274,13 @@
 	private Object getWebResultObject(Class wrapperClazz, Object businessObject, String propertyName) throws JAXBWrapperException{
 		
 		JAXBWrapperTool wrapTool = new JAXBWrapperToolImpl();
+		if (log.isDebugEnabled()) {
+            log.debug("Attempting to unwrap object from WrapperClazz: "+wrapperClazz);
+        }
 		Object[] webResult = wrapTool.unWrap(businessObject,new ArrayList<String>(Arrays.asList(new String[]{propertyName})));
+		if (log.isDebugEnabled()) {
+            log.debug("Object unwrapped");
+        }
 		return webResult[0];
 		
 	}

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties?view=diff&rev=442275&r1=442274&r2=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/i18n/resource.properties Mon Sep 11 10:39:50 2006
@@ -98,3 +98,5 @@
 JavaDispErr2=Unable to load service implementation class {0}.
 InvalidWebParams=Invalid webParams found, Number of webparams defined does not match the input method parameters.
 AsyncListenerErr1=AxisCallback Object cannot be null, Internal error.
+DocLitProxyHandlerErr1=As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter.
+DocLitProxyHandlerErr2 = Method Input parameter for NON Wrapped Request cannot be null.

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockImpl.java?view=diff&rev=442275&r1=442274&r2=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/SourceBlockImpl.java Mon Sep 11 10:39:50 2006
@@ -170,9 +170,8 @@
            Result result = new StreamResult(out);
            Transformer transformer =  TransformerFactory.newInstance().newTransformer();
            transformer.transform(src, result); 
-	        XMLInputFactory inputfactory = XMLInputFactory.newInstance();
-	        ByteArrayInputStream bytes = new ByteArrayInputStream(out.toByteArray());
-	        return inputfactory.createXMLStreamReader(bytes);
+	       ByteArrayInputStream bytes = new ByteArrayInputStream(out.toByteArray());
+	       return inputFactory.createXMLStreamReader(bytes);
 	   }catch(TransformerException e){
 		   throw new XMLStreamException(e);
 	   }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java?view=diff&rev=442275&r1=442274&r2=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/JavaBeanDispatcher.java Mon Sep 11 10:39:50 2006
@@ -24,6 +24,7 @@
 
 import javax.jws.WebParam;
 import javax.jws.WebResult;
+import javax.jws.soap.SOAPBinding;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBException;
 import javax.xml.namespace.QName;
@@ -78,9 +79,10 @@
         mc.setOperationName(mc.getAxisMessageContext().getAxisOperation().getName());
         OperationDescription opDesc = getOperationDescription(mc);
         mc.setOperationDescription(opDesc);
-
-        Method target = resolveJavaMethodForOperation(mc);
-        Object[] params = getParameterData(target, mc);
+        
+        Mapper mapper = new MapperImpl();
+        Method target = mapper.getJavaMethod(mc, serviceImplClass);
+        Object[] params = mapper.getInputParameterData(mc, target);
 
         //At this point, we have the method that is going to be invoked and
         //the parameter data to invoke it with, so create an instance and 
@@ -88,8 +90,16 @@
         serviceInstance = createServiceInstance();
         Object response = target.invoke(serviceInstance, params);
         
-        Block responseBlock = createResponseWrapper(response, opDesc);
-
+        if(opDesc.isOneWay()){
+        	//Dont return response message context if its a one way operation.
+        	return null;
+        }
+        if(!opDesc.isOneWay() && target.getReturnType().getName().equals("void")){
+        	//look for holders
+        	throw new UnsupportedOperationException("Holders not supported yet");
+        }
+        Block responseBlock = mapper.getOutputParameterBlock(mc, response, target);
+       
         //Create the Message for the response
         MessageFactory factory = (MessageFactory) FactoryRegistry.getFactory(
                 MessageFactory.class);
@@ -103,112 +113,6 @@
     }
     
     /*
-     * Find the Java method that corresponds to the WSDL operation that was 
-     * targeted by the Axis2 Dispatchers.
-     */
-    // TODO: This should be done using the OperationDescriptor
-    private Method resolveJavaMethodForOperation(MessageContext mc) {
-        QName opName = mc.getOperationName();
-        if (opName == null)
-            // TODO: NLS
-            throw ExceptionFactory.makeWebServiceException("Operation name was not set");
-        
-        String localPart = opName.getLocalPart();
-        Method[] methods = serviceImplClass.getMethods();
-        for (int i = 0; i < methods.length; ++i) {
-            if (localPart.equals(methods[i].getName()))
-                return methods[i];
-        }
-        
-        if (log.isDebugEnabled()) {
-            log.debug("No Java method found for the operation");
-        }
-        // TODO: NLS
-        throw ExceptionFactory.makeWebServiceException("No Java method was found for the operation");
-    }
-    
-    /*
-     * Takes the contents of the message and uses that to prepare the parameters
-     * for the method that will be invoked.
-     */
-    private Object[] getParameterData(Method method, MessageContext mc) {
-        Class[] params = method.getParameterTypes();
-        
-        // If there are no params, we don't need to do anything.
-        if (params.length == 0)
-            return null;
-
-        try {
-            OperationDescription opDesc = mc.getOperationDescription();
-            
-            JAXBContext jbc = createJAXBContext(opDesc);
-            BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);
-            
-            Message msg = mc.getMessage();
-            Block wrapper = msg.getBodyBlock(0, jbc, factory);
-            
-            JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
-            
-            String[] webParamNames = opDesc.getWebParamNames();
-            ArrayList<String> elements = new ArrayList<String>(Arrays.asList(webParamNames));
-
-            Object param = wrapper.getBusinessObject(true);
-            Object[] contents = wrapperTool.unWrap(param, elements);
-            return contents;
-        } catch (Exception e) {
-            throw ExceptionFactory.makeWebServiceException(e);
-        }
-    }
-    
-    private JAXBContext createJAXBContext(OperationDescription opDesc) {
-        // This will only support Doc/Lit Wrapped params for now.
-        try {
-            String wrapperClass = opDesc.getRequestWrapperClassName();
-            if (wrapperClass != null) {
-                String wrapperPkg = wrapperClass.substring(0, wrapperClass.lastIndexOf("."));
-                JAXBContext jbc = JAXBContext.newInstance(wrapperPkg);
-                return jbc;
-            }
-            else {
-                throw ExceptionFactory.makeWebServiceException("");
-            }
-        } catch (JAXBException e) {
-            throw ExceptionFactory.makeWebServiceException(e);
-        }
-    }
-    
-    private Block createResponseWrapper(Object response, OperationDescription opDesc) {
-        try {
-            //We'll need a JAXBContext to marshall the response object(s).
-            JAXBContext jbc = createJAXBContext(opDesc);
-            BlockFactory bfactory = (BlockFactory) FactoryRegistry.getFactory(
-                    JAXBBlockFactory.class);
-            
-            String responseWrapper = opDesc.getResponseWrapperClassName();
-            Class responseWrapperClass = Class.forName(responseWrapper, false, Thread.currentThread().getContextClassLoader());
-            JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
-
-            String webResult = opDesc.getWebResultName();
-            ArrayList<String> responseParams = new ArrayList<String>();
-            responseParams.add(webResult);
- 
-            ArrayList<String> elements = new ArrayList<String>();
-            elements.add(webResult);
-            
-            Map<String, Object> responseParamValues = new HashMap<String, Object>();
-            responseParamValues.put(webResult, response);
-            
-            Object wrapper = wrapperTool.wrap(responseWrapperClass, 
-                    responseWrapper, responseParams, responseParamValues);
-            
-            Block block = bfactory.createFrom(wrapper ,jbc, null);
-            return block;
-        } catch (Exception e) {
-            throw ExceptionFactory.makeWebServiceException(e);
-        }
-    }
-    
-    /*
      * Gets the OperationDescription associated with the request that is currently
      * being processed.
      * 
@@ -232,4 +136,6 @@
         
         return op;        
     }
+    
+    
 }

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/Mapper.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/Mapper.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/Mapper.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/Mapper.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.server.dispatcher;
+
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Map;
+
+import javax.xml.bind.JAXBException;
+import javax.xml.stream.XMLStreamException;
+
+import org.apache.axis2.jaxws.core.MessageContext;
+import org.apache.axis2.jaxws.message.Block;
+import org.apache.axis2.jaxws.message.MessageException;
+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperException;
+/*
+ * This class is used to map xml/annotation data with java. We use mapper to retrive various java art effects by looking in Service and SEI annotations.
+ * If no annotation are specified we derive defaults.
+ */
+
+public interface Mapper {
+	
+	/**
+	 * Looks at the SOAPBinding annotation figures out if the request is BARE or Wrapped and accordingly returns Parameter objects for the java method.
+	 * @param mc
+	 * @param javaMethod
+	 * @return
+	 */
+	public Object[] getInputParameterData(MessageContext mc, Method javaMethod) throws JAXBException, MessageException, XMLStreamException, JAXBWrapperException;
+	
+	/**
+	 * Creates output message block that can be serialized as response from server.
+	 * @param mc
+	 * @param response
+	 * @return
+	 */
+	public Block getOutputParameterBlock(MessageContext mc, Object response, Method method)throws JAXBException, ClassNotFoundException, JAXBWrapperException, MessageException;
+	
+	/**
+	 * Reads java method from Message context operationName. 
+     * Find the Java method that corresponds to the WSDL operation that was 
+     * targeted by the Axis2 Dispatchers.
+     * @param mc
+	 * @return
+	 */
+	public Method getJavaMethod(MessageContext mc, Class serviceImplClass);
+	
+	/**
+	 * @param javaMethod
+	 * @param args
+	 * @return
+	 * creates a message context given a java method and input arguments.
+	 */
+	public MessageContext getMessageContext(Method javaMethod, Object[] args);
+	
+	/**
+	 * Reads input parameter names for java method.
+	 * @param method
+	 * @param objects
+	 * @return
+	 */
+	public ArrayList<String> getParamNames(Method method, Object[] objects);
+	
+	/**
+	 * creates name value pair for input parameters, skips AsyncHandler object from input parameter. 
+	 * @param objects
+	 * @param names
+	 * @return
+	 */
+	public Map<String, Object> getParamValues(Object[] objects, ArrayList<String> names);
+}

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/MapperImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/MapperImpl.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/MapperImpl.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/server/dispatcher/MapperImpl.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,305 @@
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ * Copyright 2006 International Business Machines Corp.
+ *
+ * Licensed 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.server.dispatcher;
+
+import java.lang.reflect.Method;
+import java.lang.reflect.ParameterizedType;
+import java.lang.reflect.Type;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.concurrent.Future;
+
+import javax.jws.soap.SOAPBinding;
+import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBException;
+import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+import org.apache.axis2.jaxws.ExceptionFactory;
+import org.apache.axis2.jaxws.core.MessageContext;
+import org.apache.axis2.jaxws.description.EndpointDescription;
+import org.apache.axis2.jaxws.description.EndpointInterfaceDescription;
+import org.apache.axis2.jaxws.description.OperationDescription;
+import org.apache.axis2.jaxws.description.ServiceDescription;
+import org.apache.axis2.jaxws.message.Block;
+import org.apache.axis2.jaxws.message.Message;
+import org.apache.axis2.jaxws.message.MessageException;
+import org.apache.axis2.jaxws.message.factory.BlockFactory;
+import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;
+import org.apache.axis2.jaxws.registry.FactoryRegistry;
+import org.apache.axis2.jaxws.wrapper.JAXBWrapperTool;
+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperException;
+import org.apache.axis2.jaxws.wrapper.impl.JAXBWrapperToolImpl;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+public class MapperImpl implements Mapper {
+	private static int SIZE = 1;
+	private static final Log log = LogFactory.getLog(MapperImpl.class);
+	public MapperImpl() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getParameterData(org.apache.axis2.jaxws.core.MessageContext, java.lang.reflect.Method)
+	 */
+	public Object[] getInputParameterData(MessageContext mc, Method javaMethod) throws JAXBException, MessageException, XMLStreamException, JAXBWrapperException {
+		
+		Message msg = mc.getMessage();
+		EndpointDescription ed = getEndpointDescription(mc);
+		Class[] paramTypes = javaMethod.getParameterTypes();
+		if(paramTypes == null){
+			//Method has no input parameters.
+			return null;
+		}
+		if(paramTypes.length == 0){
+			return null;
+		}
+		if(isSEIDocLitBare(ed)){
+			//Create the jaxbcontext for input parameter, for non wrap case there should be only one input param which is the Request Wrapper
+			if(paramTypes !=null && paramTypes.length >SIZE){
+				if (log.isDebugEnabled()) {
+		            log.debug("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");
+		        }
+				throw ExceptionFactory.makeWebServiceException("As per WS-I compliance, Multi part WSDL not allowed for Doc/Lit NON Wrapped request, Method invoked has multiple input parameter");
+			}
+			if(paramTypes !=null){
+				JAXBContext ctx = JAXBContext.newInstance(new Class[]{paramTypes[0]});
+				BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);
+				Block block = msg.getBodyBlock(0, ctx, factory);
+				Object obj = block.getBusinessObject(true);
+				return new Object[]{obj};
+			}
+		}
+		
+		if(isSEIDocLitWrapped(ed)){
+			OperationDescription opDesc = mc.getOperationDescription();
+            
+            JAXBContext jbc = createJAXBContext(opDesc);
+            BlockFactory factory = (BlockFactory) FactoryRegistry.getFactory(JAXBBlockFactory.class);
+        
+            Block wrapper = msg.getBodyBlock(0, jbc, factory);
+            
+            JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
+            
+            String[] webParamNames = opDesc.getWebParamNames();
+            ArrayList<String> elements = new ArrayList<String>(Arrays.asList(webParamNames));
+
+            Object param = wrapper.getBusinessObject(true);
+            Object[] contents = wrapperTool.unWrap(param, elements);
+            return contents;
+		}
+		return null;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getOutputParameterBlock(org.apache.axis2.jaxws.core.MessageContext, java.lang.Object)
+	 */
+	public Block getOutputParameterBlock(MessageContext mc, Object response, Method method) throws JAXBException, ClassNotFoundException, JAXBWrapperException, MessageException{
+		EndpointDescription ed = getEndpointDescription(mc);
+		OperationDescription opDesc = getOperationDescription(mc);
+		Class returnType = getReturnType(method);
+		if(isSEIDocLitBare(ed)){
+			if(returnType.isAssignableFrom(response.getClass())){
+				
+				BlockFactory bfactory = (BlockFactory) FactoryRegistry.getFactory(
+						JAXBBlockFactory.class);
+				JAXBContext ctx = JAXBContext.newInstance(new Class[]{returnType});
+				Block block = bfactory.createFrom(response, ctx, null);
+				return block;
+			}
+			else{
+				String webResult = opDesc.getWebResultName();
+				JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
+				ArrayList<String> elements = new ArrayList<String>(Arrays.asList(webResult));
+				
+	            Object[] contents = wrapperTool.unWrap(response, elements);
+	            for(Object obj:contents){
+	            	if(returnType.getClass().isAssignableFrom(obj.getClass())){
+	            		BlockFactory bfactory = (BlockFactory) FactoryRegistry.getFactory(
+	    						JAXBBlockFactory.class);
+	    				JAXBContext ctx = JAXBContext.newInstance(new Class[]{returnType});
+	    				Block block = bfactory.createFrom(response, ctx, null);
+	    				return block;
+	            	}
+	            }
+			}
+			
+			
+		}
+		if(isSEIDocLitWrapped(ed)){
+			
+	            //We'll need a JAXBContext to marshall the response object(s).
+	            JAXBContext jbc = createJAXBContext(opDesc);
+	            BlockFactory bfactory = (BlockFactory) FactoryRegistry.getFactory(
+	                    JAXBBlockFactory.class);
+	            
+	            String responseWrapper = opDesc.getResponseWrapperClassName();
+	            Class responseWrapperClass = null;
+	           
+	            responseWrapperClass = Class.forName(responseWrapper, false, Thread.currentThread().getContextClassLoader());
+	            
+	            JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
+
+	            String webResult = opDesc.getWebResultName();
+	            ArrayList<String> responseParams = new ArrayList<String>();
+	            responseParams.add(webResult);
+	 
+	            ArrayList<String> elements = new ArrayList<String>();
+	            elements.add(webResult);
+	            
+	            Map<String, Object> responseParamValues = new HashMap<String, Object>();
+	            responseParamValues.put(webResult, response);
+	            
+	            Object wrapper = wrapperTool.wrap(responseWrapperClass, 
+	                    responseWrapper, responseParams, responseParamValues);
+	            
+	            Block block = bfactory.createFrom(wrapper ,jbc, null);
+	            return block;
+	        
+		}
+		
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getJavaMethod(org.apache.axis2.jaxws.core.MessageContext)
+	 */
+	public Method getJavaMethod(MessageContext mc, Class serviceImplClass) {
+		 QName opName = mc.getOperationName();
+		 
+	        if (opName == null)
+	            // TODO: NLS
+	            throw ExceptionFactory.makeWebServiceException("Operation name was not set");
+	        
+	        String localPart = opName.getLocalPart();
+	        Method[] methods = serviceImplClass.getMethods();
+	        for (int i = 0; i < methods.length; ++i) {
+	            if (localPart.equals(methods[i].getName()))
+	                return methods[i];
+	        }
+	        
+	        if (log.isDebugEnabled()) {
+	            log.debug("No Java method found for the operation");
+	        }
+	        // TODO: NLS
+	        throw ExceptionFactory.makeWebServiceException("No Java method was found for the operation");
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getMessageContext(java.lang.reflect.Method, java.lang.Object[])
+	 */
+	public MessageContext getMessageContext(Method javaMethod, Object[] args) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getParamNames(java.lang.reflect.Method, java.lang.Object[])
+	 */
+	public ArrayList<String> getParamNames(Method method, Object[] objects){
+		return null;
+	}
+	
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.server.dispatcher.Mapper#getParamValues(java.lang.Object[], java.util.ArrayList)
+	 */
+	public Map<String, Object> getParamValues(Object[] objects, ArrayList<String> names){
+		return null;
+	}
+	
+	private EndpointDescription getEndpointDescription(MessageContext mc){
+  	  ServiceDescription sd = mc.getServiceDescription();
+        EndpointDescription[] eds = sd.getEndpointDescriptions();
+        return eds[0];
+  }
+  
+  private boolean isSEIDocLitBare(EndpointDescription ed){
+		SOAPBinding.ParameterStyle style = ed.getEndpointInterfaceDescription().getSoapBindingParameterStyle();
+		return style == SOAPBinding.ParameterStyle.BARE;
+	}
+	
+	private  boolean isSEIDocLitWrapped(EndpointDescription ed){
+		SOAPBinding.ParameterStyle style = ed.getEndpointInterfaceDescription().getSoapBindingParameterStyle();
+		return style == SOAPBinding.ParameterStyle.WRAPPED;
+	} 
+	
+	private JAXBContext createJAXBContext(OperationDescription opDesc) {
+        // This will only support Doc/Lit Wrapped params for now.
+        try {
+            String wrapperClass = opDesc.getRequestWrapperClassName();
+            if (wrapperClass != null) {
+                String wrapperPkg = wrapperClass.substring(0, wrapperClass.lastIndexOf("."));
+                JAXBContext jbc = JAXBContext.newInstance(wrapperPkg);
+                return jbc;
+            }
+            else {
+                throw ExceptionFactory.makeWebServiceException("");
+            }
+        } catch (JAXBException e) {
+            throw ExceptionFactory.makeWebServiceException(e);
+        }
+    }
+	
+	private OperationDescription getOperationDescription(MessageContext mc) {
+        ServiceDescription sd = mc.getServiceDescription();
+        EndpointDescription[] eds = sd.getEndpointDescriptions();
+        EndpointDescription ed = eds[0];
+        EndpointInterfaceDescription eid = ed.getEndpointInterfaceDescription();
+        
+        OperationDescription[] ops = eid.getOperation(mc.getOperationName());
+        OperationDescription op = ops[0];
+        
+        if (log.isDebugEnabled()) {
+            log.debug("wsdl operation: " + op.getName());
+            log.debug("   java method: " + op.getJavaMethodName());
+        }
+        
+        return op;        
+    }
+	
+	private Class getReturnType(Method seiMethod){
+		Class returnType = seiMethod.getReturnType();
+		//pooling implementation
+		if(Response.class.isAssignableFrom(returnType)){
+			Type type = seiMethod.getGenericReturnType();
+			ParameterizedType pType = (ParameterizedType) type;
+			return (Class)pType.getActualTypeArguments()[0];	
+		}
+		//Callback Implementation
+		if(Future.class.isAssignableFrom(returnType)){
+			Type[] type = seiMethod.getGenericParameterTypes();
+			Class parameters[]= seiMethod.getParameterTypes();
+			int i=0;
+			for(Class param:parameters){
+				if(AsyncHandler.class.isAssignableFrom(param)){
+					ParameterizedType pType = (ParameterizedType)type[i];
+					return (Class)pType.getActualTypeArguments()[0];
+				}
+				i++;
+			}
+		}
+			
+		
+		
+		return returnType;	
+	}
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclit_nonwrap.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclit_nonwrap.wsdl?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclit_nonwrap.wsdl (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclit_nonwrap.wsdl Mon Sep 11 10:39:50 2006
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://nonwrap.sample.test.org"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="proxy"
+	targetNamespace="http://nonwrap.sample.test.org">
+	
+	<wsdl:types>
+		<xsd:schema
+			targetNamespace="http://nonwrap.sample.test.org"
+			xmlns:tns="http://nonwrap.sample.test.org"
+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+			<xsd:element name="MyFault" type="xsd:string" />
+			
+			<xsd:element name="oneWayVoid">
+				<xsd:complexType>
+					<xsd:sequence/>
+				</xsd:complexType>
+			</xsd:element>				
+			
+			<xsd:element name="oneWay">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="oneway_str" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>				
+			
+			<xsd:element name="twoWayHolder">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="twoWayHolder_str" type="xsd:string" />
+						<xsd:element name="twoWayHolder_int" type="xsd:int" />						
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			
+			<xsd:element name="twoWay">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="twoway_str" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>			
+			
+			<xsd:element name="ReturnType">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="return_str" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>				
+
+			<!-- fin op definition -->
+			
+			<xsd:element name="finOp">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="op" type="tns:FinancialOperation" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>			
+
+			<xsd:element name="finOpResponse">
+				<xsd:complexType>
+				<xsd:sequence>
+					<xsd:element name="response" type="tns:FinancialOperation" />
+				</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:complexType name="FinancialOperation">
+				<xsd:sequence>
+					<xsd:element name="amount" type="xsd:float" />
+				</xsd:sequence>
+			</xsd:complexType>
+
+			<xsd:complexType name="Withdraw">
+			  <xsd:complexContent>
+			    <xsd:extension base="tns:FinancialOperation">
+			      <xsd:sequence>
+			        <xsd:element name="memo" type="xsd:string" />
+			      </xsd:sequence>
+			    </xsd:extension>
+			  </xsd:complexContent>
+			</xsd:complexType>
+			
+			<xsd:complexType name="Deposit">
+			  <xsd:complexContent>
+			    <xsd:extension base="tns:FinancialOperation">
+			      <xsd:sequence>
+			        <xsd:element name="status" type="xsd:string" />
+			      </xsd:sequence>
+			     </xsd:extension>
+			  </xsd:complexContent>
+			</xsd:complexType>	
+
+		</xsd:schema>
+	</wsdl:types>
+
+	<wsdl:message name="oneWayVoidRequest">
+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />
+	</wsdl:message>
+
+	<wsdl:message name="oneWayRequest">
+		<wsdl:part name="allByMyself" element="tns:oneWay" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayHolderRequest">
+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayHolderResponse">
+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />
+	</wsdl:message>
+	
+	<wsdl:message name="twoWayRequest">
+		<wsdl:part name="allByMyself" element="tns:twoWay" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayResponse">
+		<wsdl:part name="allByMyself" element="tns:ReturnType" />
+	</wsdl:message>	
+	
+	<wsdl:portType name="DocLitNonWrapPortType">
+
+		<wsdl:operation name="oneWayVoid">
+			<wsdl:input message="tns:oneWayVoidRequest" />
+		</wsdl:operation>
+
+		<wsdl:operation name="oneWay">
+			<wsdl:input message="tns:oneWayRequest" />
+		</wsdl:operation>
+		
+		<wsdl:operation name="twoWayHolder">
+			<wsdl:input message="tns:twoWayHolderRequest" />
+			<wsdl:output message="tns:twoWayHolderResponse" />
+		</wsdl:operation>
+		
+		<wsdl:operation name="twoWay">
+			<wsdl:input message="tns:twoWayRequest" />
+			<wsdl:output message="tns:twoWayResponse" />
+		</wsdl:operation>		
+			
+	</wsdl:portType>
+	
+	<wsdl:binding name="DocLitNonWrap" type="tns:DocLitNonWrapPortType">
+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+
+		<wsdl:operation name="oneWayVoid">
+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal"  />
+			</wsdl:input>
+		</wsdl:operation>
+
+		<wsdl:operation name="oneWay">
+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal"  />
+			</wsdl:input>
+		</wsdl:operation>
+		
+		<wsdl:operation name="twoWayHolder">
+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal"  />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal"  />
+			</wsdl:output>
+	
+		</wsdl:operation>
+		
+		<wsdl:operation name="twoWay">
+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal"  />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal"  />
+			</wsdl:output>
+	
+		</wsdl:operation>		
+	
+	</wsdl:binding>
+	
+	<wsdl:service name="DocLitNonWrapService">
+		<wsdl:port binding="tns:DocLitNonWrap" name="ProxyDocLitWrappedPort">
+			<soap:address location="http://localhost:8080/axis2/services/DocLitNonWrapService" />
+		</wsdl:port>
+	</wsdl:service>
+	
+</wsdl:definitions>

Added: webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitwrap.wsdl Mon Sep 11 10:39:50 2006
@@ -0,0 +1,282 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://wrap.sample.test.org"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="wrapjavabeantest"
+	targetNamespace="http://wrap.sample.test.org">
+
+	<wsdl:types>
+		<xsd:schema
+			targetNamespace="http://wrap.sample.test.org"
+			xmlns:tns="http://wrap.sample.test.org"
+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+			<xsd:element name="MyFault" type="xsd:string" />
+
+			<xsd:element name="oneWayVoid">
+				<xsd:complexType>
+					<xsd:sequence />
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:element name="oneWay">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="oneway_str"
+							type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:element name="twoWayHolder">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="twoWayHolder_str"
+							type="xsd:string" />
+						<xsd:element name="twoWayHolder_int"
+							type="xsd:int" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:element name="twoWay">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="twoway_str"
+							type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			
+			<xsd:element name="ReturnType">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="return_str"
+							type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:element name="invoke">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="invoke_str"
+							type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:element name="invokeReturnType">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="return_str"
+							type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+
+			
+
+			<!-- fin op definition -->
+
+			<xsd:element name="finOp">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="op"
+							type="tns:FinancialOperation" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:element name="finOpResponse">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="response"
+							type="tns:FinancialOperation" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:complexType name="FinancialOperation">
+				<xsd:sequence>
+					<xsd:element name="amount" type="xsd:float" />
+				</xsd:sequence>
+			</xsd:complexType>
+
+			<xsd:complexType name="Withdraw">
+				<xsd:complexContent>
+					<xsd:extension base="tns:FinancialOperation">
+						<xsd:sequence>
+							<xsd:element name="memo" type="xsd:string" />
+						</xsd:sequence>
+					</xsd:extension>
+				</xsd:complexContent>
+			</xsd:complexType>
+
+			<xsd:complexType name="Deposit">
+				<xsd:complexContent>
+					<xsd:extension base="tns:FinancialOperation">
+						<xsd:sequence>
+							<xsd:element name="status"
+								type="xsd:string" />
+						</xsd:sequence>
+					</xsd:extension>
+				</xsd:complexContent>
+			</xsd:complexType>
+
+		</xsd:schema>
+	</wsdl:types>
+
+	<wsdl:message name="oneWayVoidRequest">
+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />
+	</wsdl:message>
+
+	<wsdl:message name="oneWayRequest">
+		<wsdl:part name="allByMyself" element="tns:oneWay" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayHolderRequest">
+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayHolderResponse">
+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayRequest">
+		<wsdl:part name="allByMyself" element="tns:twoWay" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayResponse">
+		<wsdl:part name="allByMyself" element="tns:ReturnType" />
+	</wsdl:message>
+
+	<wsdl:message name="invokeRequest">
+		<wsdl:part name="allByMyself" element="tns:invoke" />
+	</wsdl:message>
+
+	<wsdl:message name="invokeResponse">
+		<wsdl:part name="allByMyself" element="tns:ReturnType" />
+	</wsdl:message>
+
+	<wsdl:message name="finOpRequest">
+		<wsdl:part name="op" element="tns:finOp" />
+	</wsdl:message>
+
+	<wsdl:message name="finOpResponse">
+		<wsdl:part name="op" element="tns:finOpResponse" />
+	</wsdl:message>
+
+	<wsdl:portType name="DocLitWrap">
+
+		<wsdl:operation name="oneWayVoid">
+			<wsdl:input message="tns:oneWayVoidRequest" />
+		</wsdl:operation>
+
+		<wsdl:operation name="oneWay">
+			<wsdl:input message="tns:oneWayRequest" />
+		</wsdl:operation>
+
+		<wsdl:operation name="twoWayHolder">
+			<wsdl:input message="tns:twoWayHolderRequest" />
+			<wsdl:output message="tns:twoWayHolderResponse" />
+		</wsdl:operation>
+
+		<wsdl:operation name="twoWay">
+			<wsdl:input message="tns:twoWayRequest" />
+			<wsdl:output message="tns:twoWayResponse" />
+		</wsdl:operation>
+		
+		<wsdl:operation name="invoke">
+			<wsdl:input message="tns:invokeRequest" />
+			<wsdl:output message="tns:invokeResponse" />
+		</wsdl:operation>
+		
+		<wsdl:operation name="finOp">
+			<wsdl:input message="tns:finOpRequest" />
+			<wsdl:output message="tns:finOpResponse" />
+		</wsdl:operation>
+
+	</wsdl:portType>
+
+	<wsdl:binding name="DocLitWrap"
+		type="tns:DocLitWrap">
+		<soap:binding style="document"
+			transport="http://schemas.xmlsoap.org/soap/http" />
+
+		<wsdl:operation name="oneWayVoid">
+			<soap:operation
+				soapAction="http://wrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+		</wsdl:operation>
+
+		<wsdl:operation name="oneWay">
+			<soap:operation
+				soapAction="http://wrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+		</wsdl:operation>
+
+		<wsdl:operation name="twoWayHolder">
+			<soap:operation
+				soapAction="http://wrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+
+		</wsdl:operation>
+
+		<wsdl:operation name="twoWay">
+			<soap:operation
+				soapAction="http://wrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+
+		</wsdl:operation>
+		
+		<wsdl:operation name="invoke">
+			<soap:operation
+				soapAction="http://wrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+
+		</wsdl:operation>
+		
+		<wsdl:operation name="finOp">
+			<soap:operation
+				soapAction="http://wrap.sample.test.org/finOp" />
+			<wsdl:input>
+				<soap:body use="literal" />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal" />
+			</wsdl:output>
+
+		</wsdl:operation>
+
+	</wsdl:binding>
+
+	<wsdl:service name="DocLitWrapService">
+		<wsdl:port binding="tns:DocLitWrap"
+			name="DocLitWrapPort">
+			<soap:address
+				location="http://localhost:8080/axis2/services/DocLitWrapService" />
+		</wsdl:port>
+	</wsdl:service>
+
+</wsdl:definitions>

Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java?view=diff&rev=442275&r1=442274&r2=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/framework/JAXWSTest.java Mon Sep 11 10:39:50 2006
@@ -40,6 +40,8 @@
 import org.apache.axis2.jaxws.provider.*;
 import org.apache.axis2.jaxws.sample.AddNumbersTests;
 import org.apache.axis2.jaxws.sample.AddressBookTests;
+import org.apache.axis2.jaxws.sample.NonWrapTests;
+import org.apache.axis2.jaxws.sample.WrapTests;
 import org.apache.axis2.proxy.ProxyNonWrappedTests;
 import org.apache.axis2.proxy.ProxyTests;
 
@@ -82,6 +84,8 @@
         suite.addTestSuite(ExceptionFactoryTests.class);
 
         suite.addTestSuite(AddressBookTests.class);
+        suite.addTestSuite(NonWrapTests.class);
+        suite.addTestSuite(WrapTests.class);
         suite.addTestSuite(AddNumbersTests.class);
         
         // Start (and stop) the server only once for all the tests

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/AsyncCallback.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,49 @@
+/**
+ * 
+ */
+package org.apache.axis2.jaxws.sample;
+
+import java.util.concurrent.ExecutionException;
+
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Response;
+
+import org.test.sample.nonwrap.ReturnType;
+
+
+
+/**
+ * @author nvthaker
+ *
+ */
+public class AsyncCallback implements AsyncHandler {
+
+	/**
+	 * 
+	 */
+	public AsyncCallback() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	/* (non-Javadoc)
+	 * @see javax.xml.ws.AsyncHandler#handleResponse(javax.xml.ws.Response)
+	 */
+	public void handleResponse(Response response) {
+		try{
+			Object obj = response.get();
+			if(obj instanceof ReturnType){
+				ReturnType type = (ReturnType)obj;
+				System.out.println(">>Return String = "+type.getReturnStr());
+				return;
+			}
+			
+		}catch(ExecutionException e){
+			e.printStackTrace();
+		}catch(InterruptedException e){
+			e.printStackTrace();
+		}
+
+	}
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/NonWrapTests.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,63 @@
+/**
+ * 
+ */
+package org.apache.axis2.jaxws.sample;
+
+import java.util.concurrent.Future;
+
+import org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType;
+import org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapService;
+import org.test.sample.nonwrap.ObjectFactory;
+import org.test.sample.nonwrap.ReturnType;
+import org.test.sample.nonwrap.TwoWay;
+
+import junit.framework.TestCase;
+
+public class NonWrapTests extends TestCase {
+
+	
+	public NonWrapTests() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param arg0
+	 */
+	public NonWrapTests(String arg0) {
+		super(arg0);
+		// TODO Auto-generated constructor stub
+	}
+	
+	public void testTwoWaySync(){
+		System.out.println("------------------------------");
+		System.out.println("Test : "+getName());
+		try{
+			TwoWay twoWay = new ObjectFactory().createTwoWay();
+			twoWay.setTwowayStr("testing sync call for java bean non wrap endpoint");
+			DocLitNonWrapService service = new DocLitNonWrapService();
+			DocLitNonWrapPortType proxy = service.getDocLitNonWrapPort();
+			ReturnType returnValue = proxy.twoWay(twoWay);
+			System.out.println(returnValue.getReturnStr());
+			System.out.println("------------------------------");
+		}catch(Exception e){
+			e.printStackTrace();
+		}
+	}
+	public void testTwoWayASyncCallback(){
+		System.out.println("------------------------------");
+		System.out.println("Test : "+getName());
+		try{
+			TwoWay twoWay = new ObjectFactory().createTwoWay();
+			twoWay.setTwowayStr("testing Async call for java bean non wrap endpoint");
+			DocLitNonWrapService service = new DocLitNonWrapService();
+			DocLitNonWrapPortType proxy = service.getDocLitNonWrapPort();
+			AsyncCallback callback = new AsyncCallback();
+			Future<?> monitor = proxy.twoWayAsync(twoWay, callback);
+			assertNotNull(monitor);
+			System.out.println("------------------------------");
+		}catch(Exception e){
+			e.printStackTrace();
+		}
+	}
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/WrapTests.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,63 @@
+/**
+ * 
+ */
+package org.apache.axis2.jaxws.sample;
+
+import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap;
+import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrapService;
+
+import junit.framework.TestCase;
+
+/**
+ * @author nvthaker
+ *
+ */
+public class WrapTests extends TestCase {
+
+	/**
+	 * 
+	 */
+	public WrapTests() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	/**
+	 * @param arg0
+	 */
+	public WrapTests(String arg0) {
+		super(arg0);
+		// TODO Auto-generated constructor stub
+	}
+	
+	public void testTwoWaySync(){
+		System.out.println("------------------------------");
+		System.out.println("Test : "+getName());
+		try{
+			String reqString = "Test twoWay Sync";
+			DocLitWrapService service = new DocLitWrapService();
+			DocLitWrap proxy = service.getDocLitWrapPort();
+			String response = proxy.twoWay(reqString);
+			System.out.println("Sync Response =" + response);
+			System.out.println("------------------------------");
+		}catch(Exception e){
+			e.printStackTrace();
+		}
+	}
+	
+	public void testOneWayVoidWithNoInputParams(){
+		System.out.println("------------------------------");
+		System.out.println("Test : "+getName());
+		try{
+			
+			DocLitWrapService service = new DocLitWrapService();
+			DocLitWrap proxy = service.getDocLitWrapPort();
+			proxy.oneWayVoid();
+			
+			System.out.println("------------------------------");
+		}catch(Exception e){
+			e.printStackTrace();
+		}
+	}
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/DocLitNonWrapPortTypeImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/DocLitNonWrapPortTypeImpl.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/DocLitNonWrapPortTypeImpl.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/DocLitNonWrapPortTypeImpl.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,103 @@
+/**
+ * 
+ */
+package org.apache.axis2.jaxws.sample.nonwrap;
+
+import java.util.concurrent.Future;
+
+import javax.jws.WebService;
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Holder;
+import javax.xml.ws.Response;
+
+import org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType;
+import org.test.sample.nonwrap.ObjectFactory;
+import org.test.sample.nonwrap.OneWay;
+import org.test.sample.nonwrap.OneWayVoid;
+import org.test.sample.nonwrap.ReturnType;
+import org.test.sample.nonwrap.TwoWay;
+import org.test.sample.nonwrap.TwoWayHolder;
+
+@WebService(endpointInterface="org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType")
+public class DocLitNonWrapPortTypeImpl implements DocLitNonWrapPortType {
+
+	/**
+	 * 
+	 */
+	public DocLitNonWrapPortTypeImpl() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#oneWayVoid(org.test.sample.nonwrap.OneWayVoid)
+	 */
+	public void oneWayVoid(OneWayVoid allByMyself) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#oneWay(org.test.sample.nonwrap.OneWay)
+	 */
+	public void oneWay(OneWay allByMyself) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayHolderAsync(org.test.sample.nonwrap.TwoWayHolder)
+	 */
+	public Response<TwoWayHolder> twoWayHolderAsync(TwoWayHolder allByMyself) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayHolderAsync(org.test.sample.nonwrap.TwoWayHolder, javax.xml.ws.AsyncHandler)
+	 */
+	public Future<?> twoWayHolderAsync(TwoWayHolder allByMyself,
+			AsyncHandler<TwoWayHolder> asyncHandler) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayHolder(javax.xml.ws.Holder)
+	 */
+	public void twoWayHolder(Holder<TwoWayHolder> allByMyself) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayAsync(org.test.sample.nonwrap.TwoWay)
+	 */
+	public Response<ReturnType> twoWayAsync(TwoWay allByMyself) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWayAsync(org.test.sample.nonwrap.TwoWay, javax.xml.ws.AsyncHandler)
+	 */
+	public Future<?> twoWayAsync(TwoWay allByMyself,
+			AsyncHandler<ReturnType> asyncHandler) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.nonwrap.sei.DocLitNonWrapPortType#twoWay(org.test.sample.nonwrap.TwoWay)
+	 */
+	public ReturnType twoWay(TwoWay twoWay) {
+		
+		String requestString = twoWay.getTwowayStr();
+		ObjectFactory of = new ObjectFactory();
+		ReturnType rt = of.createReturnType();
+		rt.setReturnStr("Acknowledgement : Request String received = "+ requestString);
+		
+		return rt;
+	}
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl Mon Sep 11 10:39:50 2006
@@ -0,0 +1,196 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
+	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
+	xmlns:tns="http://nonwrap.sample.test.org"
+	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="proxy"
+	targetNamespace="http://nonwrap.sample.test.org">
+	
+	<wsdl:types>
+		<xsd:schema
+			targetNamespace="http://nonwrap.sample.test.org"
+			xmlns:tns="http://nonwrap.sample.test.org"
+			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+
+			<xsd:element name="MyFault" type="xsd:string" />
+			
+			<xsd:element name="oneWayVoid">
+				<xsd:complexType>
+					<xsd:sequence/>
+				</xsd:complexType>
+			</xsd:element>				
+			
+			<xsd:element name="oneWay">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="oneway_str" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>				
+			
+			<xsd:element name="twoWayHolder">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="twoWayHolder_str" type="xsd:string" />
+						<xsd:element name="twoWayHolder_int" type="xsd:int" />						
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+			
+			<xsd:element name="twoWay">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="twoway_str" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>			
+			
+			<xsd:element name="ReturnType">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="return_str" type="xsd:string" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>				
+
+			<!-- fin op definition -->
+			
+			<xsd:element name="finOp">
+				<xsd:complexType>
+					<xsd:sequence>
+						<xsd:element name="op" type="tns:FinancialOperation" />
+					</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>			
+
+			<xsd:element name="finOpResponse">
+				<xsd:complexType>
+				<xsd:sequence>
+					<xsd:element name="response" type="tns:FinancialOperation" />
+				</xsd:sequence>
+				</xsd:complexType>
+			</xsd:element>
+
+			<xsd:complexType name="FinancialOperation">
+				<xsd:sequence>
+					<xsd:element name="amount" type="xsd:float" />
+				</xsd:sequence>
+			</xsd:complexType>
+
+			<xsd:complexType name="Withdraw">
+			  <xsd:complexContent>
+			    <xsd:extension base="tns:FinancialOperation">
+			      <xsd:sequence>
+			        <xsd:element name="memo" type="xsd:string" />
+			      </xsd:sequence>
+			    </xsd:extension>
+			  </xsd:complexContent>
+			</xsd:complexType>
+			
+			<xsd:complexType name="Deposit">
+			  <xsd:complexContent>
+			    <xsd:extension base="tns:FinancialOperation">
+			      <xsd:sequence>
+			        <xsd:element name="status" type="xsd:string" />
+			      </xsd:sequence>
+			     </xsd:extension>
+			  </xsd:complexContent>
+			</xsd:complexType>	
+
+		</xsd:schema>
+	</wsdl:types>
+
+	<wsdl:message name="oneWayVoidRequest">
+		<wsdl:part name="allByMyself" element="tns:oneWayVoid" />
+	</wsdl:message>
+
+	<wsdl:message name="oneWayRequest">
+		<wsdl:part name="allByMyself" element="tns:oneWay" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayHolderRequest">
+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayHolderResponse">
+		<wsdl:part name="allByMyself" element="tns:twoWayHolder" />
+	</wsdl:message>
+	
+	<wsdl:message name="twoWayRequest">
+		<wsdl:part name="allByMyself" element="tns:twoWay" />
+	</wsdl:message>
+
+	<wsdl:message name="twoWayResponse">
+		<wsdl:part name="allByMyself" element="tns:ReturnType" />
+	</wsdl:message>	
+	
+	<wsdl:portType name="DocLitNonWrapPortType">
+
+		<wsdl:operation name="oneWayVoid">
+			<wsdl:input message="tns:oneWayVoidRequest" />
+		</wsdl:operation>
+
+		<wsdl:operation name="oneWay">
+			<wsdl:input message="tns:oneWayRequest" />
+		</wsdl:operation>
+		
+		<wsdl:operation name="twoWayHolder">
+			<wsdl:input message="tns:twoWayHolderRequest" />
+			<wsdl:output message="tns:twoWayHolderResponse" />
+		</wsdl:operation>
+		
+		<wsdl:operation name="twoWay">
+			<wsdl:input message="tns:twoWayRequest" />
+			<wsdl:output message="tns:twoWayResponse" />
+		</wsdl:operation>		
+			
+	</wsdl:portType>
+	
+	<wsdl:binding name="DocLitNonWrap" type="tns:DocLitNonWrapPortType">
+		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />
+
+		<wsdl:operation name="oneWayVoid">
+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal"  />
+			</wsdl:input>
+		</wsdl:operation>
+
+		<wsdl:operation name="oneWay">
+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal"  />
+			</wsdl:input>
+		</wsdl:operation>
+		
+		<wsdl:operation name="twoWayHolder">
+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal"  />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal"  />
+			</wsdl:output>
+	
+		</wsdl:operation>
+		
+		<wsdl:operation name="twoWay">
+			<soap:operation soapAction="http://nonwrap.sample.test.org/twoWayReturn" />
+			<wsdl:input>
+				<soap:body use="literal"  />
+			</wsdl:input>
+			<wsdl:output>
+				<soap:body use="literal"  />
+			</wsdl:output>
+	
+		</wsdl:operation>		
+	
+	</wsdl:binding>
+	
+	<wsdl:service name="DocLitNonWrapService">
+		<wsdl:port binding="tns:DocLitNonWrap" name="DocLitNonWrapPort">
+			<soap:address location="http://localhost:8080/axis2/services/DocLitNonWrapService" />
+		</wsdl:port>
+	</wsdl:service>
+	
+</wsdl:definitions>

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/services.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/services.xml?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/services.xml (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/services.xml Mon Sep 11 10:39:50 2006
@@ -0,0 +1,12 @@
+<serviceGroup>
+ <service name="DocLitNonWrapService">
+  <messageReceivers>
+   <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" class="org.apache.axis2.jaxws.server.JAXWSMessageReceiver"/>
+  </messageReceivers>
+  <parameter locked="false" name="ServiceClass">org.apache.axis2.jaxws.sample.nonwrap.DocLitNonWrapPortTypeImpl</parameter>
+  <operation name="invoke" mep="http://www.w3.org/2004/08/wsdl/in-out">
+    <actionMapping/>
+  </operation>
+ </service>
+</serviceGroup>
+

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapPortType.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapPortType.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapPortType.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapPortType.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,126 @@
+
+package org.apache.axis2.jaxws.sample.nonwrap.sei;
+
+import java.util.concurrent.Future;
+import javax.jws.Oneway;
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebParam.Mode;
+import javax.jws.WebResult;
+import javax.jws.WebService;
+import javax.jws.soap.SOAPBinding;
+import javax.jws.soap.SOAPBinding.ParameterStyle;
+import javax.xml.ws.AsyncHandler;
+import javax.xml.ws.Holder;
+import javax.xml.ws.Response;
+
+import org.test.sample.nonwrap.OneWay;
+import org.test.sample.nonwrap.OneWayVoid;
+import org.test.sample.nonwrap.ReturnType;
+import org.test.sample.nonwrap.TwoWay;
+import org.test.sample.nonwrap.TwoWayHolder;
+
+
+/**
+ * This class was generated by the JAXWS SI.
+ * JAX-WS RI 2.0_01-b15-fcs
+ * Generated source version: 2.0
+ * 
+ */
+@WebService(name = "DocLitNonWrapPortType", targetNamespace = "http://nonwrap.sample.test.org")
+@SOAPBinding(parameterStyle = ParameterStyle.BARE)
+public interface DocLitNonWrapPortType {
+
+
+    /**
+     * 
+     * @param allByMyself
+     */
+    @WebMethod(action = "http://nonwrap.sample.test.org/twoWayReturn")
+    @Oneway
+    public void oneWayVoid(
+        @WebParam(name = "oneWayVoid", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")
+        OneWayVoid allByMyself);
+
+    /**
+     * 
+     * @param allByMyself
+     */
+    @WebMethod(action = "http://nonwrap.sample.test.org/twoWayReturn")
+    @Oneway
+    public void oneWay(
+        @WebParam(name = "oneWay", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")
+        OneWay allByMyself);
+
+    /**
+     * 
+     * @param allByMyself
+     * @return
+     *     returns javax.xml.ws.Response<org.test.sample.nonwrap.TwoWayHolder>
+     */
+    @WebMethod(operationName = "twoWayHolder", action = "http://nonwrap.sample.test.org/twoWayReturn")
+    public Response<TwoWayHolder> twoWayHolderAsync(
+        @WebParam(name = "twoWayHolder", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")
+        TwoWayHolder allByMyself);
+
+    /**
+     * 
+     * @param allByMyself
+     * @param asyncHandler
+     * @return
+     *     returns java.util.concurrent.Future<? extends java.lang.Object>
+     */
+    @WebMethod(operationName = "twoWayHolder", action = "http://nonwrap.sample.test.org/twoWayReturn")
+    public Future<?> twoWayHolderAsync(
+        @WebParam(name = "twoWayHolder", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")
+        TwoWayHolder allByMyself,
+        @WebParam(name = "twoWayHolderResponse", targetNamespace = "", partName = "asyncHandler")
+        AsyncHandler<TwoWayHolder> asyncHandler);
+
+    /**
+     * 
+     * @param allByMyself
+     */
+    @WebMethod(action = "http://nonwrap.sample.test.org/twoWayReturn")
+    public void twoWayHolder(
+        @WebParam(name = "twoWayHolder", targetNamespace = "http://nonwrap.sample.test.org", mode = Mode.INOUT, partName = "allByMyself")
+        Holder<TwoWayHolder> allByMyself);
+
+    /**
+     * 
+     * @param allByMyself
+     * @return
+     *     returns javax.xml.ws.Response<org.test.sample.nonwrap.ReturnType>
+     */
+    @WebMethod(operationName = "twoWay", action = "http://nonwrap.sample.test.org/twoWayReturn")
+    public Response<ReturnType> twoWayAsync(
+        @WebParam(name = "twoWay", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")
+        TwoWay allByMyself);
+
+    /**
+     * 
+     * @param allByMyself
+     * @param asyncHandler
+     * @return
+     *     returns java.util.concurrent.Future<? extends java.lang.Object>
+     */
+    @WebMethod(operationName = "twoWay", action = "http://nonwrap.sample.test.org/twoWayReturn")
+    public Future<?> twoWayAsync(
+        @WebParam(name = "twoWay", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")
+        TwoWay allByMyself,
+        @WebParam(name = "twoWayResponse", targetNamespace = "", partName = "asyncHandler")
+        AsyncHandler<ReturnType> asyncHandler);
+
+    /**
+     * 
+     * @param allByMyself
+     * @return
+     *     returns org.test.sample.nonwrap.ReturnType
+     */
+    @WebMethod(action = "http://nonwrap.sample.test.org/twoWayReturn")
+    @WebResult(name = "ReturnType", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")
+    public ReturnType twoWay(
+        @WebParam(name = "twoWay", targetNamespace = "http://nonwrap.sample.test.org", partName = "allByMyself")
+        TwoWay allByMyself);
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapService.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapService.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/nonwrap/sei/DocLitNonWrapService.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,62 @@
+
+package org.apache.axis2.jaxws.sample.nonwrap.sei;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import javax.xml.namespace.QName;
+import javax.xml.ws.Service;
+import javax.xml.ws.WebEndpoint;
+import javax.xml.ws.WebServiceClient;
+
+
+/**
+ * This class was generated by the JAXWS SI.
+ * JAX-WS RI 2.0_01-b15-fcs
+ * Generated source version: 2.0
+ * 
+ */
+@WebServiceClient(name = "DocLitNonWrapService", targetNamespace = "http://nonwrap.sample.test.org", wsdlLocation = "doclit_nonwrap.wsdl")
+public class DocLitNonWrapService
+    extends Service
+{
+
+    private final static URL DOCLITNONWRAPSERVICE_WSDL_LOCATION;
+    private static String wsdlLocation="/test/org/apache/axis2/jaxws/sample/nonwrap/META-INF/doclit_nonwrap.wsdl";
+    static {
+        URL url = null;
+        try {
+        	try{
+	        	String baseDir = new File(".").getCanonicalPath();
+	        	wsdlLocation = new File(baseDir + wsdlLocation).getAbsolutePath();
+        	}catch(Exception e){
+        		e.printStackTrace();
+        	}
+        	File file = new File(wsdlLocation);
+        	url = file.toURL();
+        } catch (MalformedURLException e) {
+            e.printStackTrace();
+        }
+        DOCLITNONWRAPSERVICE_WSDL_LOCATION = url;
+    }
+
+    public DocLitNonWrapService(URL wsdlLocation, QName serviceName) {
+        super(wsdlLocation, serviceName);
+    }
+
+    public DocLitNonWrapService() {
+        super(DOCLITNONWRAPSERVICE_WSDL_LOCATION, new QName("http://nonwrap.sample.test.org", "DocLitNonWrapService"));
+    }
+
+    /**
+     * 
+     * @return
+     *     returns DocLitNonWrapPortType
+     */
+    @WebEndpoint(name = "DocLitNonWrapPort")
+    public DocLitNonWrapPortType getDocLitNonWrapPort() {
+        return (DocLitNonWrapPortType)super.getPort(new QName("http://nonwrap.sample.test.org", "DocLitNonWrapPort"), DocLitNonWrapPortType.class);
+    }
+
+
+}

Added: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java?view=auto&rev=442275
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/wrap/DocLitWrapImpl.java Mon Sep 11 10:39:50 2006
@@ -0,0 +1,71 @@
+/**
+ * 
+ */
+package org.apache.axis2.jaxws.sample.wrap;
+
+import javax.jws.WebService;
+import javax.xml.ws.Holder;
+
+import org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap;
+import org.test.sample.nonwrap.ObjectFactory;
+import org.test.sample.nonwrap.ReturnType;
+import org.test.sample.wrap.FinancialOperation;
+
+@WebService(endpointInterface="org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap")
+public class DocLitWrapImpl implements DocLitWrap {
+
+	public FinancialOperation finOp(FinancialOperation op) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+	/**
+	 * 
+	 */
+	public DocLitWrapImpl() {
+		super();
+		// TODO Auto-generated constructor stub
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#oneWayVoid()
+	 */
+	public void oneWayVoid() {
+		System.out.println("OneWayVoid with no parameters called");
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#oneWay(java.lang.String)
+	 */
+	public void oneWay(String onewayStr) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#twoWayHolder(javax.xml.ws.Holder, javax.xml.ws.Holder)
+	 */
+	public void twoWayHolder(Holder<String> twoWayHolderStr,
+			Holder<Integer> twoWayHolderInt) {
+		// TODO Auto-generated method stub
+
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#twoWay(java.lang.String)
+	 */
+	public String twoWay(String twowayStr) {
+		String retStr = new String("Acknowledgement : Request String received = "+ twowayStr);
+		return retStr;
+	}
+
+	/* (non-Javadoc)
+	 * @see org.apache.axis2.jaxws.sample.wrap.sei.DocLitWrap#invoke(java.lang.String)
+	 */
+	public String invoke(String invokeStr) {
+		// TODO Auto-generated method stub
+		return null;
+	}
+
+}



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