[OLINGO-200] Cleanup again
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/1fa66760 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/1fa66760 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/1fa66760 Branch: refs/heads/olingo-206-validator Commit: 1fa667608094fb7a59395642b641113959b48798 Parents: a5b7b25 Author: Francesco Chicchiriccò <[email protected]> Authored: Tue Apr 1 14:16:50 2014 +0200 Committer: Francesco Chicchiriccò <[email protected]> Committed: Tue Apr 1 14:16:50 2014 +0200 ---------------------------------------------------------------------- .../commons/core/data/AtomDeserializer.java | 28 +++++++-------- .../core/op/AbstractODataDeserializer.java | 38 ++++++++------------ 2 files changed, 26 insertions(+), 40 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1fa66760/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java index a786803..722ea50 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/data/AtomDeserializer.java @@ -34,14 +34,10 @@ import org.apache.olingo.commons.api.domain.ODataOperation; import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion; import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.commons.core.data.v3.XMLLinkCollectionImpl; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; public class AtomDeserializer extends AbstractAtomDealer { - private static final Logger LOG = LoggerFactory.getLogger(AtomDeserializer.class); - - public static final XMLInputFactory FACTORY = XMLInputFactory.newInstance(); + private static final XMLInputFactory FACTORY = XMLInputFactory.newInstance(); private final AtomPropertyDeserializer propDeserializer; @@ -56,7 +52,7 @@ public class AtomDeserializer extends AbstractAtomDealer { return getContainer(start, propDeserializer.deserialize(reader, start)); } - public StartElement skipBeforeFirstStartElement(final XMLEventReader reader) throws XMLStreamException { + private StartElement skipBeforeFirstStartElement(final XMLEventReader reader) throws XMLStreamException { StartElement startEvent = null; while (reader.hasNext() && startEvent == null) { final XMLEvent event = reader.nextEvent(); @@ -442,6 +438,16 @@ public class AtomDeserializer extends AbstractAtomDealer { return getContainer(start, error(reader, start)); } + private <T> Container<T> getContainer(final StartElement start, final T object) { + final Attribute context = start.getAttributeByName(contextQName); + final Attribute metadataETag = start.getAttributeByName(metadataEtagQName); + + return new Container<T>( + context == null ? null : URI.create(context.getValue()), + metadataETag == null ? null : metadataETag.getValue(), + object); + } + @SuppressWarnings("unchecked") public <T, V extends T> Container<T> read(final InputStream input, final Class<V> reference) throws XMLStreamException { @@ -459,14 +465,4 @@ public class AtomDeserializer extends AbstractAtomDealer { } return null; } - - public <T> Container<T> getContainer(final StartElement start, final T object) { - final Attribute context = start.getAttributeByName(contextQName); - final Attribute metadataETag = start.getAttributeByName(metadataEtagQName); - - return new Container<T>( - context == null ? null : URI.create(context.getValue()), - metadataETag == null ? null : metadataETag.getValue(), - object); - } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1fa66760/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java index 96043c7..ceb6b7e 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/op/AbstractODataDeserializer.java @@ -19,14 +19,8 @@ package org.apache.olingo.commons.core.op; import com.fasterxml.jackson.core.type.TypeReference; -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; import java.io.InputStream; import java.lang.reflect.Type; -import javax.xml.stream.XMLEventReader; -import javax.xml.stream.XMLEventWriter; -import javax.xml.stream.XMLOutputFactory; -import javax.xml.stream.events.StartElement; import org.apache.olingo.commons.api.data.Entry; import org.apache.olingo.commons.api.domain.ODataError; import org.apache.olingo.commons.api.data.Feed; @@ -89,38 +83,34 @@ public abstract class AbstractODataDeserializer extends AbstractJacksonTool impl /* * ------------------ Protected methods ------------------ */ - @SuppressWarnings("unchecked") - protected <T, V extends T> Container<T> xml(final InputStream input, final Class<V> reference) { + protected <T, V extends T> Container<T> atom(final InputStream input, final Class<V> reference) { try { - final ByteArrayOutputStream baos = new ByteArrayOutputStream(); - - final XMLEventReader reader = AtomDeserializer.FACTORY.createXMLEventReader(input); - final StartElement start = atomDeserializer.skipBeforeFirstStartElement(reader); - - final XMLEventWriter writer = XMLOutputFactory.newFactory().createXMLEventWriter(baos); - writer.add(start); - writer.add(reader); - writer.flush(); - writer.close(); - - final V obj = getXmlMapper().readValue(new ByteArrayInputStream(baos.toByteArray()), reference); - return (Container<T>) (obj instanceof Container ? obj : atomDeserializer.getContainer(start, obj)); + return atomDeserializer.<T, V>read(input, reference); } catch (Exception e) { throw new IllegalArgumentException("While deserializing " + reference.getName(), e); } } - protected <T, V extends T> Container<T> atom(final InputStream input, final Class<V> reference) { + @SuppressWarnings("unchecked") + protected <T, V extends T> Container<T> xml(final InputStream input, final Class<V> reference) { try { - return atomDeserializer.<T, V>read(input, reference); + final T obj = getXmlMapper().readValue(input, new TypeReference<V>() { + @Override + public Type getType() { + return reference; + } + }); + + return obj instanceof Container ? (Container<T>) obj : new Container<T>(null, null, obj); } catch (Exception e) { throw new IllegalArgumentException("While deserializing " + reference.getName(), e); } } + @SuppressWarnings("unchecked") protected <T, V extends T> Container<T> json(final InputStream input, final Class<V> reference) { try { - T obj = getObjectMapper().readValue(input, new TypeReference<V>() { + final T obj = getObjectMapper().readValue(input, new TypeReference<V>() { @Override public Type getType() { return reference;
