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 2014/12/29 11:42:13 UTC
[jira] [Resolved] (CXF-6179) Jackson JSON parsing Incompatible with
the Transform Feature
[ https://issues.apache.org/jira/browse/CXF-6179?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Sergey Beryozkin resolved CXF-6179.
-----------------------------------
Resolution: Won't Fix
Assignee: Sergey Beryozkin
Using TransformFeature implies that message body readers can work with custom XMLStreamReader
> Jackson JSON parsing Incompatible with the Transform Feature
> ------------------------------------------------------------
>
> Key: CXF-6179
> URL: https://issues.apache.org/jira/browse/CXF-6179
> Project: CXF
> Issue Type: Bug
> Components: JAX-RS
> Affects Versions: 3.0.3
> Environment: CXF 3.0.3 and Jackson 2.4.4
> Reporter: Chris Marshall
> Assignee: Sergey Beryozkin
>
> Short version of the problem:
> Jackson (2.4.4) when used to parse inbound JSON messages is incompatible with the transform feature (CXF 3.0.3). The transform feature (org.apache.cxf.feature.StaxTransformFeature) consumes the InputStream that jackson expects to read with the JSON content.
> Longer version of the problem:
> I am currently building a service that is to be used by parterners that will be using various different tools, for example PHP and Windows .NET. As a consequence I would like to create a service that support SOAP, Rest/XML and Rest/JSON. The Rest versions should support messages both with and without namespaces. At this point I have working SOAP, Rest/JSON and Rest/XML with namespaces. In order to get Rest/XML without namespaces to work I added the use of the transform feature and it behaves as desired with XML. However as soon as the transform feature is enabled the JSON parsing quits working. Digging into what is going on, the point at which Jackson tries to read the InputStream there are 0 available bytes when the transform feature is enabled.
> In order to diagnose the issue I overrode the readFrom method in com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider as follows:
> package com.a100sys.affiliateportal.impl;
> import java.io.IOException;
> import java.io.InputStream;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.Type;
> import javax.ws.rs.Consumes;
> import javax.ws.rs.Produces;
> import javax.ws.rs.core.MediaType;
> import javax.ws.rs.core.MultivaluedMap;
> import javax.ws.rs.ext.Provider;
> import com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider;
> @Provider
> @Consumes(MediaType.WILDCARD) // NOTE: required to support "non-standard" JSON variants
> @Produces(MediaType.WILDCARD)
> public class JsonTestProvider extends JacksonJaxbJsonProvider {
> @Override
> public Object readFrom(Class<Object> arg0, Type arg1, Annotation[] arg2,
> MediaType arg3, MultivaluedMap<String, String> arg4,
> InputStream arg5) throws IOException {
> int availableBytes = arg5.available();
> System.out.println("Available bytes " + availableBytes);
> Object readObject = super.readFrom(arg0, arg1, arg2, arg3, arg4, arg5);
> return readObject;
> }
>
> }
> In my test case without the transform feature enabled there are a nice healthy 731 bytes available and when the transform feature is enable there are 0 available bytes.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)