Perhaps the JAXB slides (52-53) or Jersey slides (59-61) in this
presentation will help you:
http://www.slideshare.net/paulk_asert/xml-and-web-services-with-groovy-presentation
(The JAXB example has the 'build' dir in the classpath.
See the wsimport line. The Jersey one has all the Jersey jar files
in the classpath).
Another (RESTful) Jersey example:
/////////////////////////////////
package com.asert
import javax.xml.bind.annotation.*
import javax.ws.rs.*
import com.sun.jersey.api.container.httpserver.HttpServerFactory
import
groovy.xml.MarkupBuilder@XmlRootElement
@XmlAccessorType (XmlAccessType.FIELD)
final class Song {
@XmlElement String name
@XmlElement int duration
@XmlElement Artist artist
}
@XmlRootElement
@XmlAccessorType (XmlAccessType.FIELD)
final class Artist {
@XmlElement String name
}
class SongList {
static song(sn, d, an) { new Song(name:sn, duration:d, artist:new Artist(name:an)) }
static songs = [song("S1", 5, "A1"), song("S2", 8, "A2"), song("S3", 13, "A3")]
}
@Path ("/songs/{listId}")
class SongListResource {
@GET @Produces(["text/xml", "application/json", "application/atom"])
Song getList(@(protected)) {
SongList.songs[listId as int]
}
}
//<name>S2</name><duration>8</duration><artist><name>A2</name></artist>
@Path ("/songsxml/{listId}")
class SongXmlResource {
@GET @Produces("text/xml")
String getSong(@(protected)) {
def s = SongList.songs[listId as int]
def sw = new StringWriter()
new MarkupBuilder(sw).song{
name(s.name)
duration(s.duration)
artist{ name(s.artist.name) }
}
sw.toString()
}
}
def baseUri = "http://localhost:9998/"
println """
Starting HTTP server with Jersey...
App WADL available at ${baseUri}application.wadl
App available at ${baseUri}songs/listId
"""
HttpServerFactory.create(baseUri).start()
/////////////////////////////////
Cheers, Paul.
dynaMate wrote:
> Just want to clarify that, i'm not using GroovyWS library...I depend on JAXB
> library shipped wiht Java 1.6.
>
> My feeling is it is bug in Groovy...Only Groovy expert can help
> me...thanks..
>
>
> dynaMate wrote:
>> well, i get unable to resolve class XmlElement error or unable to resolve
>> class XmlAccessorType when i use the annotations you suggested...what is
>> the right value? I'm struck here...where can i lookup?
>>
>> thanks
>>
>>
>> SophosGuy wrote:
>>> Er @XmlElement or something like that
>>>
>>> On Sun, Feb 7, 2010 at 10:13 PM, Jackie Gleason
>>> <jackiegleason@(protected):
>>>
>>>> sorry look up
>>>>
>>>> @XmlAccessorType(XmlAccessType.NONE)
>>>>
>>>> There are three ways this can be set you need to set it to none and then
>>>> make sure you have @ element on all of the properties (or
>>>> getters/setters)
>>>> you have then JAXB should work, if you set it to anything else weird
>>>> things
>>>> can happen
>>>>
>>>> Hope this helps.
>>>>
>>>> Jackie
>>>>
>>>> On Sun, Feb 7, 2010 at 7:18 PM, dynaMate <pudur@(protected):
>>>>
>>>>> Thanks for prompt reply
>>>>> Well, i have imported all the classes i need or use directly in my
>>>>> groovy
>>>>> script in the groovy script. I do not know transtive dependant classes.
>>>>> The
>>>>> thing is it(groovyscript) has NOT complained on the statements
>>>>> involving
>>>>> direct java classes i have implemented or i've explicitly imported..
>>>>> I'm a newbie..i'm not sure how to use @elements? can you give an
>>>>> example..
>>>>>
>>>>>
>>>>> SophosGuy wrote:
>>>>>> Have you declared your classes manually? The default doesn't work so
>>>>> you
>>>>>> have to manually specify @elements
>>>>>>
>>>>>> Jackie
>>>>>>
>>>>>> On Sun, Feb 7, 2010 at 6:43 PM, dynaMate <pudur@(protected):
>>>>>>
>>>>>>> My environment is: Java 1.6 and Groovy 1.7.0, Jaxb library shipped
>>>>> with
>>>>>>> Java
>>>>>>> 1.6, no other 3rd party libarary.
>>>>>>> the command i use to compile and run are:
>>>>>>> groovyc -j UseDSL.java PayDSL.groovy -Jsource 1.6
>>>>>>> java -classpath
>>>>>>>
>>>>>>>
>>>>> %GROOVY_HOME%\embeddable\groovy-all-1.7.0.jar;paypal_platform_base.jar;paypal_platform_stubs.jar;.
>>>>>>> UseDSL
>>>>>>>
>>>>>>> I am getting the following exception and my guess is it is not able
>>>>> to
>>>>>>> find
>>>>>>> JAXB library or some class. Unfortunately the exception does not
>>>>> tell
>>>>> me
>>>>>>> which class it is not able to find in CP. How can i debug further
>>>>> and
>>>>>>> make
>>>>>>> the missing JDK/JAXB classes in the classpath? Is it necessary? Or
>>>>> what
>>>>>>> is
>>>>>>> the right thing to do? I have uploaded the entire source in a zip
>>>>> file.
>>>>>>> INFO: The requests and reponses from PayPal webservices will be
>>>>> logged
>>>>> to
>>>>>>> the file: paypal_sdk.log
>>>>>>> Exception in thread "main"
groovy.lang.MissingPropertyException: No
>>>>> such
>>>>>>> property: result for class: Script1
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap (
ScriptBytecodeAdapter.java:49)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>
org.codehaus.groovy.runtime.callsite.PogoGetPropertySite.getProperty (
PogoGetPropertySite.java:49)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>
org.codehaus.groovy.runtime.callsite.AbstractCallSite.callGroovyObjectGetProperty (
AbstractCallSite.java:241)
>>>>>>> at Script1$_run_closure1.doCall(Script1.groovy:4)
>>>>>>> at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>>>> Method)
>>>>>>> at
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown
>>>>> Source)
>>>>>>> at
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown
>>>>> Source)
>>>>>>> at
java.lang.reflect.Method.invoke(Unknown Source)
>>>>>>> at
>>>>>>>
>>>>>
org.codehaus.groovy.reflection.CachedMethod.invoke (
CachedMethod.java:88)
>>>>>>> at
groovy.lang.MetaMethod.doMethodInvoke (
MetaMethod.java:233)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod (
ClosureMetaClass.java:272)
>>>>>>> at
>>>>>
groovy.lang.MetaClassImpl.invokeMethod (
MetaClassImpl.java:886)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>
org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call (
PogoMetaClassSite.java:39)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>
org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall (
CallSiteArray.java:40)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (
AbstractCallSite.java:117)
>>>>>>> at
>>>>>>>
>>>>>>>
>>>>>
org.codehaus.groovy.runtime.callsite.AbstractCallSite.call (
AbstractCallSite.java:121)
>>>>>>> at PayDSL.process(PayDSL.groovy:121)
>>>>>>> at UseDSL.main(UseDSL.java:9)
>>>>>>>
>>>>>>> This is a time critical project, I appreciate your help greatly..
>>>>>>> -Regards http://old.nabble.com/file/p27493620/labrats.zip
>>>>> labrats.zip
>>>>>>> --
>>>>>>> View this message in context:
>>>>>>>
>>>>> http://old.nabble.com/MissingProperty-Exception-due-to-JAXB--tp27493620p27493620.html
>>>>>>> Sent from the groovy - user mailing list archive at Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe from this list, please visit:
>>>>>>>
>>>>>>> http://xircles.codehaus.org/manage_email
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://old.nabble.com/MissingProperty-Exception-due-to-JAXB--tp27493620p27493833.html
>>>>> Sent from the groovy - user mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe from this list, please visit:
>>>>>
>>>>> http://xircles.codehaus.org/manage_email
>>>>>
>>>>>
>>>>>
>>>
>>
>
---------------------------------------------------------------------
To unsubscribe from this list, please visit:
http://xircles.codehaus.org/manage_email