jsr370-experts@jax-rs-spec.java.net

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

From: Santiago Pericasgeertsen <santiago.pericasgeertsen_at_oracle.com>
Date: Tue, 9 Feb 2016 10:08:46 -0500

> On Feb 9, 2016, at 9:42 AM, Bill Burke <bburke_at_redhat.com> wrote:
>
> You can't proxy a primitive or String and generally don't want to proxy a Class either. UriInfo is an interface.

 Right, this complicates things too much. UriInfo is the way to go.

— Santiago

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