I'd actually tried that when I added the namespace too, it didn't help so I
didn't mention it before. I just tried it again with similar results, the
parameter is still missing although the wadl is slightly different due to
the name now :
@XmlRootElement(name = "TestCompositeObject", namespace = "
http://example.com/test")
public static class TestCompositeObject
{
public int id = 23;
public String name = "asdf";
}
wadl produces :
<resource path="/setTest3">
<method name="PUT" id="setTest3">
<request>
<representation mediaType="application/xml"
element="prefix1:TestCompositeObject"/>
</request>
<response>
<representation mediaType="application/xml"
element="prefix1:TestCompositeObject"/>
</response>
</method>
</resource>
The exception on wadl2java generation is still similar :
[java] WADLToJava Error: java.lang.reflect.UndeclaredThrowableException
[java]
[java] org.apache.cxf.tools.common.ToolException:
java.lang.reflect.UndeclaredThrowableException
[java] at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.execute(JAXRSContainer.java:82)
[java] at
org.apache.cxf.tools.common.toolspec.ToolRunner.runTool(ToolRunner.java:103)
[java] at
org.apache.cxf.tools.wadlto.WADLToJava.run(WADLToJava.java:65)
[java] at
org.apache.cxf.tools.wadlto.WADLToJava.run(WADLToJava.java:57)
[java] at
org.apache.cxf.tools.wadlto.WADLToJava.main(WADLToJava.java:99)
[java] Caused by: java.lang.reflect.UndeclaredThrowableException
[java] at $Proxy9.bind(Unknown Source)
[java] at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.createCodeModel(SourceGenerator.java:1196)
[java] at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.generateSchemaCodeAndInfo(SourceGenerator.java:231)
[java] at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator.generateSource(SourceGenerator.java:220)
[java] at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.processWadl(JAXRSContainer.java:151)
[java] at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.execute(JAXRSContainer.java:65)
[java] at
org.apache.cxf.tools.wadlto.jaxrs.JAXRSContainer.execute(JAXRSContainer.java:74)
[java] ... 4 more
[java] Caused by: java.lang.reflect.InvocationTargetException
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[java] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at
org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
[java] ... 11 more
[java] Caused by: java.lang.reflect.UndeclaredThrowableException
[java] at $Proxy13.error(Unknown Source)
[java] at
com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.error(SchemaCompilerImpl.java:316)
[java] at
com.sun.tools.xjc.util.ErrorReceiverFilter.error(ErrorReceiverFilter.java:82)
[java] at
com.sun.xml.xsom.impl.parser.ParserContext$2.error(ParserContext.java:206)
[java] at
com.sun.xml.xsom.impl.parser.ParserContext$1.reportError(ParserContext.java:184)
[java] at
com.sun.xml.xsom.impl.parser.NGCCRuntimeEx.reportError(NGCCRuntimeEx.java:175)
[java] at
com.sun.xml.xsom.impl.parser.DelayedRef.resolve(DelayedRef.java:110)
[java] at
com.sun.xml.xsom.impl.parser.DelayedRef.run(DelayedRef.java:85)
[java] at
com.sun.xml.xsom.impl.parser.ParserContext.getResult(ParserContext.java:135)
[java] at
com.sun.xml.xsom.parser.XSOMParser.getResult(XSOMParser.java:211)
[java] at
com.sun.tools.xjc.ModelLoader.createXSOM(ModelLoader.java:532)
[java] at
com.sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.java:268)
[java] ... 16 more
[java] Caused by: java.lang.reflect.InvocationTargetException
[java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
[java] at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[java] at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[java] at java.lang.reflect.Method.invoke(Method.java:597)
[java] at
org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:52)
[java] ... 28 more
[java] Caused by: java.lang.RuntimeException: Error compiling schema
from WADL : undefined simple or complex type 'testCompositeObject'
[java] at
org.apache.cxf.tools.wadlto.jaxrs.SourceGenerator$InnerErrorListener.error(SourceGenerator.java:1343)
[java] ... 33 more
[java] Caused by: org.xml.sax.SAXParseException: undefined simple or
complex type 'testCompositeObject'
[java] at
com.sun.xml.xsom.impl.parser.ParserContext$1.reportError(ParserContext.java:180)
[java] ... 23 more
On Fri, May 11, 2012 at 7:38 AM, Sergey Beryozkin <[email protected]>wrote:
> Well, it is the second time I'm seeing XmlRootElement with a namespace
> attribute but without a name attribute, and in both cases the same issue of
> the badly generated WADL has been discussed :-), so it is time to support
> this variation too.
>
> Yes, the JAXB Data Binding section does not show a namespace attribute in
> action, it is not that important for that section, besides using this
> attribute is not the only way to provide a namespace for JAXB.
>
> I think an empty XMLRootElement works OK when ObjectFactory is also
> available...
> In meantime, add an explicit name attribute too
>
> Cheers, Sergey
>
>
>
> On 10/05/12 21:20, Ted wrote:
>
>> None of the examples I've seen have had to do that. Even the "basic"
>> sample
>> in cxf doesn't seem to do that. If I look at the sample
>> Customer/Order/Product classes none of them have an explicit namespace
>> declaration.
>>
>> I gave it a try anyways :
>>
>> @XmlRootElement(namespace = "http://example.com/test")
>> public static class TestCompositeObject
>> {
>> public int id = 23;
>> public String name = "asdf";
>> }
>>
>> I can see wadl has changed to have the namespace for the
>> TestCompositeObject entry. The method itself though has not changed :
>>
>> <resource path="/setTest3">
>> <method name="PUT" id="setTest3">
>> <request>
>> <representation mediaType="application/xml"/>
>> </request>
>> <response>
>> <representation mediaType="application/xml"/>
>> </response>
>> </method>
>> </resource>
>>
>> When I call wadl2java on it, I get an exception : (I'm using jdk
>> 1.6.0_26-b03 on linux, and cxf 2.6.0)
>>
>> [java] WADLToJava Error: java.lang.reflect.**
>> UndeclaredThrowableException
>> [java]
>> [java] org.apache.cxf.tools.common.**ToolException:
>> java.lang.reflect.**UndeclaredThrowableException
>> [java] at
>> org.apache.cxf.tools.wadlto.**jaxrs.JAXRSContainer.execute(**
>> JAXRSContainer.java:82)
>> [java] at
>> org.apache.cxf.tools.common.**toolspec.ToolRunner.runTool(**
>> ToolRunner.java:103)
>> [java] at
>> org.apache.cxf.tools.wadlto.**WADLToJava.run(WADLToJava.**java:65)
>> [java] at
>> org.apache.cxf.tools.wadlto.**WADLToJava.run(WADLToJava.**java:57)
>> [java] at
>> org.apache.cxf.tools.wadlto.**WADLToJava.main(WADLToJava.**java:99)
>> [java] Caused by: java.lang.reflect.**UndeclaredThrowableException
>> [java] at $Proxy9.bind(Unknown Source)
>> [java] at
>> org.apache.cxf.tools.wadlto.**jaxrs.SourceGenerator.**createCodeModel(**
>> SourceGenerator.java:1196)
>> [java] at
>> org.apache.cxf.tools.wadlto.**jaxrs.SourceGenerator.**
>> generateSchemaCodeAndInfo(**SourceGenerator.java:231)
>> [java] at
>> org.apache.cxf.tools.wadlto.**jaxrs.SourceGenerator.**generateSource(**
>> SourceGenerator.java:220)
>> [java] at
>> org.apache.cxf.tools.wadlto.**jaxrs.JAXRSContainer.**
>> processWadl(JAXRSContainer.**java:151)
>> [java] at
>> org.apache.cxf.tools.wadlto.**jaxrs.JAXRSContainer.execute(**
>> JAXRSContainer.java:65)
>> [java] at
>> org.apache.cxf.tools.wadlto.**jaxrs.JAXRSContainer.execute(**
>> JAXRSContainer.java:74)
>> [java] ... 4 more
>> [java] Caused by: java.lang.reflect.**InvocationTargetException
>> [java] at sun.reflect.**NativeMethodAccessorImpl.**
>> invoke0(Native
>> Method)
>> [java] at
>> sun.reflect.**NativeMethodAccessorImpl.**invoke(**
>> NativeMethodAccessorImpl.java:**39)
>> [java] at
>> sun.reflect.**DelegatingMethodAccessorImpl.**invoke(**
>> DelegatingMethodAccessorImpl.**java:25)
>> [java] at java.lang.reflect.Method.**invoke(Method.java:597)
>> [java] at
>> org.apache.cxf.common.util.**ReflectionInvokationHandler.**invoke(**
>> ReflectionInvokationHandler.**java:52)
>> [java] ... 11 more
>> [java] Caused by: java.lang.reflect.**UndeclaredThrowableException
>> [java] at $Proxy13.error(Unknown Source)
>> [java] at
>> com.sun.tools.xjc.api.impl.**s2j.SchemaCompilerImpl.error(**
>> SchemaCompilerImpl.java:316)
>> [java] at
>> com.sun.tools.xjc.util.**ErrorReceiverFilter.error(**
>> ErrorReceiverFilter.java:82)
>> [java] at
>> com.sun.xml.xsom.impl.parser.**ParserContext$2.error(**
>> ParserContext.java:206)
>> [java] at
>> com.sun.xml.xsom.impl.parser.**ParserContext$1.reportError(**
>> ParserContext.java:184)
>> [java] at
>> com.sun.xml.xsom.impl.parser.**NGCCRuntimeEx.reportError(**
>> NGCCRuntimeEx.java:175)
>> [java] at
>> com.sun.xml.xsom.impl.parser.**DelayedRef.resolve(DelayedRef.**java:110)
>> [java] at
>> com.sun.xml.xsom.impl.parser.**DelayedRef.run(DelayedRef.**java:85)
>> [java] at co
>> [java]
>> m.sun.xml.xsom.impl.parser.**ParserContext.getResult(**
>> ParserContext.java:135)
>> [java] at
>> com.sun.xml.xsom.parser.**XSOMParser.getResult(**XSOMParser.java:211)
>> [java] at
>> com.sun.tools.xjc.ModelLoader.**createXSOM(ModelLoader.java:**532)
>> [java] at
>> com.sun.tools.xjc.api.impl.**s2j.SchemaCompilerImpl.bind(**
>> SchemaCompilerImpl.java:268)
>> [java] ... 16 more
>> [java] Caused by: java.lang.reflect.**InvocationTargetException
>> [java] at sun.reflect.**NativeMethodAccessorImpl.**
>> invoke0(Native
>> Method)
>> [java] at
>> sun.reflect.**NativeMethodAccessorImpl.**invoke(**
>> NativeMethodAccessorImpl.java:**39)
>> [java] at
>> sun.reflect.**DelegatingMethodAccessorImpl.**invoke(**
>> DelegatingMethodAccessorImpl.**java:25)
>> [java] at java.lang.reflect.Method.**invoke(Method.java:597)
>> [java] at
>> org.apache.cxf.common.util.**ReflectionInvokationHandler.**invoke(**
>> ReflectionInvokationHandler.**java:52)
>> [java] ... 28 more
>> [java] Caused by: java.lang.RuntimeException: Error compiling schema
>> from WADL : undefined simple or complex type 'testCompositeObject'
>> [java] at
>> org.apache.cxf.tools.wadlto.**jaxrs.SourceGenerator$**
>> InnerErrorListener.error(**SourceGenerator.java:1343)
>> [java] ... 33 more
>> [java] Caused by: org.xml.sax.SAXParseException: undefined simple or
>> complex type 'testCompositeObject'
>> [java] at
>> com.sun.xml.xsom.impl.parser.**ParserContext$1.reportError(**
>> ParserContext.java:180)
>> [java] ... 23 more
>>
>>
>> I should add though, if I just get the object like :
>>
>> @GET
>> @Path("setTest2")
>> @Produces("application/xml")
>> public TestCompositeObject getTest2()
>> {
>> return(new TestCompositeObject());
>> }
>>
>> It does return XML as a string like I expect it to.
>>
>>
>>
>> On Thu, May 10, 2012 at 7:15 PM, Sergey Beryozkin<[email protected]**
>> >wrote:
>>
>> Hi
>>>
>>> On 10/05/12 04:37, Ted wrote:
>>>
>>> thanks for the answer to my previous method Id problem, adding
>>>> addResourceAndMethodIds worked great.
>>>>
>>>> I have a new problem now, I'm trying to use the JAXB to automatically
>>>> convert parameters and response types to and from java/xml. The method
>>>> parameter seems to be dissappearing, or I'm missing an annotation or
>>>> something. All the examples I've seen and documentation seems to show
>>>> that
>>>> it should work...
>>>>
>>>> My service has the following :
>>>>
>>>> @XmlRootElement
>>>> public static class TestCompositeObject
>>>> {
>>>> public int id = 23;
>>>> public String name = "asdf";
>>>> }
>>>>
>>>> @PUT
>>>> @Path("setTest3")
>>>> @Produces("application/xml")
>>>> @Consumes("application/xml")
>>>> public TestCompositeObject setTest3(TestCompositeObject transfer)
>>>> {
>>>> logger.info(transfer);
>>>> return(transfer);
>>>> }
>>>>
>>>> The wadl generated looks a little off, it's missing the params :
>>>>
>>>> <resource path="/setTest3">
>>>> <method name="PUT" id="setTest3">
>>>> <request>
>>>> <representation mediaType="application/xml" />
>>>> </request>
>>>> <response>
>>>> <representation mediaType="application/xml" />
>>>> </response>
>>>> </method>
>>>> </resource>
>>>>
>>>> As a result when I generate the stubs from the wadl, it comes out not
>>>> quite
>>>> right :
>>>>
>>>> @PUT
>>>> @Consumes("application/xml")
>>>> @Produces("application/xml")
>>>> @Path("/setTest3")
>>>> Response setTest3();
>>>>
>>>> There's no method parameter, and I'm not quite sure if Response should
>>>> be
>>>> the return type of if it should have been mapped back to
>>>> TestCompositeObject.
>>>>
>>>> I can't seem to find any documentation on any annotations or any
>>>> configuration to sort this out.
>>>>
>>>>
>>>> The explanation is that TestCompositeObject has no any namespace bound
>>> to
>>> it, please add a namespace attribute to XMlRootElement and you should get
>>> the grammar and links properly generated
>>>
>>> HTH
>>> Sergey
>>>
>>>
>>> Anyone have any ideas?
>>>
>>>>
>>>>
>>>
>>> --
>>> Sergey Beryozkin
>>>
>>> Talend Community Coders
>>> http://coders.talend.com/
>>>
>>> Blog: http://sberyozkin.blogspot.com
>>>
>>>
>>
>>
>>
>
> --
> Sergey Beryozkin
>
> Talend Community Coders
> http://coders.talend.com/
>
> Blog: http://sberyozkin.blogspot.com
>
--
Ted.