[
https://issues.apache.org/jira/browse/AXIS2-3797?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12752031#action_12752031
]
Andreas Veithen commented on AXIS2-3797:
----------------------------------------
JAXB does it the right way. Here is the relevant part from the specs:
"A schema author defines an element to be of type xs:anyType to defer
constraining an element to a particular type to the xml document author.
Through the use of xsi:type attribute or element substitution, an xml document
author provides constraints for an element defined as xs:anyType. The JAXB
unmarshaller is able to unmarshal a schema defined xsd:anyType element that has
been constrained within the xml document to an easy to access JAXB mapped
class. However, when the xml document does not constrain the xs:anyType
element, JAXB unmarshals the unconstrained content to an element node instance
of a supported DOM API."
> "Unknown type can not serialize" Exception
> ------------------------------------------
>
> Key: AXIS2-3797
> URL: https://issues.apache.org/jira/browse/AXIS2-3797
> Project: Axis 2.0 (Axis2)
> Issue Type: Bug
> Components: adb
> Affects Versions: 1.4
> Environment: Axis2 1.4, Tomcat 5.5.26
> Reporter: Detelin Yordanov
> Attachments: full stacktrace.txt, TypeTest.aar, TypeTestClient.java
>
>
> I have a simple POJO service with the following method:
> package org.tempuri.test;
> import org.tempuri.test.data.arrays.ArrayOfanyType;
>
> public class TypeTest {
> public ArrayOfanyType retArrayAnyType1D(ArrayOfanyType inArrayAnyType1D) {
> return inArrayAnyType1D;
> }
> }
> The ArrayOfanyType is declared like this:
> public class ArrayOfanyType {
> private Object[] anyType;
> public Object[] getAnyType() {
> if (anyType == null) {
> anyType = new Object[0];
> }
> return this.anyType;
> }
> public void setAnyType(Object[] anyType) {
> this.anyType = anyType;
> }
> }
> I deploy this POJO on an Axis2 1.4 runtime running on Tomcat.
> Then I generate a client stub using the following command:
> wsdl2java -ap -o ./generated -s -u -uw -uri
> http://localhost:8080/axis2-1.4/services/TypeTest?wsdl
> I use the stub to invoke the service passing an OMElement in the Object array:
> OMFactory factory = OMAbstractFactory.getOMFactory();
> OMNamespace ns =
> factory.createOMNamespace("http://www.serverside.com/articles/introducingAxiom",
> "article");
> OMElement articleElement = factory.createOMElement("Article", ns);
> ArrayOfanyType input = new ArrayOfanyType();
> input.setAnyType(new OMElement[]{articleElement});
> stub.retArrayAnyType1D(input);
> While serializing the ArrayOfanyType ADBBean I get an "Unknown type can not
> serialize" exception:
> Caused by: javax.xml.stream.XMLStreamException: Unknow type can not serialize
> at
> org.apache.axis2.databinding.utils.ConverterUtil.serializeAnyType(ConverterUtil.java:1449)
> at
> org.tempuri.test.data.arrays.xsd.ArrayOfanyType.serialize(ArrayOfanyType.java:241)
> at
> org.tempuri.test.data.arrays.xsd.ArrayOfanyType.serialize(ArrayOfanyType.java:160)
> at
> org.tempuri.test.RetArrayAnyType1D.serialize(RetArrayAnyType1D.java:203)
> at
> org.tempuri.test.RetArrayAnyType1D.serialize(RetArrayAnyType1D.java:123)
> at
> org.tempuri.test.RetArrayAnyType1D$1.serialize(RetArrayAnyType1D.java:111)
> ...
> I did not have this problem on Axis2 1.3 so I guess something have been
> changed in ConverterUtil.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.