You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Sergey Beryozkin (JIRA)" <ji...@apache.org> on 2012/12/13 18:08:12 UTC

[jira] [Created] (CXF-4701) MultipartProvider should be able to let InputStream be handled by default providers

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