Repository: cxf Updated Branches: refs/heads/master da66ca88d -> 61cad675f
Updating JSONProvider to pass the custom encoiding to the reader Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/61cad675 Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/61cad675 Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/61cad675 Branch: refs/heads/master Commit: 61cad675f562b1a5f28d62c7929521e18e0153ee Parents: da66ca8 Author: Sergey Beryozkin <[email protected]> Authored: Wed Apr 2 10:57:21 2014 +0100 Committer: Sergey Beryozkin <[email protected]> Committed: Wed Apr 2 10:57:21 2014 +0100 ---------------------------------------------------------------------- .../cxf/jaxrs/provider/json/JSONProvider.java | 18 ++++++++++-------- .../cxf/jaxrs/provider/json/utils/JSONUtils.java | 15 ++++++++------- 2 files changed, 18 insertions(+), 15 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/61cad675/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java ---------------------------------------------------------------------- diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java index 02b167d..24f9182 100644 --- a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java +++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/JSONProvider.java @@ -214,11 +214,12 @@ public class JSONProvider<T> extends AbstractJAXBProvider<T> { } XMLStreamReader reader = null; + String enc = HttpUtils.getEncoding(mt, "UTF-8"); try { InputStream realStream = getInputStream(type, genericType, is); if (Document.class.isAssignableFrom(type)) { W3CDOMStreamWriter writer = new W3CDOMStreamWriter(); - reader = createReader(type, realStream, false); + reader = createReader(type, realStream, false, enc); copyReaderToWriter(reader, writer); return type.cast(writer.getDocument()); } @@ -227,7 +228,7 @@ public class JSONProvider<T> extends AbstractJAXBProvider<T> { Class<?> theType = getActualType(theGenericType, genericType, anns); Unmarshaller unmarshaller = createUnmarshaller(theType, genericType, isCollection); - XMLStreamReader xsr = createReader(type, realStream, isCollection); + XMLStreamReader xsr = createReader(type, realStream, isCollection, enc); Object response = null; if (JAXBElement.class.isAssignableFrom(type) @@ -272,23 +273,24 @@ public class JSONProvider<T> extends AbstractJAXBProvider<T> { return null; } - protected XMLStreamReader createReader(Class<?> type, InputStream is, boolean isCollection) + protected XMLStreamReader createReader(Class<?> type, InputStream is, boolean isCollection, String enc) throws Exception { - XMLStreamReader reader = createReader(type, is); + XMLStreamReader reader = createReader(type, is, enc); return isCollection ? new JAXBCollectionWrapperReader(reader) : reader; } - protected XMLStreamReader createReader(Class<?> type, InputStream is) + protected XMLStreamReader createReader(Class<?> type, InputStream is, String enc) throws Exception { XMLStreamReader reader = null; if (BADGER_FISH_CONVENTION.equals(convention)) { - reader = JSONUtils.createBadgerFishReader(is); + reader = JSONUtils.createBadgerFishReader(is, enc); } else { reader = JSONUtils.createStreamReader(is, readXsiType, namespaceMap, primitiveArrayKeys, - getDepthProperties()); + getDepthProperties(), + enc); } reader = createTransformReaderIfNeeded(reader, is); @@ -508,7 +510,7 @@ public class JSONProvider<T> extends AbstractJAXBProvider<T> { Type genericType, String enc, OutputStream os, boolean isCollection) throws Exception { if (BADGER_FISH_CONVENTION.equals(convention)) { - return JSONUtils.createBadgerFishWriter(os); + return JSONUtils.createBadgerFishWriter(os, enc); } boolean dropElementsInXmlStreamProp = getBooleanJsonProperty(DROP_ELEMENT_IN_XML_PROPERTY, dropElementsInXmlStream); http://git-wip-us.apache.org/repos/asf/cxf/blob/61cad675/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java ---------------------------------------------------------------------- diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java index 348cd84..fa68e95 100644 --- a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java +++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/json/utils/JSONUtils.java @@ -61,14 +61,14 @@ public final class JSONUtils { private JSONUtils() { } - public static XMLStreamWriter createBadgerFishWriter(OutputStream os) throws XMLStreamException { + public static XMLStreamWriter createBadgerFishWriter(OutputStream os, String enc) throws XMLStreamException { XMLOutputFactory factory = new BadgerFishXMLOutputFactory(); - return factory.createXMLStreamWriter(os); + return factory.createXMLStreamWriter(os, enc); } - public static XMLStreamReader createBadgerFishReader(InputStream is) throws XMLStreamException { + public static XMLStreamReader createBadgerFishReader(InputStream is, String enc) throws XMLStreamException { XMLInputFactory factory = new BadgerFishXMLInputFactory(); - return factory.createXMLStreamReader(is); + return factory.createXMLStreamReader(is, enc); } //CHECKSTYLE:OFF public static XMLStreamWriter createStreamWriter(OutputStream os, @@ -135,13 +135,14 @@ public final class JSONUtils { public static XMLStreamReader createStreamReader(InputStream is, boolean readXsiType, ConcurrentHashMap<String, String> namespaceMap) throws Exception { - return createStreamReader(is, readXsiType, namespaceMap, null, null); + return createStreamReader(is, readXsiType, namespaceMap, null, null, "UTF-8"); } public static XMLStreamReader createStreamReader(InputStream is, boolean readXsiType, ConcurrentHashMap<String, String> namespaceMap, List<String> primitiveArrayKeys, - DocumentDepthProperties depthProps) throws Exception { + DocumentDepthProperties depthProps, + String enc) throws Exception { if (readXsiType) { namespaceMap.putIfAbsent(XSI_URI, XSI_PREFIX); } @@ -154,7 +155,7 @@ public final class JSONUtils { XMLInputFactory factory = depthProps != null ? new JettisonMappedReaderFactory(conf, depthProps) : new MappedXMLInputFactory(conf); - return new JettisonReader(namespaceMap, factory.createXMLStreamReader(is)); + return new JettisonReader(namespaceMap, factory.createXMLStreamReader(is, enc)); } private static class JettisonMappedReaderFactory extends MappedXMLInputFactory {
