cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sergey Beryozkin <sberyoz...@gmail.com>
Subject Re: Configuration and Constructor Context Injection problem when using CXF
Date Mon, 25 Aug 2014 13:39:28 GMT
Hi

CXF-5899 has also been fixed, note the injection of Configuration was 
injected earlier but only if it was created as part of DynamicFeature 
processing.
Now it will be injected with or without DynamicFeature.

I have to admit that the use of Configuration alongside of Application 
opens some questions. IMHO Configuration is a probably the most complex
part of JAX-RS 2.0, and I guess it's a side-effect of trying to make 
this interface as reusable and as generic as possible, which is 
difficult to do in general.

For example, right now, the injected Configuration would only delegate 
to Application to check the properties. It will delegate to the 
configuration which came from DynamicFeature processing for all other 
methods.

That can be tuned as needed going forward, after users start working 
more with Configuration and having various clarifications pushed into 
Configuration API docs

Cheers, Sergey

On 21/08/14 16:55, Sergey Beryozkin wrote:
> Hi,
>
> Please see comments below.
> On 21/08/14 13:26, jordan wrote:
>> Hi Sergey,
>>
>> Great thanks for your quickly response! :)
>>
>> I see you opened two defects yesterday:
>>
>> 1. Application context injection:
>> https://issues.apache.org/jira/browse/CXF-5964
>> 2. Configuration injection
>> https://issues.apache.org/jira/browse/CXF-5899
>>
>> Sorry, I may not see any spec says "contexts can be injected into
>> Application". But I see that I can inject @Context resource into
>> Singleton
>> Constructor in this link:
>>
>> https://jersey.java.net/documentation/latest/jaxrs-resources.html
>>
>>
>> Example 3.25. Injection of proxies into singleton
>>
>> @Path("resource")
>> @Singleton
>> public static class MySingletonResource {
>>      @Context
>>      Request request; // this is ok: the proxy of Request will be
>> injected
>> into this singleton
>>
>>      public MySingletonResource(@Context SecurityContext
>> securityContext) {
>>          // this is ok too: the proxy of SecurityContext will be injected
>>      }
>>
>> If I use this Constructor for Singleton, I really don't know how to
>> init it
>> in Application getSingletons() method, and how to pass any @Context to
>> getSingletons() in Application class (because any @Context injection in
>> Application is null)?. :)
>>
> I pasted a fragment from a 9.2 section of the spec which says that
> "contexts are available to Application sub-classes" too, hence the
> injection directly into Application has to be supported.
> In fact, CXF did support it already, but it was done too late, so your
> use case was not directly supported.
>
> Right now, you can have either of the following done:
>
> - Have contexts injected into Application as above but pass your custom
> Application to singleton constructors or have @Context Application
> injected into singletons and then when needed do
> myApplication.getUriInfo(), etc;
> - Do not do anything in the Application at all, and have field contexts
> in singleton service classes, do not pass anything to their
> constructors, and CXF will inject the contexts
>
> That said, I've just fixed CXF-5964, and in 3.0.2/3.1.0 your original
> code will work
>
>>
>> I see you opened these two defects, can I think these are two confirmed
>> problems which will be fixed in future?
>>
>> And btw, if yes, do you know when these will be fixed and which
>> version will
>> include these fixes?
>>
> CXF-5964 fix will be in 3.0.2/3.1.0 snapshots shortly.
>
> CXF-5899 fix will be there too soon enough
>
> Thanks, Sergey
>>
>> Thanks a lot for your help & good day! :)
>>
>>
>>
>> --
>> View this message in context:
>> http://cxf.547215.n5.nabble.com/Configuration-and-Constructor-Context-Injection-problem-when-using-CXF-tp5747973p5748033.html
>>
>> Sent from the cxf-dev mailing list archive at Nabble.com.
>>
>
>


Mime
View raw message