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

Jeff Moroski commented on CXF-6997:
-----------------------------------

No I'm not calling it myself, it's ultimately being called by 
{{AbstractHTTPServlet.doGet()}} as part of a REST API call with that value 
specified as an Accept header.

{noformat}
java.lang.IllegalArgumentException: Invalid media type string: 
text/html,application/xhtml+xml,image/webp,application/xml;q=0.9,*/*;q=0.8
        at 
org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.internalValueOf(MediaTypeHeaderProvider.java:90)
        at 
org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.valueOf(MediaTypeHeaderProvider.java:65)
        at 
org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.fromString(MediaTypeHeaderProvider.java:55)
        at 
org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.fromString(MediaTypeHeaderProvider.java:42)
        at javax.ws.rs.core.MediaType.valueOf(MediaType.java:179)
        at 
com.vmware.vcloud.api.rest.providers.CustomResponseHandler.filter(CustomResponseHandler.java:81)
        at 
org.apache.cxf.jaxrs.utils.JAXRSUtils.runContainerResponseFilters(JAXRSUtils.java:1675)
        at 
org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.serializeMessage(JAXRSOutInterceptor.java:172)
        at 
org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.processResponse(JAXRSOutInterceptor.java:120)
        at 
org.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor.handleMessage(JAXRSOutInterceptor.java:83)
        at 
org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:308)
        at 
org.apache.cxf.interceptor.OutgoingChainInterceptor.handleMessage(OutgoingChainInterceptor.java:83)
        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:254)
        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:180)
        at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:298)
        at 
org.apache.cxf.transport.servlet.AbstractHTTPServlet.doGet(AbstractHTTPServlet.java:222)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
        at 
com.vmware.vcloud.api.rest.jaxrs.servlet.CxfServlet.service(CxfServlet.java:171)
        at 
com.vmware.vcloud.api.rest.jaxrs.servlet.JaxRsDispatcherServlet.doService(JaxRsDispatcherServlet.java:93)
        at 
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:951)
        at 
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:842)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
{noformat}

I'm not sure why you say this isn't expected to process multiple media types.  
This was a supported Accept header in 3.1.1, which we're currently upgrading 
from, and the MediaTypeHeaderProvider specifically splits the value on the 
comma char, which is the delimiter for multiple MediaTypes.

> Accept header doesn't correctly support multiple media ranges
> -------------------------------------------------------------
>
>                 Key: CXF-6997
>                 URL: https://issues.apache.org/jira/browse/CXF-6997
>             Project: CXF
>          Issue Type: Bug
>    Affects Versions: 3.1.6
>            Reporter: Jeff Moroski
>
> An Accept value of 
> {{application/*+xml,application/*+xml;version=25.0,application/*+xml;version=1.5}}
>  is valid according to [Section 5.3.2 of RFC 
> 7231|https://tools.ietf.org/html/rfc7231#section-5.3.2], but when a media 
> range and no corresponding accept params exists anywhere but the end of the 
> value, the MediaTypeHeaderProvider fails to process the value correctly:
> {noformat}
> Server stack trace: java.lang.IllegalArgumentException: Invalid media type 
> string: 
> application/*+xml,application/*+xml;version=25.0,application/*+xml;version=1.5
> at 
> org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.internalValueOf(MediaTypeHeaderProvider.java:90)
> at 
> org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.valueOf(MediaTypeHeaderProvider.java:65)
> at 
> org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.fromString(MediaTypeHeaderProvider.java:55)
> at 
> org.apache.cxf.jaxrs.impl.MediaTypeHeaderProvider.fromString(MediaTypeHeaderProvider.java:42)
> at javax.ws.rs.core.MediaType.valueOf(MediaType.java:179)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to