[ 
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)

Reply via email to