[OLINGO-832] Merge branch 'master' into OLINGO-832_StreamSerializerPoC
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/396a39ba Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/396a39ba Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/396a39ba Branch: refs/heads/OLINGO-832_StreamSerializerPoC Commit: 396a39baec9539249dcfa4b111e87c037cb6fb64 Parents: 5b6cccf d040afe Author: Michael Bolz <[email protected]> Authored: Fri Feb 19 09:39:49 2016 +0100 Committer: Michael Bolz <[email protected]> Committed: Fri Feb 19 09:39:49 2016 +0100 ---------------------------------------------------------------------- .../core/edm/annotation/EdmRecordImpl.java | 16 +- .../core/edm/annotations/EdmRecordImplTest.java | 6 - .../core/edm/primitivetype/EdmDateTest.java | 16 +- .../serializer/ComplexSerializerOptions.java | 14 +- .../EntityCollectionSerializerOptions.java | 11 + .../api/serializer/EntitySerializerOptions.java | 14 +- .../serializer/PrimitiveSerializerOptions.java | 13 + .../PrimitiveValueSerializerOptions.java | 14 +- .../olingo/server/core/MetadataParser.java | 262 ++++++++++++++----- .../server/core/SchemaBasedEdmProvider.java | 117 ++++----- .../olingo/server/core/ServiceRequest.java | 50 +++- .../server/core/requests/DataRequest.java | 13 +- .../src/main/resources/org.apache.olingo.v1.xml | 40 +++ .../core/MetadataParserAnnotationsTest.java | 10 +- .../olingo/server/core/MetadataParserTest.java | 1 - .../server/core/ServiceDispatcherTest.java | 3 + .../olingo/server/example/TripPinHandler.java | 1 + .../server/example/TripPinServiceTest.java | 30 ++- .../olingo/server/example/TripPinServlet.java | 3 +- .../src/test/resources/airlines.json | 2 +- .../src/test/resources/annotations.xml | 17 ++ .../src/test/resources/trippin.xml | 6 +- .../xml/MetadataDocumentXmlSerializer.java | 5 +- .../core/serializer/xml/ODataXmlSerializer.java | 138 ++++++---- .../serializer/xml/ODataXmlSerializerTest.java | 27 +- 25 files changed, 606 insertions(+), 223 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/396a39ba/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/EntityCollectionSerializerOptions.java ---------------------------------------------------------------------- diff --cc lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/EntityCollectionSerializerOptions.java index 6f4ed2d,9ee7d24..9335829 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/EntityCollectionSerializerOptions.java +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/EntityCollectionSerializerOptions.java @@@ -33,7 -32,7 +33,8 @@@ public class EntityCollectionSerializer private SelectOption select; private boolean writeOnlyReferences; private String id; + private WriteContentErrorCallback writeContentErrorCallback; + private String xml10InvalidCharReplacement; /** Gets the {@link ContextURL}. */ public ContextURL getContextURL() { @@@ -65,17 -64,10 +66,21 @@@ return id; } + /** + * Gets the callback which is used in case of an exception during + * write of the content (in case the content will be written/streamed + * in the future) + * @return callback which is used in case of an exception during + * write of the content + * + */ + public WriteContentErrorCallback getWriteContentErrorCallback() { + return writeContentErrorCallback; + } + /** Gets the replacement string for unicode characters, that is not allowed in XML 1.0 */ + public String xml10InvalidCharReplacement() { + return xml10InvalidCharReplacement; + } /** Initializes the options builder. */ public static Builder with() { @@@ -126,19 -118,13 +131,25 @@@ options.id = id; return this; } - + + /** + * Set the callback which is used in case of an exception during + * write of the content. + * + * @param writeContentErrorCallback the callback + * @return the builder + */ + public Builder writeContentErrorCallback(WriteContentErrorCallback writeContentErrorCallback) { + options.writeContentErrorCallback = writeContentErrorCallback; + return this; + } + + /** set the replacement String for xml 1.0 unicode controlled characters that are not allowed */ + public Builder xml10InvalidCharReplacement(final String replacement) { + options.xml10InvalidCharReplacement = replacement; + return this; + } + /** Builds the OData serializer options. */ public EntityCollectionSerializerOptions build() { return options; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/396a39ba/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java ---------------------------------------------------------------------- diff --cc lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java index 1a07faa,a72e096..a42e3df --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java @@@ -53,8 -51,8 +53,9 @@@ import org.apache.olingo.commons.api.ed import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.edm.constants.EdmTypeKind; import org.apache.olingo.commons.api.ex.ODataErrorDetail; +import org.apache.olingo.commons.api.ex.ODataRuntimeException; import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory; + import org.apache.olingo.commons.core.edm.primitivetype.EdmString; import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ComplexSerializerOptions; @@@ -345,10 -338,11 +348,11 @@@ public class ODataXmlSerializer extend } protected void writeEntitySet(final ServiceMetadata metadata, final EdmEntityType entityType, - final EntityCollection entitySet, final ExpandOption expand, final SelectOption select, + final AbstractEntityCollection entitySet, final ExpandOption expand, final SelectOption select, - final XMLStreamWriter writer) throws XMLStreamException, SerializerException { + final String xml10InvalidCharReplacement,final XMLStreamWriter writer) + throws XMLStreamException, SerializerException { - for (final Entity entity : entitySet.getEntities()) { + for (final Entity entity : entitySet) { - writeEntity(metadata, entityType, entity, null, expand, select, writer, false); + writeEntity(metadata, entityType, entity, null, expand, select, xml10InvalidCharReplacement, writer, false); } }
