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 2016/11/23 14:28:03 UTC
cxf git commit: Letting CXF StaxUtils prepare XMLStreamReader for
Atom reads
Repository: cxf
Updated Branches:
refs/heads/master 1cdab6490 -> d9e2a6e72
Letting CXF StaxUtils prepare XMLStreamReader for Atom reads
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/d9e2a6e7
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/d9e2a6e7
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/d9e2a6e7
Branch: refs/heads/master
Commit: d9e2a6e7260ea12efa5355ffdfbf0b2415bccd14
Parents: 1cdab64
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Wed Nov 23 14:27:36 2016 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Wed Nov 23 14:27:36 2016 +0000
----------------------------------------------------------------------
.../provider/atom/AbstractAtomProvider.java | 6 ++--
.../provider/atom/AtomPojoProviderTest.java | 37 ++++++++++++++++++++
2 files changed, 41 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/d9e2a6e7/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java
index 179ee66..acc1285 100644
--- a/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java
+++ b/rt/rs/extensions/providers/src/main/java/org/apache/cxf/jaxrs/provider/atom/AbstractAtomProvider.java
@@ -30,6 +30,7 @@ import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.ext.MessageBodyReader;
import javax.ws.rs.ext.MessageBodyWriter;
+import javax.xml.stream.XMLStreamReader;
import org.apache.abdera.Abdera;
import org.apache.abdera.model.Document;
@@ -39,6 +40,7 @@ import org.apache.abdera.parser.ParserOptions;
import org.apache.abdera.writer.Writer;
import org.apache.cxf.common.logging.LogUtils;
import org.apache.cxf.jaxrs.utils.ExceptionUtils;
+import org.apache.cxf.staxutils.StaxUtils;
public abstract class AbstractAtomProvider<T extends Element>
implements MessageBodyWriter<T>, MessageBodyReader<T> {
@@ -89,10 +91,10 @@ public abstract class AbstractAtomProvider<T extends Element>
ParserOptions options = parser.getDefaultParserOptions();
if (options != null) {
options.setAutodetectCharset(autodetectCharset);
- options.setResolveEntities(false);
}
}
- Document<T> doc = parser.parse(is);
+ XMLStreamReader reader = StaxUtils.createXMLStreamReader(is);
+ Document<T> doc = parser.parse(reader);
return doc.getRoot();
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/d9e2a6e7/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProviderTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProviderTest.java b/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProviderTest.java
index 0296764..025748c 100644
--- a/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProviderTest.java
+++ b/rt/rs/extensions/providers/src/test/java/org/apache/cxf/jaxrs/provider/atom/AtomPojoProviderTest.java
@@ -145,6 +145,25 @@ public class AtomPojoProviderTest extends Assert {
new Annotation[]{}, mt, null, bis);
assertEquals("a", book.getName());
}
+ @Test
+ public void testReadEntryNoBuilders2() throws Exception {
+ final String entry =
+ "<!DOCTYPE entry SYSTEM \"entry://entry\"><entry xmlns=\"http://www.w3.org/2005/Atom\">"
+ + "<title type=\"text\">a</title>"
+ + "<content type=\"application/xml\">"
+ + "<book xmlns=\"\">"
+ + "<name>a</name>"
+ + "</book>"
+ + "</content>"
+ + "</entry>";
+ AtomPojoProvider provider = new AtomPojoProvider();
+ ByteArrayInputStream bis = new ByteArrayInputStream(entry.getBytes());
+ MediaType mt = MediaType.valueOf("application/atom+xml;type=entry");
+ @SuppressWarnings({"unchecked", "rawtypes" })
+ Book book = (Book)provider.readFrom((Class)Book.class, Book.class,
+ new Annotation[]{}, mt, null, bis);
+ assertEquals("a", book.getName());
+ }
@Test
@@ -180,6 +199,24 @@ public class AtomPojoProviderTest extends Assert {
}
@Test
+ public void testReadFeedWithoutBuilders2() throws Exception {
+ AtomPojoProvider provider = new AtomPojoProvider();
+ final String feed =
+ "<!DOCTYPE feed SYSTEM \"feed://feed\"><feed xmlns=\"http://www.w3.org/2005/Atom\">"
+ + "<entry><content type=\"application/xml\"><book xmlns=\"\"><name>a</name></book></content></entry>"
+ + "<entry><content type=\"application/xml\"><book xmlns=\"\"><name>b</name></book></content></entry>"
+ + "</feed>";
+ MediaType mt = MediaType.valueOf("application/atom+xml;type=feed");
+ ByteArrayInputStream bis = new ByteArrayInputStream(feed.getBytes());
+ @SuppressWarnings({"unchecked", "rawtypes" })
+ Books books2 = (Books)provider.readFrom((Class)Books.class, Books.class,
+ new Annotation[]{}, mt, null, bis);
+ List<Book> list = books2.getBooks();
+ assertEquals(2, list.size());
+ assertTrue("a".equals(list.get(0).getName()) || "a".equals(list.get(1).getName()));
+ assertTrue("b".equals(list.get(0).getName()) || "b".equals(list.get(1).getName()));
+ }
+ @Test
public void testReadEntryNoContent() throws Exception {
/** A sample entry without content. */
final String entryNoContent =