Search code examples
javaspringannotationsrestlet

Restlet with @RequestMapping annotation does not work


I have some ServerResources in my application which are identified by the @Service(name) annotation. The methods are annotated with the @Get and @Post restlet annotations.

Everything worked fine until recently I wanted to add another ServerResource which has to serve a URL pattern with different parameters and request methods, thus I tried to use @RequestMapping annotation on the methods like:

@Service
public class MyResource extends ServerResource {
    @RequestMapping(value="/pathToMyResource/{parameter1}", method=RequestMethod.GET)
    public Representation getResponseForGetRequest(Representation entity) {
      ...
    }

//and for the other method:

    @RequestMapping(value="/pathToMyResource/{parameter1}/{parameter2}", method=RequestMethod.POST)
    public Representation getResponseForPostRequest(Representation entity) {
      ...
    }

    ...
}

However my resource is not properly registered with org.restlet.ext.spring.SpringBeanRouter as it is not found when this URL is requested. The only way I figured out multiple paths working for one resource is via XML configuration:

<bean name="/pathToMyResource/{parameter1}" 
        id="myGetResource" 
        class="com.mycompany.resource.MyResource" 
        autowire="byName" scope="prototype">
</bean>

<bean name="/pathToMyResource/{parameter1}/{parameter2}" 
        id="myPostResource" 
        class="com.mycompany.resource.MyResource" 
        autowire="byName" scope="prototype">
</bean>

and using Restlet annotation for methods:

public class MyResource extends ServerResource {
    @Get
    public Representation getResponseForGetRequest(Representation entity) {
      ...
    }

//and for the other method:

    @Post
    public Representation getResponseForPostRequest(Representation entity) {
      ...
    }

    ...
}

Do you know how the @RequestMapping annotation works with Restlet? I would like to avoid XML configuration completely and trying to find a way to get it working with annotations...

As I mentioned I have no problem with resources mapped only to one path like:

@Service("/pathToMyResource/{parameter1}")
public class MyResource extends ServerResource {
  ...
}

This is working fine... only multiple paths mapping causes problems.

Thanks for any help!


Solution

  • from what I see, we don't support annotations taken from Spring framework.

    If you want to remove any xml configuration, you can follow two ways: