You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Marco <mp...@imolinfo.it> on 2008/12/13 11:59:17 UTC

A regression from CXF2.0* to CXF 2.1.*?

Hi guys, 
I have integrated CXF 2.0.3 into one of my projects because i need a
jax-ws runtime. It seems that there are some problems with arrays
marshalling (not present in 2.0.*). For example if the return type is an
int[], the mapping is correct:

<xs:element name="setUserProfileArrayResponse">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" name="return"
type="xs:int"/>
</xs:sequence>
</xs:complexType>

But at runtime i get a Marshalling Error:
org.apache.cxf.interceptor.Fault: Marshalling Error: [I is not known to
this context
        at
org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:173)
        at
org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169)
        at
org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(AbstractOutDatabindingInterceptor.java:104)
        at
org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInterceptor.java:68)
        at
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:226)

This is quite strange, since the int[] as a parameter (and not a return
type) works.
I tested that with 2.1.3 and 2.1.4-SNAPSHOT (same behaviour)

Marco.


Re: A regression from CXF2.0* to CXF 2.1.*?

Posted by Daniel Kulp <dk...@apache.org>.
>
> If you need i can send you a test case to reproduce the issue.
>

Please do.   That's definitely the best way to make sure we're on the same 
page.  You can send it privately to me if that works best or log a jira and 
attach it there.

Actually if you could test with 2.1.4-SNAPSHOT as well, that would also be 
great.  :-)

Dan



On Wednesday 17 December 2008 4:09:30 pm Marco wrote:
> Hi Dan,
>
> Asm is alreasy in our classpath, by the way i noticed that we have a
> very similar problem problem even if we have an array inside an
> exception.
> For example, if i define an exception:
>
> public class ArrayException extends Exception {
> 	private int[] reason;
> 	private String name;
> 	(...public getters/setters...)
> }
>
> In the service interface:
> @WebMethod
> public  String echoTest() throws ArrayException ;
>
> ...the WSDL of the service generated has the type:
>
> <xs:complexType name="ArrayException">
> −
> <xs:sequence>
> <xs:element name="name" nillable="true" type="xs:string"/>
> </xs:sequence>
> </xs:complexType>
>
> ...so the array field is lost! Does your tests cover exceptions with
> array? This happens with CXF-2.1.3.
>
> If you need i can send you a test case to reproduce the issue.
>
> Marco.
>
> On Wed, 2008-12-17 at 14:03 -0500, Daniel Kulp wrote:
> > Not sure what would cause this considering we have a system tests that
> > explicitly tests the array things:
> > http://svn.eu.apache.org/repos/asf/cxf/trunk/systests/src/test/java/org/a
> >pache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
> >
> > One thing to try: add an asm jar to your classpath.   That may help.
> >
> > Dan
> >
> > On Saturday 13 December 2008 5:59:17 am Marco wrote:
> > > Hi guys,
> > > I have integrated CXF 2.0.3 into one of my projects because i need a
> > > jax-ws runtime. It seems that there are some problems with arrays
> > > marshalling (not present in 2.0.*). For example if the return type is
> > > an int[], the mapping is correct:
> > >
> > > <xs:element name="setUserProfileArrayResponse">
> > > <xs:complexType>
> > > <xs:sequence>
> > > <xs:element maxOccurs="unbounded" minOccurs="0" name="return"
> > > type="xs:int"/>
> > > </xs:sequence>
> > > </xs:complexType>
> > >
> > > But at runtime i get a Marshalling Error:
> > > org.apache.cxf.interceptor.Fault: Marshalling Error: [I is not known to
> > > this context
> > >         at
> > > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java
> > >:173 ) at
> > > org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169)
> > >         at
> > > org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts
> > >(Abs tractOutDatabindingInterceptor.java:104) at
> > > org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutInte
> > >rcep tor.java:68) at
> > > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptor
> > >Chai n.java:226)
> > >
> > > This is quite strange, since the int[] as a parameter (and not a return
> > > type) works.
> > > I tested that with 2.1.3 and 2.1.4-SNAPSHOT (same behaviour)
> > >
> > > Marco.



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog

Re: A regression from CXF2.0* to CXF 2.1.*?

Posted by Marco <mp...@imolinfo.it>.
Hi Dan,
 
Asm is alreasy in our classpath, by the way i noticed that we have a
very similar problem problem even if we have an array inside an
exception. 
For example, if i define an exception:

public class ArrayException extends Exception {
	private int[] reason;
	private String name;
	(...public getters/setters...)
}

In the service interface:
@WebMethod
public  String echoTest() throws ArrayException ;

...the WSDL of the service generated has the type:

<xs:complexType name="ArrayException">
−
<xs:sequence>
<xs:element name="name" nillable="true" type="xs:string"/>
</xs:sequence>
</xs:complexType>

...so the array field is lost! Does your tests cover exceptions with
array? This happens with CXF-2.1.3. 

If you need i can send you a test case to reproduce the issue.

Marco.

On Wed, 2008-12-17 at 14:03 -0500, Daniel Kulp wrote:
> Not sure what would cause this considering we have a system tests that 
> explicitly tests the array things:
> http://svn.eu.apache.org/repos/asf/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java
> 
> One thing to try: add an asm jar to your classpath.   That may help.
> 
> Dan
> 
> 
> 
> On Saturday 13 December 2008 5:59:17 am Marco wrote:
> > Hi guys,
> > I have integrated CXF 2.0.3 into one of my projects because i need a
> > jax-ws runtime. It seems that there are some problems with arrays
> > marshalling (not present in 2.0.*). For example if the return type is an
> > int[], the mapping is correct:
> >
> > <xs:element name="setUserProfileArrayResponse">
> > <xs:complexType>
> > <xs:sequence>
> > <xs:element maxOccurs="unbounded" minOccurs="0" name="return"
> > type="xs:int"/>
> > </xs:sequence>
> > </xs:complexType>
> >
> > But at runtime i get a Marshalling Error:
> > org.apache.cxf.interceptor.Fault: Marshalling Error: [I is not known to
> > this context
> >         at
> > org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:173
> >) at
> > org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169)
> >         at
> > org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(Abs
> >tractOutDatabindingInterceptor.java:104) at
> > org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutIntercep
> >tor.java:68) at
> > org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
> >n.java:226)
> >
> > This is quite strange, since the int[] as a parameter (and not a return
> > type) works.
> > I tested that with 2.1.3 and 2.1.4-SNAPSHOT (same behaviour)
> >
> > Marco.
> 
> 
> 


Re: A regression from CXF2.0* to CXF 2.1.*?

Posted by Daniel Kulp <dk...@apache.org>.
Not sure what would cause this considering we have a system tests that 
explicitly tests the array things:
http://svn.eu.apache.org/repos/asf/cxf/trunk/systests/src/test/java/org/apache/cxf/systest/jaxws/DocLitWrappedCodeFirstService.java

One thing to try: add an asm jar to your classpath.   That may help.

Dan



On Saturday 13 December 2008 5:59:17 am Marco wrote:
> Hi guys,
> I have integrated CXF 2.0.3 into one of my projects because i need a
> jax-ws runtime. It seems that there are some problems with arrays
> marshalling (not present in 2.0.*). For example if the return type is an
> int[], the mapping is correct:
>
> <xs:element name="setUserProfileArrayResponse">
> <xs:complexType>
> <xs:sequence>
> <xs:element maxOccurs="unbounded" minOccurs="0" name="return"
> type="xs:int"/>
> </xs:sequence>
> </xs:complexType>
>
> But at runtime i get a Marshalling Error:
> org.apache.cxf.interceptor.Fault: Marshalling Error: [I is not known to
> this context
>         at
> org.apache.cxf.jaxb.JAXBEncoderDecoder.marshall(JAXBEncoderDecoder.java:173
>) at
> org.apache.cxf.jaxb.io.DataWriterImpl.write(DataWriterImpl.java:169)
>         at
> org.apache.cxf.interceptor.AbstractOutDatabindingInterceptor.writeParts(Abs
>tractOutDatabindingInterceptor.java:104) at
> org.apache.cxf.interceptor.BareOutInterceptor.handleMessage(BareOutIntercep
>tor.java:68) at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChai
>n.java:226)
>
> This is quite strange, since the int[] as a parameter (and not a return
> type) works.
> I tested that with 2.1.3 and 2.1.4-SNAPSHOT (same behaviour)
>
> Marco.



-- 
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog