cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin (JIRA)" <>
Subject [jira] [Resolved] (CXF-6179) Jackson JSON parsing Incompatible with the Transform Feature
Date Mon, 29 Dec 2014 10:42:13 GMT


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:
>             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;
> import;
> import java.lang.annotation.Annotation;
> import java.lang.reflect.Type;
> import;
> import;
> import;
> import;
> import;
> 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

View raw message