[jax-rs-spec users] Re: Request for comments: Injecting _at_XxxParam into entity providers

From: Markus Karg <>
Date: Sun, 14 Feb 2016 13:52:46 +0100

From the users view injecting matrix param is way simpler, but ok, it won't work, so I let go the idea.

Different question: How can a MBW access the properties set by an interceptor?

Sergey Beryozkin <> hat geschrieben:

I agree with Bill (as nearly always :-)).

what can be simpler to uriInfo.getMatrixParameters().get("a") ?

In fact I think supporting injecting parameters into per-request service beans is not very good because it ties a service implementation to
always being per-request. Depending on UriInfo is more flexible - the same service bean will work correctly in different contexts, when used as a singleton or per-request

On 09/02/16 14:42, Bill Burke wrote:
You can't proxy a primitive or String and generally don't want to proxy a Class either.  UriInfo is an interface.

On 2/9/2016 9:17 AM, Santiago Pericasgeertsen wrote:

 Doesn’t the injection of UriInfo require the same effort as that of XXXParam? That is, some way of proxying to bridge application and request scopes? 

 In any case, this will add some complexity to the implementations, so I generally agree with Bill that UriInfo should be sufficient (unless we can confirm that this is a very common use case, which is doubtful).

— Santiago

On Feb 5, 2016, at 4:44 PM, Bill Burke <> wrote:

Or, you could just inject and use UriInfo.  Simpler.

On 2/5/2016 11:55 AM, Markus KARG wrote:
As an alternative, we could grant MessageBodyWriter and resource classes static access to a shared property map (just like interceptors share a properties map). That way, a resource could get injected the @XxxParam instance, then put it into the map, and the MBW could look it up from there. That would be fine, too.
From: Bill Burke []
Sent: Donnerstag, 4. Februar 2016 20:31
Subject: Re: Request for comments: Injecting @XxxParam into entity providers
MBW, MBR, Interceptors, and Filters are all singletons. I have a ton of implementations of these classses that do initialization at boot time. @XXXParam annotations would require field injection which just would not work with singletons.

So -1 unless you can provide a @Singleton annotation.

On 2/4/2016 2:01 PM, Markus KARG wrote:
I'd like to discuss an idea with you. I don't actually propose to do this change in JAX-RS 2.1, but depending on the outcome of our discussion it might make sense to prepare our products for such an API change to be part of JAX-RS 2.2 or 3.0.
What I like you to comment on is that I really miss using @XxxParam in entity providers.
Example: Today I wrote a MessageBodyWrite which needs to know the value of a matrix param. I solved it by @Context UriParam and uses a rather lengthy chain of API calls to finally get it. How much smarter the solution would like if I just could use @MatrixParam instead!
So I really would love to get rid of the restriction that @XxxParam works with resource class only, but in fact would like to allow its use on entity providers also.
What do you think?

Bill Burke
JBoss, a division of Red Hat
Bill Burke
JBoss, a division of Red Hat
Bill Burke
JBoss, a division of Red Hat