You are viewing a plain text version of this content. The canonical link for it is here.
Posted to rampart-dev@ws.apache.org by "Paul Nibin K J (JIRA)" <ji...@apache.org> on 2010/09/20 09:42:33 UTC
[jira] Commented: (AXIS2-4820) generateWrappedArrayTypes is showing
types as wrapped in the schema, but the serialized data send to the client
is not wrapped.
[ https://issues.apache.org/jira/browse/AXIS2-4820?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12912377#action_12912377 ]
Paul Nibin K J commented on AXIS2-4820:
---------------------------------------
Any updates on this one??
> generateWrappedArrayTypes is showing types as wrapped in the schema, but the serialized data send to the client is not wrapped.
> -------------------------------------------------------------------------------------------------------------------------------
>
> Key: AXIS2-4820
> URL: https://issues.apache.org/jira/browse/AXIS2-4820
> Project: Axis2
> Issue Type: Bug
> Components: adb
> Affects Versions: 1.5.1
> Environment: Axis 2 1.5.1 + tomcat 5.5.29
> java version "1.6.0_20"
> Windows XP SP3
> Reporter: Paul Nibin K J
> Fix For: nightly
>
> Attachments: SimpleTest.jar
>
> Original Estimate: 72h
> Remaining Estimate: 72h
>
> I am trying to deploy a web service which returns a complex bean object.
> My Test web service class is
> public class SimpleTest {
> public static class ComplexBean {
> public String[] getStr() {
> return str;
> }
> public void setStr(String[] str) {
> this.str = str;
> }
> public Object[][] getVal() {
> return val;
> }
> public void setVal(Object[][] val) {
> this.val = val;
> }
> private String[] str;
> private Object[][] val;
> }
> public ComplexBean getBean() {
> ComplexBean complexBean = new ComplexBean();
> complexBean.setStr(new String[] { "1", "2" });
> complexBean.setVal(new Object[][] { new Object[] { "1-a", "1-b" },
> new Object[] { "2-a", "2-b" } });
> return complexBean;
> }
> }
> I deployed the service and the WSDL is generated. The schema for the generated WSDL is as follows:
> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://ws.apache.org/axis2/xsd">
> <xs:complexType name="ComplexBean">
> <xs:sequence>
> <xs:element maxOccurs="unbounded" minOccurs="0" name="str" nillable="true" type="xs:string"/>
> <xs:element maxOccurs="unbounded" minOccurs="0" name="val" nillable="true" type="ax21:ArrayOfObject"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="ArrayOfObject">
> <xs:sequence>
> <xs:element maxOccurs="unbounded" minOccurs="0" name="array" nillable="true" type="xs:anyType"/>
> </xs:sequence>
> </xs:complexType>
> </xs:schema>
> I created the client for the WSDL using the ADB. I invoked the web method using the client. The web method is invoked and I captured the SOAP response. It is as follows.
> <?xml version='1.0' encoding='UTF-8'?>
> <soapenv:Envelope xmlns:soapenv="http://www.w3.org/2003/05/soap-envelope">
> <soapenv:Body>
> <ns:getBeanResponse xmlns:ns="http://test">
> <ns:return xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ax21="http://test/xsd" xsi:type="ax21:ComplexBean">
> <ax21:str>1</ax21:str>
> <ax21:str>2</ax21:str>
> <ax21:val>
> <ax21:array>1-a</ax21:array>
> <ax21:array>1-b</ax21:array>
> </ax21:val>
> <ax21:val>
> <ax21:array>2-a</ax21:array>
> <ax21:array>2-b</ax21:array>
> </ax21:val>
> </ns:return>
> </ns:getBeanResponse>
> </soapenv:Body>
> </soapenv:Envelope>
> But in the client side, I am getting an exception.
> log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
> log4j:WARN Please initialize the log4j system properly.
> Exception in thread "main" org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Any type element type has not been given
> at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
> at test.SimpleTestStub.fromOM(SimpleTestStub.java:2463)
> at test.SimpleTestStub.getBean(SimpleTestStub.java:189)
> at test.TestSimpleClient.main(TestSimpleClient.java:12)
> Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Any type element type has not been given
> at test.SimpleTestStub$ArrayOfObject$Factory.parse(SimpleTestStub.java:2411)
> at test.SimpleTestStub$ComplexBean$Factory.parse(SimpleTestStub.java:1729)
> at test.SimpleTestStub$GetBeanResponse$Factory.parse(SimpleTestStub.java:870)
> at test.SimpleTestStub.fromOM(SimpleTestStub.java:2457)
> ... 2 more
> Caused by: org.apache.axis2.databinding.ADBException: Any type element type has not been given
> at org.apache.axis2.databinding.utils.ConverterUtil.getAnyTypeObject(ConverterUtil.java:1617)
> at test.SimpleTestStub$ArrayOfObject$Factory.parse(SimpleTestStub.java:2375)
> ... 5 more
> Is this a known issue? Is this issue same as https://issues.apache.org/jira/browse/AXIS2-4439 ? Is there a patch available for this issue?
> Anyways I tried the web service by setting the "generateWrappedArrayTypes" parameter as true in the services.xml. I found there is change in the WSDL generated.
> <xs:schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://test/xsd">
> <xs:complexType name="ComplexBean">
> <xs:sequence>
> <xs:element name="strWrapper" nillable="true" type="ns:stringWrapper"/>
> <xs:element name="valWrapper" nillable="true" type="ns:ArrayOfObjectWrapper"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="stringWrapper">
> <xs:sequence>
> <xs:element maxOccurs="unbounded" minOccurs="0" name="array" nillable="true" type="xs:string"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="anyTypeWrapper">
> <xs:sequence>
> <xs:element maxOccurs="unbounded" minOccurs="0" name="array" nillable="true" type="xs:anyType"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="ArrayOfObject">
> <xs:sequence>
> <xs:element name="arrayWrapper" nillable="true" type="ns:anyTypeWrapper"/>
> </xs:sequence>
> </xs:complexType>
> <xs:complexType name="ArrayOfObjectWrapper">
> <xs:sequence>
> <xs:element maxOccurs="unbounded" minOccurs="0" name="array" nillable="true" type="ax21:ArrayOfObject"/>
> </xs:sequence>
> </xs:complexType>
> </xs:schema>
> But the SOAP Response that got send back was same as before with no change.
> I was under the impression that SOAP Response send back also should be different. ( http://www.ibm.com/developerworks/library/ws-array/sidefile.html )
> Again I generated the client using ADB itself. While invocation I got another exception.
> log4j:WARN No appenders could be found for logger (org.apache.axis2.description.AxisService).
> log4j:WARN Please initialize the log4j system properly.
> Exception in thread "main" org.apache.axis2.AxisFault: org.apache.axis2.databinding.ADBException: Unexpected subelement val
> at org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
> at test.SimpleTestStub.fromOM(SimpleTestStub.java:1541)
> at test.SimpleTestStub.getBean(SimpleTestStub.java:189)
> at test.TestSimpleClient.main(TestSimpleClient.java:12)
> Caused by: java.lang.Exception: org.apache.axis2.databinding.ADBException: Unexpected subelement val
> at test.SimpleTestStub$ComplexBean$Factory.parse(SimpleTestStub.java:1489)
> at test.SimpleTestStub$GetBeanResponse$Factory.parse(SimpleTestStub.java:870)
> at test.SimpleTestStub.fromOM(SimpleTestStub.java:1535)
> ... 2 more
> Caused by: org.apache.axis2.databinding.ADBException: Unexpected subelement val
> at test.SimpleTestStub$ComplexBean$Factory.parse(SimpleTestStub.java:1483)
> ... 4 more
> I could provide more information if required..
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.
---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org