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.




Reply via email to