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;
+ }
+
}