Sergey Beryozkin created CXF-4701:
-------------------------------------

             Summary: MultipartProvider should be able to let InputStream be 
handled by default providers
                 Key: CXF-4701
                 URL: https://issues.apache.org/jira/browse/CXF-4701
             Project: CXF
          Issue Type: Improvement
          Components: JAX-RS
            Reporter: Sergey Beryozkin
            Assignee: Sergey Beryozkin


As it happens, a rather controversial decision has been made at the spec level 
mandating that the primitive or well-known types are to be 'offered' to default 
providers first, with the following justification "Consider Jackson JSON 
provider returning 'true' in its isReadable method for all the types - this 
will cause the runtime select Jackson - and Jackson will fail in its readFrom() 
because it actually does not know how to work with base InputStream".

Now also consider the recently reported issue:

{code:java}
@POST
@Consumes("multipart/mixed")
public void post(InputStream is) {}

{code}

The user actually does not want MultipartProvider to handle it and needs to 
work with the multipart stream directly.

So the spec decision will help in this case - unfortunately it will break the 
expectations of other users that this InputStream will actually point to a root 
part (default) or to more specific part as in

{code:java}
@POST
@Consumes("multipart/mixed")
public void post(@Multipart("mypart") InputStream is) {}

{code}
 
where InputStream will be expected to point to a specific part identified as 
"mypart" - clearly having the runtime letting the default InputStream provider 
handle it which will simply return InputStream reference back will be wrong in 
this case.

Thus, a property which can be used to regulate the ambiguous cases to do with 
treating InputStream needs to be introduced.

The initial property name is "defaultProviders.for.simpleTypes".

Setting this contextual property to true will help the user to get the original 
stream without having to explicitly configure the providers.







--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to