You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2013/06/09 22:31:18 UTC

svn commit: r1491283 - in /cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom: AbstractAtomProvider.java AtomPojoProvider.java

Author: sergeyb
Date: Sun Jun  9 20:31:18 2013
New Revision: 1491283

URL: http://svn.apache.org/r1491283
Log:
Disabling the autodetection of the charset for Atom providers

Modified:
    cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java
    cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java

Modified: cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java?rev=1491283&r1=1491282&r2=1491283&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java (original)
+++ cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java Sun Jun  9 20:31:18 2013
@@ -35,6 +35,8 @@ import javax.ws.rs.ext.MessageBodyWriter
 import org.apache.abdera.Abdera;
 import org.apache.abdera.model.Document;
 import org.apache.abdera.model.Element;
+import org.apache.abdera.parser.Parser;
+import org.apache.abdera.parser.ParserOptions;
 import org.apache.abdera.writer.Writer;
 import org.apache.cxf.common.logging.LogUtils;
 
@@ -43,7 +45,7 @@ public abstract class AbstractAtomProvid
 
     private static final Logger LOG = LogUtils.getL7dLogger(AbstractAtomProvider.class);
     private static final Abdera ATOM_ENGINE = new Abdera();
-        
+    private boolean autodetectCharset;
     private boolean formattedOutput;
     
     public long getSize(T element, Class<?> type, Type genericType, Annotation[] annotations, MediaType mt) {
@@ -82,7 +84,14 @@ public abstract class AbstractAtomProvid
     public T readFrom(Class<T> clazz, Type t, Annotation[] a, MediaType mt, 
                          MultivaluedMap<String, String> headers, InputStream is) 
         throws IOException {
-        Document<T> doc = ATOM_ENGINE.getParser().parse(is);
+        Parser parser = ATOM_ENGINE.getParser();
+        synchronized (parser) {
+            ParserOptions options = parser.getDefaultParserOptions();
+            if (options != null) {
+                options.setAutodetectCharset(autodetectCharset);
+            }
+        }
+        Document<T> doc = parser.parse(is);
         return doc.getRoot();
     }
 
@@ -90,4 +99,7 @@ public abstract class AbstractAtomProvid
         this.formattedOutput = formattedOutput;
     }
 
+    public void setAutodetectCharset(boolean autodetectCharset) {
+        this.autodetectCharset = autodetectCharset;
+    }
 }

Modified: cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java?rev=1491283&r1=1491282&r2=1491283&view=diff
==============================================================================
--- cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java (original)
+++ cxf/trunk/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProvider.java Sun Jun  9 20:31:18 2013
@@ -91,6 +91,7 @@ public class AtomPojoProvider extends Ab
     private MessageContext mc;   
     private boolean formattedOutput;
     private boolean useJaxbForContent = true;
+    private boolean autodetectCharset;
     private String entryContentMethodName = DEFAULT_ENTRY_CONTENT_METHOD;
     
     public void setUseJaxbForContent(boolean use) {
@@ -604,8 +605,10 @@ public class AtomPojoProvider extends Ab
         if (isFeed) {
             return readFromFeed(cls, mt, headers, is);
         } else {
-            Entry entry = new AtomEntryProvider().readFrom(Entry.class, Entry.class, 
-                                                           new Annotation[]{}, mt, headers, is);
+            AtomEntryProvider p = new AtomEntryProvider();
+            p.setAutodetectCharset(autodetectCharset);
+            Entry entry = p.readFrom(Entry.class, Entry.class, 
+                                     new Annotation[]{}, mt, headers, is);
             return readFromEntry(entry, cls, mt, headers, is);
         }
     }
@@ -616,6 +619,7 @@ public class AtomPojoProvider extends Ab
         throws IOException {
         
         AtomFeedProvider p = new AtomFeedProvider();
+        p.setAutodetectCharset(autodetectCharset);
         Feed feed = p.readFrom(Feed.class, Feed.class, new Annotation[]{}, mt, headers, is);
         
         AtomElementReader<?, ?> reader = getAtomReader(cls);
@@ -660,5 +664,9 @@ public class AtomPojoProvider extends Ab
         return null;
     }
 
+    public void setAutodetectCharset(boolean autodetectCharset) {
+        this.autodetectCharset = autodetectCharset;
+    }
+
     
 }