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/17 07:45:33 UTC

[jira] Updated: (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:all-tabpanel ]

Paul Nibin K J updated AXIS2-4820:
----------------------------------

    Attachment: SimpleTest.jar

I am attaching the web service test archive.

> 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