I'm creating a RESTful service for accessing data.
So I started writing that service, first I created a ReadOnlyResource
interface with the following code:
public interface ReadOnlyResource<E, K> {
Collection<E> getAll();
E getById(K id);
}
Where E is the returned type and K is the key element.
So if I'm implementing with <Integer, Integer>
I'll inject the key like t
@GET
@Path("/{id}")
@Override
public Integer getById(@PathParam("id") Integer id) {
return null;
}
But when my key is more complex, like this:
public class ComplexKey {
private String name;
private int value;
}
How can I inject this so I can use my interface?
Is there a way to inject both params and create the key with them?
EDIT: the solution of @QueryParam doesn't help because what I try to reach is going to /some name/some number and receive a ComplexKey instance which contains the some name and some number values from the url.
what I try to reach is going to /some name/some number and receive a ComplexKey instance which contains the some name and some number values from the url
Use a @BeanParam
public class ComplexKey {
@PathParam("name")
private String name;
@PathParam("value")
private int value;
// getters/setters
}
@Path("/{name}/{value}")
getById(@BeanParam ComplexKey key)