[
https://issues.apache.org/jira/browse/CXF-7493?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16155274#comment-16155274
]
John D. Ament commented on CXF-7493:
------------------------------------
Ok, I did some more digging.
The issue occurs when you have a CDI bean as your rest controller/rest resource
using Weld as your CDI implementation (problem does not replicate with
OpenWebBeans). In the {{OperationResourceInfo}} the
{{actualInGenericParamTypes}} field has {{List.class}} instead of the proper
{{ParameterizedType List<Integer>}}.
So to replicate this, you'd need to add a test to the CDI test suite.
> Cannot define a List<Double> or List<Long> as a query param
> -----------------------------------------------------------
>
> Key: CXF-7493
> URL: https://issues.apache.org/jira/browse/CXF-7493
> Project: CXF
> Issue Type: Bug
> Affects Versions: 3.1.12
> Reporter: John D. Ament
>
> When defining a resource method like:
> {code}
> public JsonObject verifyInjectedCustomIntegerArray(@QueryParam("value")
> List<Long> array)
> public JsonObject verifyInjectedCustomDoubleArray(@QueryParam("value")
> List<Double> array)
> {code}
> The following stacktrace is shown when parsing the body:
> {code}
> java.lang.NullPointerException
> at
> org.apache.cxf.jaxrs.utils.InjectionUtils.injectIntoCollectionOrArray(InjectionUtils.java:904)
> at
> org.apache.cxf.jaxrs.utils.InjectionUtils.createParameterObject(InjectionUtils.java:1003)
> at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.readQueryString(JAXRSUtils.java:1196)
> at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.createHttpParameterValue(JAXRSUtils.java:872)
> at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameter(JAXRSUtils.java:842)
> at
> org.apache.cxf.jaxrs.utils.JAXRSUtils.processParameters(JAXRSUtils.java:793)
> at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.processRequest(JAXRSInInterceptor.java:212)
> at
> org.apache.cxf.jaxrs.interceptor.JAXRSInInterceptor.handleMessage(JAXRSInInterceptor.java:77)
> at
> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
> at
> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
> at
> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:263)
> at
> org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:234)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:208)
> at
> org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:160)
> at
> org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:189)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:299)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:223)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
> at
> org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:274)
> at
> io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85)
> at
> io.undertow.servlet.handlers.FilterHandler$FilterChainImpl.doFilter(FilterHandler.java:129)
> {code}
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)