[ https://issues.apache.org/jira/browse/CXF-6307?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14502731#comment-14502731 ]
Sergey Beryozkin edited comment on CXF-6307 at 4/20/15 12:50 PM: ----------------------------------------------------------------- Thank you for this effort. I've commented earlier (see my previous comment) and explained why IMHO this test needs to be challenged. Please follow that procedure first (send a request to an Oracle test lead to challenge this test based on my comments). Copy and paste the text from https://issues.apache.org/jira/browse/CXF-6307?focusedCommentId=14394579&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-14394579 I will do the refactoring if the challenge fails - it is not a matter of principle for me. But I think that it is important to assert that a runtime should be able to control the internals of its implementation. Once again: the spec does not require that a default provider uses a *static* Produces and hence using a dynamic selection should also be possible. Please work on a challenge and I'll do the work on it if the challenge fails Thanks was (Author: sergey_beryozkin): Thank you for this effort. I've commented earlier (see my previous comment) and explained why IMHO this test needs to be challenged. Please follow that procedure first (send a request to an Oracle test lead to challenge this test based on my comments). I will do the refactoring if the challenge fails - it is not a matter of principle for me. But I think that it is important to assert that a runtime should be able to control the internals of its implementation. Once again: the spec does not require that a default provider uses a *static* Produces and hence using a dynamic selection should also be possible. Please work on a challenge and I'll do the work on it if the challenge fails Thanks > Wrong select the message body reader > ------------------------------------ > > Key: CXF-6307 > URL: https://issues.apache.org/jira/browse/CXF-6307 > Project: CXF > Issue Type: Bug > Components: JAX-RS > Affects Versions: 3.0.3 > Environment: Windows > Reporter: Neal Hu > Fix For: 3.0.5 > > > This is a CTS testcase, the resource class is like this: > @POST > @Path("boolean") > public Boolean postBoolean(Boolean bool) { > if(bool){ > throw new WebApplicationException(Status.NOT_ACCEPTABLE); > } > return false; > } > The application provided provider is like this: > public class MyReader implements MessageBodyReader<Boolean> { > @Override > public boolean isReadable(Class<?> type, Type type1, Annotation[] antns, > MediaType mt) { > return type== Boolean.class; > } > @Override > public Object readFrom(Class<Object > type, > Type type1, > Annotation[] antns, > MediaType mt, MultivaluedMap<String, String> mm, > InputStream in) throws IOException, > WebApplicationException { > return Boolean.valueOf("true"); > } > } > The request > Content-Type:text/plain > Accept:text/plain > Method:POST > Body:false > According to jsr339 section 4.2.4 Standard Entity Providers > java.lang.Boolean, java.lang.Character, java.lang.Number Only for text/plain. > Corresponding primitive types supported via boxing/unboxing conversion. > An implementation MUST support application-provided entity providers and MUST > use those in preference to its own pre-packaged providers when either could > handle the same request. More precisely, step 4 in Section 4.2.1 and step 5 > in Section 4.2.2 MUST prefer application-provided over pre-packaged entity > providers. > 4.2.1 Message Body Reader > 3. Select the set of MessageBodyReader classes that support the media type of > the request, see Section > 4.2.3. > 4. Iterate through the selected MessageBodyReader classes and, utilizing the > isReadable method of > each, choose a MessageBodyReader provider that supports the desired Java type. > It says the entity providers should be sorted by media type firstly then(the > media type is the same) on Section 4.2.1 and step 5 in Section 4.2.2 MUST > prefer application-provided over pre-packaged entity providers. So > org.apache.cxf.jaxrs.provider.PrimitiveTextProvider should be selected as its > media type MUST be text/plain and the application provider's media type is > */*.(x/y>x/*>*/*) > So at this point the CTS expected response code is 200 instead of 406, the > application provided provider should not be chosen. -- This message was sent by Atlassian JIRA (v6.3.4#6332)