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 nt...@apache.org on 2008/11/17 23:10:23 UTC
svn commit: r718408 - in /webservices/axis2/trunk/java/modules:
jaxws-integration/test-resources/wsdl/
jaxws-integration/test/org/apache/axis2/jaxws/proxy/
jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/
jaxws-integration/test/org/apac...
Author: nthaker
Date: Mon Nov 17 14:10:23 2008
New Revision: 718408
URL: http://svn.apache.org/viewvc?rev=718408&view=rev
Log:
AXIS2-4133
Modified:
webservices/axis2/trunk/java/modules/jaxws-integration/test-resources/wsdl/gorilla_dlw.wsdl
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/GorillaDLWProxyTests.java
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/GorillaProxyImpl.java
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/META-INF/gorilla_dlw.wsdl
webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/sei/GorillaInterface.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/JAXBWrapperTool.java
webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/impl/JAXBWrapperToolImpl.java
webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/utility/PropertyDescriptorPlusTests.java
Modified: webservices/axis2/trunk/java/modules/jaxws-integration/test-resources/wsdl/gorilla_dlw.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test-resources/wsdl/gorilla_dlw.wsdl?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test-resources/wsdl/gorilla_dlw.wsdl (original)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test-resources/wsdl/gorilla_dlw.wsdl Mon Nov 17 14:10:23 2008
@@ -189,6 +189,14 @@
</s:sequence>
</s:complexType>
</s:element>
+
+ <s:element name="echoStringListAsLinkedListResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="data" type="data:stringList" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
<s:element name="echoStringListAltAsLinkedListResponse">
<s:complexType>
@@ -360,7 +368,43 @@
</s:sequence>
</s:complexType>
</s:element>
-
+
+ <s:element name="echoDate">
+ <s:complexType>
+ <s:choice>
+ <s:element name="RequestedTerminationTime" nillable="true" type="s:dateTime" />
+ <s:element name="RequestedLifetimeDuration" type="s:duration" />
+ </s:choice>
+
+ <!--<s:sequence>
+ <s:element name="request" nillable="true" type="s:date" />
+ </s:sequence> -->
+
+ </s:complexType>
+ </s:element>
+
+ <s:element name="echoDateResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element name="response" type="s:date" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+
+ <s:complexType name="echoBasetype">
+ <s:sequence>
+ <s:element name="request" type="s:date" />
+ </s:sequence>
+ </s:complexType>
+
+ <s:element name="echoPolymorphicDate">
+ <s:complexType>
+ <s:complexContent>
+ <s:extension base="data:echoBasetype"/>
+ </s:complexContent>
+ </s:complexType>
+ </s:element>
+
</s:schema>
<s:schema elementFormDefault="qualified"
@@ -385,8 +429,6 @@
</s:complexType>
</s:schema>
-
-
</types>
<!-- messages -->
@@ -510,6 +552,19 @@
<message name="echoAnyTypeArrayResponse">
<part name="x" element="data:echoAnyTypeArrayResponse" />
</message>
+
+
+ <message name="echoPolymorphicDateMessage">
+ <part name="dateRequest" element="data:echoPolymorphicDate"/>
+ </message>
+
+ <message name="echoDateMessage">
+ <part name="dateRequest" element="data:echoDate"/>
+ </message>
+
+ <message name="echoDateResponseMessage">
+ <part name="dateResponse" element="data:echoDateResponse"/>
+ </message>
<!-- operation -->
<portType name="GorillaInterface">
@@ -605,6 +660,13 @@
<output message="tns:echoAnyTypeArrayResponse" />
<fault name="assertFault" message="tns:assertFault" />
</operation>
+ <operation name="echoPolymorphicDate">
+ <input message="tns:echoPolymorphicDateMessage" />
+ </operation>
+ <operation name="echoDate">
+ <input message="tns:echoDateMessage" />
+ <output message="tns:echoDateResponseMessage" />
+ </operation>
</portType>
<!-- binding -->
@@ -817,6 +879,21 @@
<soap:fault name="assertFault" use="literal" />
</fault>
</operation>
+ <operation name="echoDate">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="echoPolymorphicDate">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ </operation>
</binding>
<service name="GorillaService">
Modified: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/GorillaDLWProxyTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/GorillaDLWProxyTests.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/GorillaDLWProxyTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/GorillaDLWProxyTests.java Mon Nov 17 14:10:23 2008
@@ -25,7 +25,11 @@
import org.apache.axis2.jaxws.framework.AbstractTestCase;
import org.apache.axis2.jaxws.message.databinding.JAXBUtilsMonitor;
import org.apache.axis2.jaxws.proxy.gorilla_dlw.sei.GorillaInterface;
+import org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl;
+import javax.xml.datatype.DatatypeFactory;
+import javax.xml.datatype.Duration;
+import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
@@ -34,6 +38,9 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.GregorianCalendar;
import java.util.List;
public class GorillaDLWProxyTests extends AbstractTestCase {
@@ -469,6 +476,39 @@
}
}
+ public void testEchoDate() throws Exception{
+ try{
+ System.out.println("TestEchoDate");
+ GorillaInterface proxy = getProxy();
+ GregorianCalendar cal = new GregorianCalendar(Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH);
+ DatatypeFactory javaxtypeFactory = DatatypeFactory.newInstance();
+ DatatypeFactory xercesfactoryImpl = DatatypeFactoryImpl.newInstance();
+ XMLGregorianCalendar request= javaxtypeFactory.newXMLGregorianCalendar(cal);
+ System.out.println("Javax Factory Clazz Name = "+request.getClass().getName());
+ Duration d = javaxtypeFactory.newDuration(System.currentTimeMillis());
+ XMLGregorianCalendar response = proxy.echoDate(request, d);
+ System.out.println(response.toString());
+ assertNotNull(response);
+ }catch(Exception e){
+ e.printStackTrace();
+ fail("Exception in testEchoDate :"+e);
+ }
+ }
+
+ public void testPolymorphicDate() throws Exception{
+ try{
+ GorillaInterface proxy = getProxy();
+ GregorianCalendar cal = new GregorianCalendar(Calendar.YEAR, Calendar.MONTH, Calendar.DAY_OF_MONTH);
+ DatatypeFactory typeFactory = DatatypeFactory.newInstance();
+ XMLGregorianCalendar request = typeFactory.newXMLGregorianCalendar(cal);
+ proxy.echoPolymorphicDate(request);
+
+ }catch(Exception e){
+ e.printStackTrace();
+ fail("Exception in testEchoDate :"+e);
+ }
+ }
+
private boolean compareLists(List in, List out) {
if (in.size() != out.size()) {
TestLogger.logger.debug("Size mismatch " + in.size() + "!=" + out.size());
Modified: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/GorillaProxyImpl.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/GorillaProxyImpl.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/GorillaProxyImpl.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/GorillaProxyImpl.java Mon Nov 17 14:10:23 2008
@@ -24,6 +24,8 @@
import org.apache.axis2.jaxws.proxy.gorilla_dlw.sei.GorillaInterface;
import javax.jws.WebService;
+import javax.xml.datatype.Duration;
+import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.ws.Holder;
import java.util.List;
@@ -135,4 +137,18 @@
public List<Fruit> echoEnumArray(List<Fruit> data) throws AssertFault {
return data;
}
+
+ public XMLGregorianCalendar echoDate(XMLGregorianCalendar requestedTerminationTime, Duration requestedLifetimeDuration) {
+
+ return requestedTerminationTime;
+ }
+
+
+ public void echoPolymorphicDate(XMLGregorianCalendar request) {
+ //Test to make sure polymorpic cases can marshal on client and server.
+ if(request==null){
+
+ }
+ }
+
}
Modified: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/META-INF/gorilla_dlw.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/META-INF/gorilla_dlw.wsdl?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/META-INF/gorilla_dlw.wsdl (original)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/META-INF/gorilla_dlw.wsdl Mon Nov 17 14:10:23 2008
@@ -189,6 +189,14 @@
</s:sequence>
</s:complexType>
</s:element>
+
+ <s:element name="echoStringListAsLinkedListResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element minOccurs="0" maxOccurs="1" name="data" type="data:stringList" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
<s:element name="echoStringListAltAsLinkedListResponse">
<s:complexType>
@@ -360,7 +368,43 @@
</s:sequence>
</s:complexType>
</s:element>
-
+
+ <s:element name="echoDate">
+ <s:complexType>
+ <s:choice>
+ <s:element name="RequestedTerminationTime" nillable="true" type="s:dateTime" />
+ <s:element name="RequestedLifetimeDuration" type="s:duration" />
+ </s:choice>
+
+ <!--<s:sequence>
+ <s:element name="request" nillable="true" type="s:date" />
+ </s:sequence> -->
+
+ </s:complexType>
+ </s:element>
+
+ <s:element name="echoDateResponse">
+ <s:complexType>
+ <s:sequence>
+ <s:element name="response" type="s:date" />
+ </s:sequence>
+ </s:complexType>
+ </s:element>
+
+ <s:complexType name="echoBasetype">
+ <s:sequence>
+ <s:element name="request" type="s:date" />
+ </s:sequence>
+ </s:complexType>
+
+ <s:element name="echoPolymorphicDate">
+ <s:complexType>
+ <s:complexContent>
+ <s:extension base="data:echoBasetype"/>
+ </s:complexContent>
+ </s:complexType>
+ </s:element>
+
</s:schema>
<s:schema elementFormDefault="qualified"
@@ -385,8 +429,6 @@
</s:complexType>
</s:schema>
-
-
</types>
<!-- messages -->
@@ -510,6 +552,19 @@
<message name="echoAnyTypeArrayResponse">
<part name="x" element="data:echoAnyTypeArrayResponse" />
</message>
+
+
+ <message name="echoPolymorphicDateMessage">
+ <part name="dateRequest" element="data:echoPolymorphicDate"/>
+ </message>
+
+ <message name="echoDateMessage">
+ <part name="dateRequest" element="data:echoDate"/>
+ </message>
+
+ <message name="echoDateResponseMessage">
+ <part name="dateResponse" element="data:echoDateResponse"/>
+ </message>
<!-- operation -->
<portType name="GorillaInterface">
@@ -605,6 +660,13 @@
<output message="tns:echoAnyTypeArrayResponse" />
<fault name="assertFault" message="tns:assertFault" />
</operation>
+ <operation name="echoPolymorphicDate">
+ <input message="tns:echoPolymorphicDateMessage" />
+ </operation>
+ <operation name="echoDate">
+ <input message="tns:echoDateMessage" />
+ <output message="tns:echoDateResponseMessage" />
+ </operation>
</portType>
<!-- binding -->
@@ -817,6 +879,21 @@
<soap:fault name="assertFault" use="literal" />
</fault>
</operation>
+ <operation name="echoDate">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ <output>
+ <soap:body use="literal"/>
+ </output>
+ </operation>
+ <operation name="echoPolymorphicDate">
+ <soap:operation soapAction=""/>
+ <input>
+ <soap:body use="literal"/>
+ </input>
+ </operation>
</binding>
<service name="GorillaService">
Modified: webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/sei/GorillaInterface.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/sei/GorillaInterface.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/sei/GorillaInterface.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws-integration/test/org/apache/axis2/jaxws/proxy/gorilla_dlw/sei/GorillaInterface.java Mon Nov 17 14:10:23 2008
@@ -22,12 +22,15 @@
import org.apache.axis2.jaxws.proxy.gorilla_dlw.data.Fruit;
+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.xml.bind.annotation.XmlSeeAlso;
+import javax.xml.datatype.Duration;
+import javax.xml.datatype.XMLGregorianCalendar;
import javax.xml.ws.Holder;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;
@@ -301,5 +304,31 @@
List<Object> data)
throws AssertFault
;
+ /**
+ *
+ * @param requestedTerminationTime
+ * @param requestedLifetimeDuration
+ * @return
+ * returns javax.xml.datatype.XMLGregorianCalendar
+ */
+ @WebMethod
+ @WebResult(name = "response", targetNamespace = "http://org/apache/axis2/jaxws/proxy/gorilla_dlw/data")
+ @RequestWrapper(localName = "echoDate", targetNamespace = "http://org/apache/axis2/jaxws/proxy/gorilla_dlw/data", className = "org.apache.axis2.jaxws.proxy.gorilla_dlw.data.EchoDate")
+ @ResponseWrapper(localName = "echoDateResponse", targetNamespace = "http://org/apache/axis2/jaxws/proxy/gorilla_dlw/data", className = "org.apache.axis2.jaxws.proxy.gorilla_dlw.data.EchoDateResponse")
+ public XMLGregorianCalendar echoDate(
+ @WebParam(name = "RequestedTerminationTime", targetNamespace = "http://org/apache/axis2/jaxws/proxy/gorilla_dlw/data")
+ XMLGregorianCalendar requestedTerminationTime,
+ @WebParam(name = "RequestedLifetimeDuration", targetNamespace = "http://org/apache/axis2/jaxws/proxy/gorilla_dlw/data")
+ Duration requestedLifetimeDuration);
+ /**
+ *
+ * @param request
+ */
+ @WebMethod
+ @Oneway
+ @RequestWrapper(localName = "echoPolymorphicDate", targetNamespace = "http://org/apache/axis2/jaxws/proxy/gorilla_dlw/data", className = "org.apache.axis2.jaxws.proxy.gorilla_dlw.data.EchoPolymorphicDate")
+ public void echoPolymorphicDate(
+ @WebParam(name = "request", targetNamespace = "http://org/apache/axis2/jaxws/proxy/gorilla_dlw/data")
+ XMLGregorianCalendar request);
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedMethodMarshaller.java Mon Nov 17 14:10:23 2008
@@ -345,14 +345,18 @@
// Create the inputs to the wrapper tool
ArrayList<String> nameList = new ArrayList<String>();
Map<String, Object> objectList = new HashMap<String, Object>();
+ Map<String, Class> declaredClassMap = new HashMap<String, Class>();
for (PDElement pde : pdeList) {
String name = pde.getParam().getParameterName();
-
+
// The object list contains type rendered objects
Object value = pde.getElement().getTypeValue();
+ Class dclClass = pde.getParam().getParameterActualType();
+
nameList.add(name);
objectList.put(name, value);
+ declaredClassMap.put(name, dclClass);
}
// Add the return object to the nameList and objectList
@@ -372,7 +376,7 @@
cls = MethodMarshallerUtils.loadClass(wrapperName, endpointDesc.getAxisService().getClassLoader());
}
JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
- Object object = wrapperTool.wrap(cls, nameList, objectList,
+ Object object = wrapperTool.wrap(cls, nameList, objectList, declaredClassMap,
marshalDesc.getPropertyDescriptorMap(cls));
QName wrapperQName = new QName(operationDesc.getResponseWrapperTargetNamespace(),
@@ -454,14 +458,17 @@
// Create the inputs to the wrapper tool
ArrayList<String> nameList = new ArrayList<String>();
Map<String, Object> objectList = new HashMap<String, Object>();
+ Map<String, Class> declaredClassMap = new HashMap<String, Class>();
for (PDElement pv : pvList) {
String name = pv.getParam().getParameterName();
// The object list contains type rendered objects
Object value = pv.getElement().getTypeValue();
+ Class dclClass = pv.getParam().getParameterActualType();
nameList.add(name);
objectList.put(name, value);
+ declaredClassMap.put(name, dclClass);
}
// Now create the single JAXB element
@@ -473,7 +480,7 @@
cls = MethodMarshallerUtils.loadClass(wrapperName, endpointDesc.getAxisService().getClassLoader());
}
JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
- Object object = wrapperTool.wrap(cls, nameList, objectList,
+ Object object = wrapperTool.wrap(cls, nameList, objectList, declaredClassMap,
marshalDesc.getPropertyDescriptorMap(cls));
QName wrapperQName = new QName(operationDesc.getRequestWrapperTargetNamespace(),
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/DocLitWrappedPlusMethodMarshaller.java Mon Nov 17 14:10:23 2008
@@ -468,6 +468,7 @@
// Create the inputs to the wrapper tool
ArrayList<String> nameList = new ArrayList<String>();
Map<String, Object> objectList = new HashMap<String, Object>();
+ Map<String, Class> declaredClassMap = new HashMap<String, Class>();
List<PDElement> headerPDEList = new ArrayList<PDElement>();
Iterator<PDElement> it = pdeList.iterator();
@@ -478,8 +479,10 @@
// Normal case
// The object list contains type rendered objects
Object value = pde.getElement().getTypeValue();
+ Class dclClass = pde.getParam().getParameterActualType();
nameList.add(name);
objectList.put(name, value);
+ declaredClassMap.put(name, dclClass);
} else {
// Header Case:
// Remove the header from the list, it will
@@ -495,8 +498,10 @@
if (returnType != void.class) {
String name = operationDesc.getResultName();
+ Class dclClass = operationDesc.getResultActualType();
nameList.add(name);
objectList.put(name, returnObject);
+ declaredClassMap.put(name, dclClass);
}
} else {
// Header Result:
@@ -533,7 +538,7 @@
cls = MethodMarshallerUtils.loadClass(wrapperName, endpointDesc.getAxisService().getClassLoader());
}
JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
- Object object = wrapperTool.wrap(cls, nameList, objectList,
+ Object object = wrapperTool.wrap(cls, nameList, objectList, declaredClassMap,
marshalDesc.getPropertyDescriptorMap(cls));
QName wrapperQName = new QName(operationDesc.getResponseWrapperTargetNamespace(),
@@ -632,6 +637,7 @@
// Create the inputs to the wrapper tool
ArrayList<String> nameList = new ArrayList<String>();
Map<String, Object> objectList = new HashMap<String, Object>();
+ Map<String, Class> declardClassMap = new HashMap<String, Class>();
List<PDElement> headerPDEList = new ArrayList<PDElement>();
Iterator<PDElement> it = pdeList.iterator();
@@ -642,8 +648,10 @@
// Normal case:
// The object list contains type rendered objects
Object value = pde.getElement().getTypeValue();
+ Class dclClass = pde.getParam().getParameterActualType();
nameList.add(name);
objectList.put(name, value);
+ declardClassMap.put(name, dclClass);
} else {
// Header Case:
// Remove the header from the list, it will
@@ -662,7 +670,7 @@
cls = MethodMarshallerUtils.loadClass(wrapperName, endpointDesc.getAxisService().getClassLoader());
}
JAXBWrapperTool wrapperTool = new JAXBWrapperToolImpl();
- Object object = wrapperTool.wrap(cls, nameList, objectList,
+ Object object = wrapperTool.wrap(cls, nameList, objectList, declardClassMap,
marshalDesc.getPropertyDescriptorMap(cls));
QName wrapperQName = new QName(operationDesc.getRequestWrapperTargetNamespace(),
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/marshaller/impl/alt/LegacyExceptionUtil.java Mon Nov 17 14:10:23 2008
@@ -137,7 +137,7 @@
// Get the map of child objects
Map<String, Object> childObjects = getChildObjectsMap(t, pdMap);
-
+ Map<String, Class> declaringClass = new HashMap<String, Class>();
List<String> childNames = new ArrayList<String>(childObjects.keySet());
if (log.isErrorEnabled()) {
@@ -148,7 +148,7 @@
Map<String, PropertyDescriptorPlus> pdMapForBean =
marshalDesc.getPropertyDescriptorMap(faultBeanClass);
faultBean =
- wrapperTool.wrap(faultBeanClass, childNames, childObjects, pdMapForBean);
+ wrapperTool.wrap(faultBeanClass, childNames, childObjects, declaringClass, pdMapForBean);
if (log.isErrorEnabled()) {
log.debug("Completed creation of the fault bean.");
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/utility/PropertyDescriptorPlus.java Mon Nov 17 14:10:23 2008
@@ -150,7 +150,7 @@
* @throws IllegalAccessException
* @throws JAXBWrapperException
*/
- public void set(Object targetBean, Object propValue)
+ public void set(Object targetBean, Object propValue, Class dclClass)
throws InvocationTargetException, IllegalAccessException, JAXBWrapperException {
Method writeMethod = null;
@@ -174,7 +174,7 @@
setList(targetBean, propValue);
} else if (descriptor.getPropertyType() == JAXBElement.class) {
if (propValue != null) {
- Class clazz = propValue.getClass();
+ Class clazz = dclClass!=null ? dclClass : propValue.getClass();
JAXBElement element = new JAXBElement(xmlName, clazz, propValue);
setAtomic(targetBean, element, writeMethod);
}
Modified: webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/JAXBWrapperTool.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/JAXBWrapperTool.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/JAXBWrapperTool.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/src/org/apache/axis2/jaxws/wrapper/JAXBWrapperTool.java Mon Nov 17 14:10:23 2008
@@ -68,6 +68,7 @@
public Object wrap(Class jaxbClass,
List<String> childNames,
Map<String, Object> childObjects,
+ Map<String, Class> declaredClassMap,
Map<String, PropertyDescriptorPlus> pdMap) throws JAXBWrapperException;
/**
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?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- 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 Mon Nov 17 14:10:23 2008
@@ -28,6 +28,7 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -117,6 +118,7 @@
public Object wrap(Class jaxbClass,
List<String> childNames,
Map<String, Object> childObjects,
+ Map<String, Class> declaredClassMap,
Map<String, PropertyDescriptorPlus> pdMap) throws JAXBWrapperException {
@@ -153,13 +155,14 @@
for (String childName : childNames) {
PropertyDescriptorPlus propInfo = pdMap.get(childName);
Object value = childObjects.get(childName);
+ Class dclClass = declaredClassMap.get(childName);
if (propInfo == null) {
throw new JAXBWrapperException(Messages.getMessage("JAXBWrapperErr6",
jaxbClass.getName(),
childName));
}
try {
- propInfo.set(jaxbObject, value);
+ propInfo.set(jaxbObject, value, dclClass);
} catch (Throwable t) {
if (log.isDebugEnabled()) {
@@ -261,9 +264,9 @@
log.debug(" The JAXBClass is:" + jaxbClass.getName());
throw new JAXBWrapperException(t);
}
-
+ HashMap<String, Class> declaringClass = new HashMap<String, Class>();
// Delegate
- return wrap(jaxbClass, childNames, childObjects, pdMap);
+ return wrap(jaxbClass, childNames, childObjects, declaringClass, pdMap);
}
Modified: webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/utility/PropertyDescriptorPlusTests.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/utility/PropertyDescriptorPlusTests.java?rev=718408&r1=718407&r2=718408&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/utility/PropertyDescriptorPlusTests.java (original)
+++ webservices/axis2/trunk/java/modules/jaxws/test/org/apache/axis2/jaxws/utility/PropertyDescriptorPlusTests.java Mon Nov 17 14:10:23 2008
@@ -47,7 +47,7 @@
assertNotNull(propertyDescriptor);
PropertyDescriptorPlus plus = new PropertyDescriptorPlus(propertyDescriptor, qName);
byte[] testValue = {0xd, 0xe, 0xa, 0xd, 0xb, 0xe, 0xe, 0xf};
- plus.set(object, testValue);
+ plus.set(object, testValue, null);
JAXBElement<byte[]> arg0 = object.getArg0();
assertEquals(arg0.getDeclaredType(), byte[].class);