Sergey,
yeah I think that would improve things a lot, thanks for the tips.
On Mon, Apr 28, 2008 at 2:33 PM, Sergey Beryozkin
<[EMAIL PROTECTED]> wrote:
> Hi Brad
>
> You probably should be able to drop
> > @Path(value="", limited=true)
>
> altogether now.
>
> Also if you only deal with application/xml then you might want to hoist the
> Consume/Produce annotations to the top :
>
> @Path(value="/{user}/mail")
>
> @ConsumeMime("application/xml")
> @ProduceMime("application/xml")
> public class MailService {
>
> @GET
>
> public String listMail(@PathParam("user")String user){
> ...
> }
>
> @Path(value="{messageId}")
> @GET
>
> public String readMessage(@PathParam("messageId")String messageId){
> ...
> }
> }
>
> and then override them if necessary on methods which can support some other
> format.
>
> By the way, if you'd like to have a user param available to readMessage then
> you should be able to do :
>
> @Path(value="{messageId}")
> @GET
> public String readMessage(@PathParam("user")String user,
> @PathParam("messageId")String messageId){
> ...
> }
>
> Cheers, Sergey
>
>
>
>
> > Ok, fixed now. What I should have had was :
> >
> > @Path(value="/{user}/mail")
> > public class MailService {
> >
> > @Path(value="", limited=true)
> > @GET
> > @ConsumeMime("application/xml")
> > @ProduceMime("application/xml")
> > public String listMail(@PathParam("user")String user){
> > ...
> > }
> >
> > @Path(value="{messageId}")
> > @GET
> > @ConsumeMime("application/xml")
> > @ProduceMime("application/xml")
> > public String readMessage(@PathParam("messageId")String messageId){
> > ...
> > }
> > }
> >
> > Thanks for the pointer Sergey.
> >
> > On Mon, Apr 28, 2008 at 1:43 PM, Brad <[EMAIL PROTECTED]> wrote:
> >> Hi Sergey,
> >>
> >> I'm also trying to get this to work, so I was glad to see your email.
> >> I tried the annotations you suggested:
> >>
> >> @Path(value="/{user}/mail")
> >> public class MailService {
> >>
> >> @GET
> >> @ConsumeMime("application/xml")
> >> @ProduceMime("application/xml")
> >> public String listMail(@PathParam("user")String user){
> >> ...
> >> }
> >>
> >> @Path(value="{messageId}")
> >> @GET
> >> @ConsumeMime("application/xml")
> >> @ProduceMime("application/xml")
> >> public String readMessage(@PathParam("messageId")String
> messageId){
> >> ...
> >> }
> >> }
> >>
> >> I test it by going to http://localhost:8080/cxf/rest/test/user/mail.
> >> It always ignores listMail and instead does readMessage with a null
> >> messageId.
> >>
> >> If I comment out readMessage it will invoke listMail.
> >>
> >> Any tips?
> >>
> >> Thanks,
> >> Brad.
> >>
> >>
> >>
> >> On Mon, Apr 28, 2008 at 10:24 AM, Sergey Beryozkin
> >> <[EMAIL PROTECTED]> wrote:
> >> > Thanks...
> >> >
> >> > The problem is actually with these Path annotations :
> >> >
> >> >
> >> > >> @Path("/users/")
> >> > >> public class UserService {
> >> > >>
> >> > >> @Path("/users/{id}/")
> >> > >> public User getUser(@PathParam("id") String id) {
> >> > >> ... // load from db
> >> > >> }
> >> > >>
> >> > >> ...
> >> > >>
> >> > >> }
> >> >
> >> > it should be
> >> >
> >> >
> >> > @Path("/users/")
> >> > public class UserService {
> >> >
> >> > @Path("{id}")
> >> >
> >> > public User getUser(@PathParam("id") String id) {
> >> > ... // load from db
> >> > }
> >> >
> >> > }
> >> >
> >> > The Path annotations on the root resource class are 'inherited' and
> concatenated with the one on the resource method getUser()...
> >> >
> >> > For example to get a collection of users one can do
> >> >
> >> >
> >> > @Path("/users/")
> >> > public class UserService {
> >> >
> >> > @GET
> >> > public Users getUsers() {
> >> > ...
> >> > }
> >> >
> >> > @Path("{id}")
> >> >
> >> > public User getUser(@PathParam("id") String id) {
> >> > ... // load from db
> >> > }
> >> >
> >> > }
> >> >
> >> > Cheers, Sergey
> >> >
> >> >
> >> >
> >> > ----- Original Message -----
> >> > From: "Joshua Purcell" <[EMAIL PROTECTED]>
> >> > To: <[email protected]>
> >> > Sent: Monday, April 28, 2008 5:26 AM
> >> > Subject: Re: Question about JAX-RS Sub resources
> >> >
> >> >
> >> > >
> >> > > Your example is a little different from the sample JAX-RS code
> included with
> >> > > the CXF snapshot. This may work better for you:
> >> > > @Path("/userservice/")
> >> > > public class UserService {
> >> > > @Path("/users/{id}/")
> >> > > public User getUser(@PathParam("id") String id) {
> >> > > ... // load from db
> >> > > }
> >> > > }
> >> >
> >> > ----------------------------
> >> > IONA Technologies PLC (registered in Ireland)
> >> > Registered Number: 171387
> >> > Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
> Ireland
> >> >
> >>
>
> ----------------------------
> IONA Technologies PLC (registered in Ireland)
> Registered Number: 171387
> Registered Address: The IONA Building, Shelbourne Road, Dublin 4, Ireland
>