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 {

Reply via email to