[ 
https://issues.apache.org/jira/browse/CXF-7501?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16225698#comment-16225698
 ] 

Sergey Beryozkin commented on CXF-7501:
---------------------------------------

Sorry, I did not really want to position myself here as someone in the know 
:-), but indeed, I spent a lot of time arguing for @Context be still supported, 
though I feel like it will be much more difficult keeping it around in the 
future (major) JAX-RS versions. Thanks for the updating the docs. Perhaps this 
future work for supporting the Inject everywhere would be addressed at a 
different level, but looks like your idea of using the Bus extensions is very 
good, so we might want just to update this interface...

By the way, re the client vs server factories. FYI, 
FeatureContext.getConfigurable().getRuntimeScope() tells whether it's a client 
or server based configurable context. Given this, should we have it called 
ConfigurableFactory, similarly to JAX-RS 'Configurable' which is neutral ? If 
you prefer to keep it as ServerConfigurableFactory then I'm fine with it given 
we've just doc-ed the interface might change in the future :-) 


 

> Cannot inject field in ContainerRequestFilter
> ---------------------------------------------
>
>                 Key: CXF-7501
>                 URL: https://issues.apache.org/jira/browse/CXF-7501
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.1.10, 3.2.0
>         Environment: Linux Mint 64 bit, TomEE Plus 7.0.3, JavaEE 7 
> application using MVC specification and reference implementation(Libs 
> Attached)
>            Reporter: Jeyvison Nascimento
>            Assignee: Andriy Redko
>              Labels: cdi
>             Fix For: 3.1.14, 3.2.1
>
>         Attachments: javax-mvc.jar, ozark.jar
>
>
> Hey folks.
> We found a weird behavior while running MVC specification(JSR 371) on TomEE 
> witch CXF. We have a *ContainerRequestFilter* defined called 
> *JaxRsContextFilter* 
> {code:java}
> @PreMatching
> @Priority(0)
> public class JaxRsContextFilter implements ContainerRequestFilter {
>     @Inject
>     private JaxRsContextProducer jaxRsContextProducer;
>     @Context
>     private Configuration configuration;
>     @Context
>     private HttpServletRequest request;
>     @Context
>     private HttpServletResponse response;
>     public JaxRsContextFilter() {
>     }
>     public void filter(ContainerRequestContext requestContext) throws 
> IOException {
>         this.jaxRsContextProducer.populate(this.configuration, this.request, 
> this.response);
>     }
> }
> {code}
> You can see that we have a JaxRsContextProducer annotated to be injected as a 
> field in our object but when JAXRSUtils is called to run the the container 
> filters it injects the fields annotated as *@Context* , not the fields 
> annotated with *@Inject*.
> {code:java}
>  for (ProviderInfo<ContainerRequestFilter> filter : containerFilters) {
>                 try {
>                     InjectionUtils.injectContexts(filter.getProvider(), 
> filter, m);
>                     filter.getProvider().filter(context);
>                 } catch (IOException ex) {
>                     throw ExceptionUtils.toInternalServerErrorException(ex, 
> null); 
>                 }
> {code}
> It causes our filter(*JaxRsContextFilter*) to throw a NullPointerException 
> when filtering the request because it uses the producer to perform some 
> actions in  this operation.
> I believe this field should be injected as well, not only the *@Context* 
> fields.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to