You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Jeyvison Nascimento (JIRA)" <ji...@apache.org> on 2017/09/12 17:29:00 UTC
[jira] [Created] (CXF-7501) Cannot inject field in
ContainerRequestFilter
Jeyvison Nascimento created CXF-7501:
----------------------------------------
Summary: 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
Environment: Linux Mint 64 bit, TomEE Plus 7.0.3, JavaEE 7 application using MVC specification and reference implementation
Reporter: Jeyvison Nascimento
Priority: Critical
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)