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 sc...@apache.org on 2006/10/25 16:38:29 UTC

svn commit: r467670 - in /webservices/axis2/trunk/java/modules/jaxws: src/org/apache/axis2/jaxws/marshaller/ src/org/apache/axis2/jaxws/marshaller/impl/ src/org/apache/axis2/jaxws/message/ src/org/apache/axis2/jaxws/message/databinding/impl/ src/org/ap...

Author: scheu
Date: Wed Oct 25 07:38:28 2006
New Revision: 467670

URL: http://svn.apache.org/viewvc?view=rev&rev=467670
Log:
AXIS2-1450
Contributor: Nikhil Thaker
Updated MethodMarshaller Implementation to use ParameterDesc information

Added:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/BlockContext.java
Modified:
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Block.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockFactoryImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockFactoryImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockImpl.java
    webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
    webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitbare.wsdl
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java
    webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/MethodParameter.java Wed Oct 25 07:38:28 2006
@@ -18,6 +18,8 @@
 
 import javax.jws.WebParam.Mode;
 
+import org.apache.axis2.jaxws.description.ParameterDescription;
+
 
 /**
  * Stores Method Parameter as Name and Value. Method Parameter can be an input Method Parameter or output Method parameter.
@@ -25,67 +27,60 @@
  * output Method Parameter is a return parameter from a java Method.
  */
 public class MethodParameter {
+	private ParameterDescription 	parameterDescription = null;
+	private String 					webResultName = null;
+	private String 					webResultTNS = null;
+	private Class 					webResultType = null;
+	private boolean 				isWebResult = false;
+	private Object 					value = null;
 	
-	private String name = null;
-	private Object value = null;
-	private Mode mode = null;
-	private Class type = null;
-	private Class actualType = null; //If parameter is a GenericType, this property stores the actual Type
-	private boolean isHolder = false;
-	private String targetNamespace = null;
-	private boolean isHeader = false;
-	
-	public MethodParameter(String name, Object value, Mode mode) {
+	public MethodParameter(ParameterDescription parameterDescription, Object value){
 		super();
-		this.name = name;
+		this.parameterDescription = parameterDescription;
 		this.value = value;
-		this.mode = mode;
-	}
-	public MethodParameter(String name, Object value, Mode mode, Class type, Class actualType, boolean isHolder, String targetNamespace, boolean isHeader) {
-		this(name,value,mode);
-		this.type = type;
-		this.isHolder = isHolder;
-		this.actualType = actualType;
-		this.targetNamespace = targetNamespace;
-		this.isHeader = isHeader;
 	}
-	public String getName() {
-		return name;
-	}
-	public Object getValue() {
-		return value;
+	
+	public MethodParameter(String webResultName, String webResultTNS, Class webResultType, Object value) {
+		super();
+		this.parameterDescription = null;
+		this.webResultName = webResultName;
+		this.webResultTNS = webResultTNS;
+		this.webResultType = webResultType;
+		this.value = value;
+		this.isWebResult = true;
 	}
-	public Mode getMode() {
-		return mode;
+
+	public ParameterDescription getParameterDescription() {
+		return parameterDescription;
 	}
-	public Class getType() {
-		return type;
+	public void setParameterDescription(ParameterDescription parameterDescription) {
+		this.parameterDescription = parameterDescription;
 	}
-	public void setType(Class type) {
-		this.type = type;
+	public String getWebResultName() {
+		return webResultName;
 	}
-	public Class getActualType() {
-		return this.actualType;
+	public void setWebResultName(String webResultName) {
+		this.webResultName = webResultName;
 	}
-	public void setActualType(Class actualType) {
-		this.actualType = actualType;
+	public boolean isWebResult() {
+		return isWebResult;
 	}
-	public boolean isHolder() {
-		return isHolder;
+	public void setWebResult(boolean isWebResult) {
+		this.isWebResult = isWebResult;
 	}
-	public void setHolder(boolean isHolder) {
-		this.isHolder = isHolder;
+	public Object getValue() {
+		return value;
 	}
-	public String getTargetNamespace() {
-		return targetNamespace;
+	public String getWebResultTNS() {
+		return webResultTNS;
 	}
-	public void setTargetNamespace(String targetNamespace) {
-		this.targetNamespace = targetNamespace;
+	public void setWebResultTNS(String webResultTNS) {
+		this.webResultTNS = webResultTNS;
 	}
-	public boolean isHeader() {
-		return isHeader;
+	public Class getWebResultType() {
+		return webResultType;
 	}
-	public void setHeader(boolean isHeader) {
-		this.isHeader = isHeader;
+	public void setWebResultType(Class webResultType) {
+		this.webResultType = webResultType;
 	}
 }

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitBareMethodMarshallerImpl.java Wed Oct 25 07:38:28 2006
@@ -27,6 +27,7 @@
 import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.description.EndpointDescription;
 import org.apache.axis2.jaxws.description.OperationDescription;
+import org.apache.axis2.jaxws.description.ParameterDescription;
 import org.apache.axis2.jaxws.description.ServiceDescription;
 import org.apache.axis2.jaxws.i18n.Messages;
 import org.apache.axis2.jaxws.marshaller.DocLitBareMethodMarshaller;
@@ -67,7 +68,8 @@
 		int index =0;
 		//Remove everything except holders from method parameters and input arguments.
 		for(MethodParameter mp: mps){
-			if(!mp.isHolder()){
+			ParameterDescription pd = mp.getParameterDescription();
+			if(!pd.isHolderType()){
 				holdermps.remove(mp);
 				holderArgs.remove(mp.getValue());
 			}
@@ -121,8 +123,8 @@
             log.debug("reading input method parameters");
         }
 		for(MethodParameter mp:mps){
-			
-			if(mp.isHolder()){
+			ParameterDescription pd = mp.getParameterDescription();
+			if(pd.isHolderType()){
 	        	Object holderObject = mp.getValue();
 	        	objectList.add(holderObject);
 	        }
@@ -152,7 +154,8 @@
 		
 		//Remove everything except holders
 		for(MethodParameter mp: mps){
-			if(!mp.isHolder()){
+			ParameterDescription pd = mp.getParameterDescription();
+			if(!pd.isHolderType()){
 				holdersNreturnObject.remove(mp);
 			}
 		}
@@ -169,7 +172,7 @@
 		}
 		else if(holdersNreturnObject.size() == 0 && !wrapperClazz.getName().equals("void")){
 			//No holders but a return type example --> public ReturnType someMethod()
-			MethodParameter mp = new MethodParameter(wrapperClazzName,returnObject,null, wrapperClazz, wrapperClazz, false, wrapperTNS, false);
+			MethodParameter mp = new MethodParameter(wrapperClazzName,wrapperTNS, wrapperClazz, returnObject);
 			holdersNreturnObject.add(mp);
 			message = createMessage(holdersNreturnObject);
 			
@@ -184,7 +187,7 @@
 			//Note that SEI implementation will wrap return type in a holder if method has a return type and input param as holder.
 			//WSGen and WsImport Generate Holders with return type as one of the Holder JAXBObject property, if wsdl schema forces a holder and a return type.
 			
-			MethodParameter mp = new MethodParameter(wrapperClazzName,returnObject,null, wrapperClazz, wrapperClazz, false, wrapperTNS, false);
+			MethodParameter mp = new MethodParameter(wrapperClazzName,wrapperTNS, wrapperClazz, returnObject);
 			holdersNreturnObject.add(mp);
 			message = createMessage(holdersNreturnObject);
 			
@@ -206,7 +209,8 @@
 		if(mps.size()> SIZE){
 			int numberOfBodyPart =0;
 			for(MethodParameter mp:mps){
-				if(!mp.isHeader()){
+				ParameterDescription pd = mp.getParameterDescription();
+				if(!pd.getWebParamHeader()){
 					numberOfBodyPart++;
 				}
 			}

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/DocLitWrappedMethodMarshallerImpl.java Wed Oct 25 07:38:28 2006
@@ -117,6 +117,7 @@
 	public Message marshalResponse(Object returnObject, Object[] holderObjects)throws ClassNotFoundException, JAXBException, MessageException, JAXBWrapperException, XMLStreamException, InstantiationException, IllegalAccessException {
 		Class wrapperClazz = null;
 		String wrapperClazzName = operationDesc.getResponseWrapperClassName();
+		String wrapperXMLElementName = operationDesc.getRequestWrapperLocalName();
 		String wrapperTNS = operationDesc.getResponseWrapperTargetNamespace();
 		String webResult = operationDesc.getWebResultName();
 		//TODO Move this to Operation Description.
@@ -159,7 +160,7 @@
         Object wrapper = wrapperTool.wrap(wrapperClazz, 
         		wrapperClazzName, mps);
         
-		Message message = createMessage(wrapper, wrapperClazz, wrapperClazzName, wrapperTNS);
+		Message message = createMessage(wrapper, wrapperClazz, wrapperXMLElementName, wrapperTNS);
 		return message;
 		
 	}

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/MethodMarshallerImpl.java Wed Oct 25 07:38:28 2006
@@ -29,6 +29,7 @@
 import java.util.concurrent.Future;
 
 import javax.jws.WebParam.Mode;
+import javax.management.openmbean.SimpleType;
 import javax.xml.bind.JAXBContext;
 import javax.xml.bind.JAXBElement;
 import javax.xml.bind.JAXBException;
@@ -48,6 +49,7 @@
 import org.apache.axis2.jaxws.ExceptionFactory;
 import org.apache.axis2.jaxws.description.EndpointDescription;
 import org.apache.axis2.jaxws.description.OperationDescription;
+import org.apache.axis2.jaxws.description.ParameterDescription;
 import org.apache.axis2.jaxws.description.ServiceDescription;
 import org.apache.axis2.jaxws.i18n.Messages;
 import org.apache.axis2.jaxws.marshaller.MethodMarshaller;
@@ -58,6 +60,7 @@
 import org.apache.axis2.jaxws.message.Protocol;
 import org.apache.axis2.jaxws.message.XMLFault;
 import org.apache.axis2.jaxws.message.XMLFaultReason;
+import org.apache.axis2.jaxws.message.databinding.impl.BlockContext;
 import org.apache.axis2.jaxws.message.factory.JAXBBlockFactory;
 import org.apache.axis2.jaxws.message.factory.MessageFactory;
 import org.apache.axis2.jaxws.message.factory.XMLStringBlockFactory;
@@ -69,8 +72,6 @@
 import org.apache.commons.logging.LogFactory;
 
 public abstract class MethodMarshallerImpl implements MethodMarshaller {
-
-	private static String DEFAULT_ARG="arg";
 	private static QName SOAPENV_QNAME = new QName("http://schemas.xmlsoap.org/soap/envelope/", "Envelope");
 	private static Log log = LogFactory.getLog(MethodMarshallerImpl.class);
 	protected ServiceDescription serviceDesc = null;
@@ -179,42 +180,38 @@
 	
 	protected ArrayList<MethodParameter> toOutputMethodParameter(Object webResultValue){
 		ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
-		String webResult = operationDesc.getWebResultName();
-		MethodParameter mp = new MethodParameter(webResult, webResultValue, null);
+		if(webResultValue == null){
+			return mps;
+		}
+		String webResultName = operationDesc.getWebResultName();
+		String webResultTNS = operationDesc.getWebResultTargetNamespace();
+		Class webResultClass = null;
+		if(webResultValue !=null){
+			webResultClass = webResultValue.getClass();
+		}
+		MethodParameter mp = new MethodParameter(webResultName, webResultTNS, webResultClass, webResultValue);
 		mps.add(mp);
 		return mps;
 	}
 	
 	protected ArrayList<MethodParameter> toOutputMethodParameter(Object webResultObject, Object[] holderObjects)throws IllegalAccessException, InstantiationException, ClassNotFoundException{
-		//Get all names of input parameters
-		ArrayList<String> paramNames = new ArrayList<String>();
-		paramNames =toArrayList(operationDesc.getWebParamNames());
-		
-		//Get all modes for params
-		ArrayList<Mode> paramMode = new ArrayList<Mode>();
-		paramMode = toArrayList(operationDesc.getWebParamModes());
-		
-		Method seiMethod = operationDesc.getSEIMethod();
-	    Class[] types = seiMethod.getParameterTypes();
-	    ArrayList<Class> paramTypes = toArrayList(types);
-	    ArrayList<Class> actualTypes = getInputTypes();
-	    
-		for(int i =0;i<types.length; i++){
-			if(!(types[i].isAssignableFrom(Holder.class))){
-				paramNames.remove(i);
-				paramMode.remove(i);
-				paramTypes.remove(i);
+		ParameterDescription[] paramDescs = operationDesc.getParameterDescriptions();
+		ArrayList<ParameterDescription> pds = new ArrayList<ParameterDescription>();
+		pds = toArrayList(paramDescs);
+		// Remove all non holder meta data.
+		for (int index = 0; index < paramDescs.length; index++) {
+			ParameterDescription paramDesc = paramDescs[index];
+			if (!(paramDesc.isHolderType())) {
+				pds.remove(index);
 			}
 		}
 		
 		ArrayList<Object> paramValues = toArrayList(holderObjects);
-		ArrayList<MethodParameter> mps = createMethodParameters(paramNames, paramValues, paramMode, paramTypes, actualTypes);
+		ArrayList<MethodParameter> mps = createMethodParameters(pds.toArray(new ParameterDescription[0]), paramValues);
 		if(webResultObject!=null){
-			MethodParameter outputResult = new MethodParameter(operationDesc.getWebResultName(), webResultObject, null);
+			MethodParameter outputResult = new MethodParameter(operationDesc.getWebResultName(), operationDesc.getWebResultTargetNamespace(), webResultObject.getClass(), webResultObject);
 			mps.add(outputResult);
 		}
-		
-		//lets create name value pair.
 		return mps;
 		
 	}
@@ -225,8 +222,7 @@
 			return mps;
 		}
         ArrayList<String> webParam = toArrayList(operationDesc.getWebParamNames());
-        ArrayList<Mode> modes = toArrayList(operationDesc.getWebParamModes());
-        
+                
         if (log.isDebugEnabled()) {
             log.debug("Attempting to unwrap object from WrapperClazz");
         }
@@ -251,86 +247,107 @@
 			return mps;
 		}
 		
-		//Get all names of input parameters
-		ArrayList<String> paramNames = new ArrayList<String>();
-		paramNames =toArrayList(operationDesc.getWebParamNames());
-		//Get all the objects of input parameters
-		ArrayList<Object> paramValues = new ArrayList<Object>(); 
-		paramValues = toArrayList(objects);
-		//Get all modes for params
-		ArrayList<Mode> paramMode = new ArrayList<Mode>();
-		paramMode = toArrayList(operationDesc.getWebParamModes());
-		
-		Method seiMethod = operationDesc.getSEIMethod();
+		ParameterDescription[] paramDescs = operationDesc.getParameterDescriptions();
 		
-		Class[] clazz = seiMethod.getParameterTypes();
-		ArrayList<Class> paramTypes = toArrayList(clazz);
-     
-		ArrayList<Class> actualTypes = getInputTypes();
-		int i =0;
-		
-		//if no webParam defined then lets get default names.
-		if(paramNames.size() == 0 && paramTypes.size()>0){
-			while(i< paramTypes.size()){
-				paramNames.add(DEFAULT_ARG + i++);
-			}
+		if (paramDescs.length != objects.length) {
+			throw ExceptionFactory.makeWebServiceException(Messages
+					.getMessage("InvalidWebParams"));
 		}
-		if(paramNames.size() != paramValues.size()){
-			throw ExceptionFactory.makeWebServiceException(Messages.getMessage("InvalidWebParams"));
+		ArrayList<Object> paramValues = new ArrayList<Object>();
+		paramValues = toArrayList(objects);
+		if (log.isDebugEnabled()) {
+			log.debug("Attempting to create Method Parameters");
 		}
-		//lets create name value pair.
-		mps = createMethodParameters(paramNames, paramValues, paramMode, paramTypes, actualTypes);
-		
+		mps = createMethodParameters(paramDescs, paramValues);
+
+		if (log.isDebugEnabled()) {
+			log.debug("Method Parameters created");
+		}
+					
 		return mps;
 	}
 	
 	protected ArrayList<MethodParameter> toInputMethodParameter(Message message)throws IllegalAccessException, InstantiationException, ClassNotFoundException, MessageException, XMLStreamException, JAXBException{
 		ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
-		if(message == null){
-			return null;
-		}
-		ArrayList<String> paramNames = new ArrayList<String>();
-		paramNames =toArrayList(operationDesc.getWebParamNames());
-		
-		//Get all modes for params
-		ArrayList<Mode> paramMode = new ArrayList<Mode>();
-		paramMode = toArrayList(operationDesc.getWebParamModes());
-		
-		Method seiMethod = operationDesc.getSEIMethod();
+ 		if(message == null){
+ 			return null;
+ 		}
+		ParameterDescription[] paramDescs = operationDesc.getParameterDescriptions();
 		
-		Class[] clazz = seiMethod.getParameterTypes();
-		ArrayList<Class> paramTypes = toArrayList(clazz);
-     
-		ArrayList<Class> actualTypes = getInputTypes();
-		
-		int i =0;
-		//if no webParam defined then lets get default names.
-		if(paramNames.size() == 0 && paramTypes.size()>0){
-			while(i< paramTypes.size()){
-				paramNames.add(DEFAULT_ARG + i++);
-			}
-		}
-		i =0;
 		ArrayList<Object> paramValues = new ArrayList<Object>(); 
-		for(String paramName:paramNames){
-			String paramTNS = operationDesc.getWebParamTargetNamespace(paramName);
-			boolean isHeader = operationDesc.isWebParamHeader(paramName);
+		for (int index = 0; index < paramDescs.length; index++) {
+			ParameterDescription paramDesc = paramDescs[index];
+			String paramName = paramDesc.getWebParamName();
+			String paramTNS = paramDesc.getWebParamTargetNamespace();
+			boolean isHeader = paramDesc.getWebParamHeader();
+			Class actualType = paramDesc.getParameterActualType();
 			Object bo = null;
 			if(isHeader){
-				bo = createBOFromHeaderBlock(actualTypes.get(i), message, paramTNS, paramName);
+				bo = createBOFromHeaderBlock(actualType, message, paramTNS, paramName);
 			}
 			else{
-				bo = createBOFromBodyBlock(actualTypes.get(i),message);
+				bo = createBOFromBodyBlock(actualType,message);
 			}
 			paramValues.add(bo);
-			i++;
 		}
-		//lets create name value pair.
-		mps = createMethodParameters(paramNames, paramValues, paramMode, paramTypes, actualTypes);
+		mps = createMethodParameters(paramDescs, paramValues);
 		
 		return mps;
 	}
-	
+	protected ArrayList<MethodParameter> createMethodParameters(
+			ParameterDescription[] paramDescs, ArrayList<Object> paramValues)
+			throws IllegalAccessException, InstantiationException,
+			ClassNotFoundException {
+		ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
+		int index = 0;
+		for (Object paramValue : paramValues) {
+			ParameterDescription paramDesc = paramDescs[index];
+			Class paramType = paramDesc.getParameterType();
+			Mode paramMode = paramDesc.getWebParamMode();
+			boolean isHolderType = paramDesc.isHolderType();
+			MethodParameter mp = null;
+			// If call is Async call then lets filter AsyncHandler object name
+			// and value;
+			if (!isParamAsyncHandler(paramDesc.getWebParamName(), paramValue)) {
+				if (paramType != null) {
+					// Identify Holders and get Holder Values, this if condition
+					// will mostly execute during client side call
+					if (paramValue != null && isHolder(paramValue)
+							&& isHolderType) {
+						Object holderValue = getHolderValue(paramMode,
+								paramValue);
+						mp = new MethodParameter(paramDesc, holderValue);
+					}
+					// Identify that param value is not Holders however if the
+					// method parameter is holder type and create Holder, this
+					// will mostly be called during server side call
+					else if (paramValue != null && !isHolder(paramValue)
+							&& isHolderType) {
+						Holder<Object> holder = createHolder(paramType,
+								paramValue);
+						mp = new MethodParameter(paramDesc, holder);
+					} else {
+						mp = new MethodParameter(paramDesc, paramValue);
+					}
+				}
+				if (paramType == null) {
+					if (isHolder(paramValue)) {
+						Object holderValue = getHolderValue(paramMode,
+								paramValue);
+						mp = new MethodParameter(paramDesc, holderValue);
+					} else {
+						mp = new MethodParameter(paramDesc, paramValues);
+					}
+				}
+				mps.add(mp);
+			}
+
+			index++;
+		}
+		return mps;
+
+	}
+			
 	protected ArrayList<Class> getInputTypes(){
 		Method seiMethod = operationDesc.getSEIMethod();
 		ArrayList<Class> paramTypes = new ArrayList<Class>();
@@ -384,14 +401,15 @@
 		else{
 			//Create JAXBElement then use that to create JAXBBlock.
 			Class objectType = jaxbObject.getClass();
-			String xmlName = readXMLTypeName(objectType);
+		
 			JAXBElement<Object> element = null;
-			if(xmlName !=null){
+			if (name != null) {
+				element = new JAXBElement<Object>(new QName(targetNamespace,
+						name), objectType, jaxbObject);
+			} else {
+				String xmlName = readXMLTypeName(objectType);
 				element = new JAXBElement<Object>(new QName(targetNamespace, xmlName), objectType, jaxbObject);
 			}
-			else{
-				element = new JAXBElement<Object>(new QName(targetNamespace, name), objectType, jaxbObject);
-			}
 			
 			JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);
 			return factory.createFrom(element,context ,null);
@@ -469,73 +487,9 @@
 		return returnType;	
 	}
 	
-	protected ArrayList<MethodParameter> createMethodParameters(ArrayList<String> paramNames, ArrayList<Object>paramValues, ArrayList<Mode> paramModes, ArrayList<Class> paramTypes, ArrayList<Class> actualTypes) throws IllegalAccessException, InstantiationException, ClassNotFoundException{
-		ArrayList<MethodParameter> mps = new ArrayList<MethodParameter>();
-		int i=0;
-		for(String paramName:paramNames){
-			Object paramValue = paramValues.get(i);
-			String paramTNS = operationDesc.getWebParamTargetNamespace(paramName);
-			boolean isHeader = operationDesc.isWebParamHeader(paramName);
-			//initialize to default value.
-			Mode paramMode = Mode.IN;
-			if(paramModes !=null && paramModes.size() >0){
-				paramMode =paramModes.get(i);
-			}
-			Class paramType = null;
-			Class actualType = null;
-			if(paramTypes !=null){
-				paramType = paramTypes.get(i);
-			}
-			if(actualTypes!=null){
-				actualType = actualTypes.get(i);
-			}
-			MethodParameter mp = null;
-			//If call is Async call then lets filter AsyncHandler object name and value;
-			if(!isParamAsyncHandler(paramName, paramValue)){
-				
-				if(paramType !=null){
-					//Identify Holders and get Holder Values, this if condition will mostly execute during client side call
-					if(isHolder(paramValue) && isHolder(paramType)){
-						Object holderValue = getHolderValue(paramMode, paramValue);
-						mp = new MethodParameter(paramName, holderValue, paramMode, paramType, actualType, true, paramTNS, isHeader);
-						
-					}
-					//Identify that param value is not Holders however if the method parameter is holder type and create Holder, this will mostly be called during server side call 
-					else if(!isHolder(paramValue) && isHolder(paramType)){
-						Holder<Object> holder = createHolder(paramType, paramValue);
-						mp=new MethodParameter(paramName, holder, paramMode, paramType, actualType, true, paramTNS, isHeader);
-					}
-					else{
-						mp = new MethodParameter(paramName, paramValue, paramMode, paramType, actualType, false, paramTNS, isHeader);
-					}
-				}
-				if(paramType == null){
-					if(isHolder(paramValue)){
-						Object holderValue = getHolderValue(paramMode, paramValue);
-						mp = new MethodParameter(paramName, holderValue, paramMode);
-						mp.setHolder(true);
-						mp.setTargetNamespace(paramTNS);
-						mp.setHeader(isHeader);
-					}
-					else{
-						mp = new MethodParameter(paramName, paramValues, paramMode);
-						mp.setHolder(false);
-						mp.setTargetNamespace(paramTNS);
-						mp.setHeader(isHeader);
-					}
-				}
-				mps.add(mp);
-			}
-			
-			i++;
-		}
-		return mps;
-	}
+	
 	
 	private boolean isParamAsyncHandler(String name, Object value){
-		//TODO I would like to check the name of the parameter to "asyncHandler" As per the JAX-WS specification
-		//However the RI tooling has a bug where it generates partName="asyncHandler" for doc/lit bare case instead of name="asyncHandler".
-		//Once fixed we can also check for name but for now this will work
 		if(value!=null && value instanceof AsyncHandler){
 			if(log.isDebugEnabled()){
 				log.debug("Parameter is AsycnHandler Object");
@@ -589,43 +543,53 @@
 	
 	protected Message createMessage(ArrayList<MethodParameter> mps) throws JAXBException, MessageException, XMLStreamException{
 		Block block = null;
-		Object requestObject = null;
-		String requestObjectName = null;
-		String requestTNS = null;
-		Class requestObjectType = null;
+		Object object = null;
+		String objectName = null;
+		String objectTNS = null;
+		Class objectType = null;
 		boolean isHeader =false;
 		
 		MessageFactory mf = (MessageFactory)FactoryRegistry.getFactory(MessageFactory.class);
 		Message m = mf.create(protocol);
 		
 		for(MethodParameter mp : mps){
-			requestObject = mp.getValue();
-			requestObjectName = mp.getName();
-			requestObjectType = mp.getActualType();
-			requestTNS = mp.getTargetNamespace();
-			isHeader = mp.isHeader();
-			if(!isHeader && requestObject == null){
+
+			if (!mp.isWebResult()) {
+				ParameterDescription pd = mp.getParameterDescription();
+				object = mp.getValue();
+				objectName = pd.getWebParamName();
+				objectType = pd.getParameterActualType();
+				objectTNS = pd.getWebParamTargetNamespace();
+				isHeader = pd.getWebParamHeader();
+			} else {
+				object = mp.getValue();
+				objectName = mp.getWebResultName();
+				objectType = mp.getWebResultType();
+				objectTNS = mp.getWebResultTNS();
+				isHeader = false;
+			}
+			if (!isHeader && object == null) {
 				if (log.isDebugEnabled()) {
 		            log.debug("Method Input parameter for NON Wrapped Request cannot be null");
 		        }
 				throw ExceptionFactory.makeWebServiceException(Messages.getMessage("DocLitProxyHandlerErr2"));
 			}
-			JAXBContext ctx = createJAXBContext(requestObjectType);
+			JAXBContext ctx = createJAXBContext(objectType);
 			if (log.isDebugEnabled()) {
 	            log.debug("Attempting to create Block");
 	        }
-			if(isXmlRootElementDefined(requestObjectType)){
-				block = createJAXBBlock(requestObject, ctx);
+			if(isXmlRootElementDefined(objectType)){
+				block = createJAXBBlock(object, ctx);
 			}
 			else{
 				
-				block =  createJAXBBlock(requestObjectName, requestObject, ctx, requestTNS);
+				block =  createJAXBBlock(objectName, object, ctx, objectTNS);
 			}
 			if (log.isDebugEnabled()) {
 	            log.debug("JAXBBlock Created");
 	        }	
 			if(isHeader){
-				m.setHeaderBlock(requestTNS, requestObjectName, block);
+				m.setHeaderBlock(objectTNS, objectName, block);
 				if (log.isDebugEnabled()) {
 		            log.debug("Header Block Created");
 		        }
@@ -683,7 +647,7 @@
         // out of the Message
         JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class); 
         Block block = message.getHeaderBlock(targetNamespace, localPart, ctx, factory);
-        return block.getBusinessObject(false);
+        return createBusinessObject(jaxbClazz, block);
 	}
 	
 	protected Object createBOFromBodyBlock(Class jaxbClazz, Message message) throws JAXBException, MessageException, XMLStreamException{
@@ -698,33 +662,47 @@
         JAXBBlockFactory factory = (JAXBBlockFactory)FactoryRegistry.getFactory(JAXBBlockFactory.class);
         
         Block block = message.getBodyBlock(0, ctx, factory);
-        try{
-        	return block.getBusinessObject(false);
-        }catch(Exception e){
-        //FIXME: this is the bare case where child of body is not a method but a primitive data type. Reader from Block is throwing exception.
-        	block = message.getBodyBlock(0, ctx,factory);
-        	OMElement om = block.getOMElement();
-        	
-        	XMLInputFactory xmlFactory = XMLInputFactory.newInstance();
-		
-        	Unmarshaller u = ctx.createUnmarshaller();
-        	Reader inputReader = new InputStreamReader(new ByteArrayInputStream(om.toString().getBytes()));
-        	XMLStreamReader sr = xmlFactory.createXMLStreamReader(inputReader);
-        	JAXBElement o =u.unmarshal(sr, jaxbClazz);
-        	return o.getValue();
-        
-        }       
+        return createBusinessObject(jaxbClazz, block);
+	}
+	
+	protected Object createBusinessObject(Class jaxbClazz, Block block)
+			throws JAXBException, MessageException, XMLStreamException {
+		if (jaxbClazz.isPrimitive() || isSimpleType(jaxbClazz)
+				|| !isXmlRootElementDefined(jaxbClazz)) {
+			BlockContext bc = new BlockContext();
+			bc.setDeclareType(jaxbClazz);
+			block.setBlockContext(bc);
+		}
+		return block.getBusinessObject(true);
+	}
+
+	protected Object createFaultBusinessObject(Class jaxbClazz, Block block)
+			throws JAXBException, MessageException, XMLStreamException {
+		JAXBContext ctx = createJAXBContext(jaxbClazz);
+		OMElement om = block.getOMElement();
+
+		XMLInputFactory xmlFactory = XMLInputFactory.newInstance();
+
+		Unmarshaller u = ctx.createUnmarshaller();
+		Reader inputReader = new InputStreamReader(new ByteArrayInputStream(om
+				.toString().getBytes()));
+		XMLStreamReader sr = xmlFactory.createXMLStreamReader(inputReader);
+		JAXBElement o = u.unmarshal(sr, jaxbClazz);
+		return o.getValue();
+
 	}
 	protected void createResponseHolders(ArrayList<MethodParameter> mps, ArrayList<Object> inputArgHolders, Message message)throws JAXBException, MessageException, XMLStreamException{
 		Object bo = null;
 		int index = 0;
 		for(MethodParameter mp:mps){
-			if(mp.isHeader() && mp.isHolder()){
-				bo = createBOFromHeaderBlock(mp.getActualType(),message, mp.getTargetNamespace(), mp.getName());
-				
+			ParameterDescription pd = mp.getParameterDescription();
+			if (pd.getWebParamHeader() && pd.isHolderType()) {
+				bo = createBOFromHeaderBlock(pd.getParameterActualType(),
+						message, pd.getWebParamTargetNamespace(), pd
+								.getWebParamName());
 			}
-			else if(!mp.isHeader() && mp.isHolder()){
-				bo = createBOFromBodyBlock(mp.getActualType(), message);
+			else if(!pd.getWebParamHeader() && pd.isHolderType()){
+				bo = createBOFromBodyBlock(pd.getParameterActualType(), message);
 			}
 			try{
 				Holder inputArgHolder = (Holder)inputArgHolders.get(index);
@@ -737,19 +715,7 @@
 		
 	
 	}
-	
-	protected Object createFaultBusinessObject(Class jaxbClazz, Block block) throws JAXBException, MessageException, XMLStreamException {
-		JAXBContext ctx = createJAXBContext(jaxbClazz);
-    	OMElement om = block.getOMElement();
-    	
-    	XMLInputFactory xmlFactory = XMLInputFactory.newInstance();
-	
-    	Unmarshaller u = ctx.createUnmarshaller();
-    	Reader inputReader = new InputStreamReader(new ByteArrayInputStream(om.toString().getBytes()));
-    	XMLStreamReader sr = xmlFactory.createXMLStreamReader(inputReader);
-    	JAXBElement o =u.unmarshal(sr, jaxbClazz);
-    	return o.getValue();
-	}
+
 	
 	protected void createResponseHolders(Object bo, Object[] inputArgs, boolean isBare)throws JAXBWrapperException, InstantiationException, ClassNotFoundException, IllegalAccessException{
 		if(inputArgs == null){
@@ -779,7 +745,8 @@
 			
 		MethodParameter[] mpArray = mps.toArray(new MethodParameter[0]);
 		for(MethodParameter mp:mpArray){
-			if(!mp.isHolder()){
+			ParameterDescription pd = mp.getParameterDescription();
+			if(!pd.isHolderType()){
 				mps.remove(mp);
 			}
 		}
@@ -797,6 +764,16 @@
 		}
 		
 	}
+	
+	protected boolean isSimpleType(Class clazz) {
+		String[] allOpenTypes = SimpleType.ALLOWED_CLASSNAMES;
+		for (String openType : allOpenTypes) {
+			if (clazz.getName().equals(openType)) {
+				return true;
+			}
+		}
+		return false;
+			}
 	
 	protected Object findProperty(String propertyName, Object jaxbObject)throws JAXBWrapperException{
 		JAXBWrapperTool wrapTool = new JAXBWrapperToolImpl();

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Block.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Block.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Block.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/Block.java Wed Oct 25 07:38:28 2006
@@ -23,6 +23,7 @@
 
 import org.apache.axiom.om.OMDataSource;
 import org.apache.axiom.om.OMElement;
+import org.apache.axis2.jaxws.message.databinding.impl.BlockContext;
 import org.apache.axis2.jaxws.message.factory.BlockFactory;
 
 /**
@@ -139,5 +140,19 @@
      * Set the XMLPart that will contain this Block.
      */
     public void setParent(XMLPart p);
+    /**
+     * @returns the Block Context, BlockContext stores the context information of the Block. Example, this holds something that the Block would need in order to 
+     * serialize or deserialize correctly.
+     * 
+     */
+    public BlockContext getBlockContext(); 
+
+    /**
+     * sets the block context, BlockContext stores the context information of the Block. Example, this holds something that the Block would need in order to 
+     * serialize or deserialize correctly further example is JAXBBlock store the declared Type that it can later use to unmarshal a Message if it holds
+     * a primitive type.
+     * @param blockContext
+     */
+	public void setBlockContext(BlockContext blockContext); 
 	
 }

Added: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/BlockContext.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/BlockContext.java?view=auto&rev=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/BlockContext.java (added)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/BlockContext.java Wed Oct 25 07:38:28 2006
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2004,2005 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.message.databinding.impl;
+
+/*
+ * JAXBBlockContext stores the context information of the Block. Example, this holds something that the Block would need in order to 
+ * serialize or deserialize correctly.
+ */
+
+public class BlockContext {
+
+	Class declareType = null;
+	public BlockContext() {
+		super();
+		
+	}
+	public Class getDeclareType() {
+		return declareType;
+	}
+	public void setDeclareType(Class declareType) {
+		this.declareType = declareType;
+	}
+	
+
+}

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockFactoryImpl.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockFactoryImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockFactoryImpl.java Wed Oct 25 07:38:28 2006
@@ -29,6 +29,7 @@
  * Creates a JAXBBlock
  */
 public class JAXBBlockFactoryImpl extends BlockFactoryImpl implements JAXBBlockFactory {
+	
 
 	/**
 	 * Default Constructor required for Factory 

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/databinding/impl/JAXBBlockImpl.java Wed Oct 25 07:38:28 2006
@@ -20,6 +20,7 @@
 import java.io.StringWriter;
 
 import javax.xml.bind.JAXBContext;
+import javax.xml.bind.JAXBElement;
 import javax.xml.bind.JAXBException;
 import javax.xml.bind.JAXBIntrospector;
 import javax.xml.bind.Marshaller;
@@ -40,6 +41,7 @@
 import org.apache.axis2.jaxws.message.attachments.JAXBAttachmentUnmarshaller;
 import org.apache.axis2.jaxws.message.databinding.JAXBBlock;
 import org.apache.axis2.jaxws.message.factory.BlockFactory;
+import org.apache.axis2.jaxws.message.impl.BlockFactoryImpl;
 import org.apache.axis2.jaxws.message.impl.BlockImpl;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -88,6 +90,8 @@
 			JAXBContext jc = (JAXBContext) busContext;
             Unmarshaller u = jc.createUnmarshaller();
             
+             BlockContext blockContext = getBlockContext();
+            
             // If MTOM is enabled, add in the AttachmentUnmarshaller
             if (isMTOMEnabled()) {
                 if (log.isDebugEnabled()) 
@@ -100,10 +104,20 @@
                 aum.setMessage(msg);
                 u.setAttachmentUnmarshaller(aum);
             }
-			
-			Object jaxb = u.unmarshal(reader);
-			setQName(getQName(jaxb, jc));
-			return jaxb;
+            //Read block context and determine if a declaredType is defined. If yes, then create JAXBElement and use that to create JAXB Object.
+            Class declaredType = null;
+			if(blockContext !=null){
+				declaredType = blockContext.getDeclareType();
+			}
+			if(declaredType == null){
+				Object jaxb = u.unmarshal(reader);
+				setQName(getQName(jaxb, jc));
+				return jaxb;
+			}else{
+				JAXBElement jaxbElement = u.unmarshal(reader, declaredType);
+				Object jaxb = jaxbElement.getValue();
+				return jaxb;
+			}
 		} catch(JAXBException je) {
 			throw ExceptionFactory.makeMessageException(je);
 		}

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockFactoryImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockFactoryImpl.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockFactoryImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockFactoryImpl.java Wed Oct 25 07:38:28 2006
@@ -31,7 +31,7 @@
  * Abstract Base Class for the Block Factories
  */
 public abstract class BlockFactoryImpl implements BlockFactory {
-
+	
 	public BlockFactoryImpl() {
 		super();
 	}
@@ -66,6 +66,8 @@
 		OMElement omElement = builder.getDocumentElement();
 		return createFrom(omElement, context, qName);
 	}
+
+	
 
 	
 	

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockImpl.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/message/impl/BlockImpl.java Wed Oct 25 07:38:28 2006
@@ -34,6 +34,7 @@
 import org.apache.axis2.jaxws.message.Block;
 import org.apache.axis2.jaxws.message.MessageException;
 import org.apache.axis2.jaxws.message.XMLPart;
+import org.apache.axis2.jaxws.message.databinding.impl.BlockContext;
 import org.apache.axis2.jaxws.message.factory.BlockFactory;
 import org.apache.axis2.jaxws.message.util.Reader2Writer;
 
@@ -65,6 +66,7 @@
 	private BlockFactory factory;
 	private boolean consumed = false;
     private XMLPart parent;
+    private BlockContext blockContext;
 	
 	/**
 	 * A Block has the following components
@@ -99,6 +101,14 @@
 	 */
 	public BlockFactory getBlockFactory() {
 		return factory;
+	}
+	
+	public BlockContext getBlockContext() {
+		return blockContext;
+	}
+
+	public void setBlockContext(BlockContext blockContext) {
+		this.blockContext = blockContext;
 	}
 
 	/* (non-Javadoc)

Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java Wed Oct 25 07:38:28 2006
@@ -36,6 +36,7 @@
 import javax.xml.bind.annotation.XmlElement;
 import javax.xml.namespace.QName;
 
+import org.apache.axis2.jaxws.description.ParameterDescription;
 import org.apache.axis2.jaxws.i18n.Messages;
 import org.apache.axis2.jaxws.marshaller.MethodParameter;
 import org.apache.axis2.jaxws.wrapper.JAXBWrapperTool;
@@ -123,7 +124,13 @@
 		ArrayList<String> nameList = new ArrayList<String>();
 		Map<String, Object> objectList = new WeakHashMap<String, Object>();
 		for(MethodParameter mp:mps){
-			String name = mp.getName();
+			ParameterDescription pd = mp.getParameterDescription();
+			String name = null;
+			if(!mp.isWebResult()){
+				name = pd.getWebParamName();
+			}else{
+				name = mp.getWebResultName();
+			}
 			Object object = mp.getValue();
 			
 			nameList.add(name);

Modified: webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitbare.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitbare.wsdl?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitbare.wsdl (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test-resources/wsdl/doclitbare.wsdl Wed Oct 25 07:38:28 2006
@@ -117,7 +117,7 @@
 		</wsdl:operation>
 		
 		<wsdl:operation name="twoWaySimple">
-			<soap:operation soapAction="http://doclitbare.sample.test.org/twoWaySimple" />
+			<soap:operation soapAction="twoWaySimple" />
 			<wsdl:input>
 				<soap:body use="literal"  />
 			</wsdl:input>

Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/BareTests.java Wed Oct 25 07:38:28 2006
@@ -22,11 +22,10 @@
 			BareDocLitService service = new BareDocLitService();
 			DocLitBarePortType proxy = service.getBareDocLitPort();
 			 BindingProvider p = (BindingProvider) proxy;
-			 p.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, "http://localhost:7777/axis2/services/BareDocLitService");
-	            /*p.getRequestContext().put(
-	                    BindingProvider.SOAPACTION_URI_PROPERTY, new Boolean(true));
 	            p.getRequestContext().put(
-	                    BindingProvider.SOAPACTION_URI_PROPERTY, "twoWaySimple");*/
+	                    BindingProvider.SOAPACTION_USE_PROPERTY, Boolean.TRUE);
+	            p.getRequestContext().put(
+	                    BindingProvider.SOAPACTION_URI_PROPERTY, "twoWaySimple");
 			String response = proxy.twoWaySimple(10);
 			System.out.println("Sync Response =" + response);
 			System.out.println("------------------------------");

Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java?view=diff&rev=467670&r1=467669&r2=467670
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/sei/BareDocLitService.java Wed Oct 25 07:38:28 2006
@@ -23,7 +23,7 @@
 
     private final static URL BAREDOCLITSERVICE_WSDL_LOCATION;
 
-    private static String wsdlLocation="/modules/jaxws/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl";
+    private static String wsdlLocation="/test/org/apache/axis2/jaxws/sample/doclitbare/META-INF/doclitbare.wsdl";
     static {
         URL url = null;
         try {



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