users@jax-rs-spec.java.net

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

From: Sergey Beryozkin <sberyozkin_at_talend.com>
Date: Tue, 9 Feb 2016 14:46:26 +0000

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

Sergey
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:
>> All,
>>
>> 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 <bburke_at_redhat.com> 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 [mailto:bburke_at_redhat.com]
>>>> *Sent:*Donnerstag, 4. Februar 2016 20:31
>>>> *To:*jsr370-experts_at_jax-rs-spec.java.net
>>>> *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:
>>>>
>>>> Experts,
>>>> 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?
>>>> -Markus
>>>>
>>>>
>>>>
>>>> --
>>>> Bill Burke
>>>> JBoss, a division of Red Hat
>>>> http://bill.burkecentral.com <http://bill.burkecentral.com/>
>>>
>>> --
>>> Bill Burke
>>> JBoss, a division of Red Hat
>>> http://bill.burkecentral.com
>>
>
> --
> Bill Burke
> JBoss, a division of Red Hat
> http://bill.burkecentral.com