Fuse Services Framework provides an extension to the standard JAX-WS injection mechanism that allows developers
to replace a sequence of injection annotations with a single annotation. The single annotation is place
on a bean containing fields for the data that is extracted using the annotation. For example, if a resource
method is expecting a request URI to include three query parameters called id
,
type
, and size
, it could use a single
@QueryParam
annotation to inject all of the parameters into a bean with
corresponding fields.
This extension does not support all of the injection parameters. It only supports the following ones:
@PathParam
@QueryParam
@MatrixParam
@FormParam
To indicate that an annotation is going to use serial injection into a bean, you need to do two things:
Specify the annotation's parameter as an empty string. For example
@PathParam("")
specifies that a sequence of URI template variables are to be serialized into a bean.Ensure that the annotated parameter is a bean with fields that match the values being injected.
Example 3.11 shows an example of injecting a number of Query parameters into a bean. The
resource method expect the request URI to include two query parameters: type
and
id
. Their values are injected into the corresponding fields of the
Monster
bean.
Example 3.11. Injecting query parameters into a bean
import javax.ws.rs.QueryParam; import javax.ws.rs.PathParam; import javax.ws.rs.POST; import javax.ws.rs.Path; ... @Path("/monstersforhire/") public class MonsterService { ... @POST public void updateMonster(@QueryParam("") Monster bean) { ... } ... } public class Monster { String type; String id; ... }