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