[OLINGO-832] Clean up after merge
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/0879bfbe Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/0879bfbe Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/0879bfbe Branch: refs/heads/master Commit: 0879bfbe5ed0401872168b3c4478612f42eb75b4 Parents: 47bc730 Author: Michael Bolz <[email protected]> Authored: Mon Feb 22 08:42:38 2016 +0100 Committer: Michael Bolz <[email protected]> Committed: Mon Feb 22 08:42:38 2016 +0100 ---------------------------------------------------------------------- .../apache/olingo/server/api/ODataContent.java | 24 +++++++++++ .../api/ODataContentWriteErrorCallback.java | 41 ++++++++++++++++++ .../api/ODataContentWriteErrorContext.java | 45 ++++++++++++++++++++ .../server/api/WriteContentErrorCallback.java | 30 ------------- .../server/api/WriteContentErrorContext.java | 27 ------------ .../EntityCollectionSerializerOptions.java | 14 +++--- .../api/serializer/SerializerStreamResult.java | 7 +-- .../server/core/ODataWritableContent.java | 20 ++++++--- .../core/serializer/SerializerResultImpl.java | 16 ------- .../core/serializer/xml/ODataXmlSerializer.java | 1 - .../json/ODataJsonSerializerTest.java | 9 ++-- 11 files changed, 139 insertions(+), 95 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContent.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContent.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContent.java index e237bf3..7f971df 100644 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContent.java +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContent.java @@ -21,8 +21,32 @@ package org.apache.olingo.server.api; import java.io.OutputStream; import java.nio.channels.WritableByteChannel; +/** + * Contains the response content for the OData request. + * <p/> + * Because the content is potential streamable an error can occur when the + * <code>write</code> methods are used. + * If this happens <b>NO</b> exception will be thrown but if registered the + * org.apache.olingo.server.api.ODataContentWriteErrorCallback is called. + */ public interface ODataContent { + /** + * Write the available content into the given <code>WritableByteChannel</code>. + * + * If during write of the content an exception is thrown this exception will be catched + * and the org.apache.olingo.server.api.ODataContentWriteErrorCallback is called (if registered). + * + * @param channel channel in which the content is written. + */ void write(WritableByteChannel channel); + /** + * Write the available content into the given <code>OutputStream</code>. + * + * If during write of the content an exception is thrown this exception will be catched + * and the org.apache.olingo.server.api.ODataContentWriteErrorCallback is called (if registered). + * + * @param stream stream in which the content is written. + */ void write(OutputStream stream); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContentWriteErrorCallback.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContentWriteErrorCallback.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContentWriteErrorCallback.java new file mode 100644 index 0000000..643d676 --- /dev/null +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContentWriteErrorCallback.java @@ -0,0 +1,41 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.server.api; + +import java.io.OutputStream; +import java.nio.channels.WritableByteChannel; + +/** + * The ODataContentWriteErrorCallback is called when during the {@link ODataContent#write(OutputStream)} + * or the {@link ODataContent#write(WritableByteChannel)} an error occurs. + */ +public interface ODataContentWriteErrorCallback { + /** + * Is called when during <i>write</i> in the ODataContent an error occurs. + * The <code>context:ODataContentWriteErrorContext</code> contains all relevant information + * and the <code>channel</code> is the channel (stream) in which before was written. + * This channel is at this point not closed and can be used to write additional information. + * <b>ATTENTION:</b> This channel MUST NOT be closed by the callback. It will be closed by the + * layer responsible for the environment / data transfer (e.g. application server). + * + * @param context contains all relevant error information + * @param channel is the channel (stream) in which before was written + */ + void handleError(ODataContentWriteErrorContext context, WritableByteChannel channel); +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContentWriteErrorContext.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContentWriteErrorContext.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContentWriteErrorContext.java new file mode 100644 index 0000000..5c72b57 --- /dev/null +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataContentWriteErrorContext.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.olingo.server.api; + +/** + * The WriteContentErrorErrorContext is the parameter for the WriteContentErrorCallback. + * and contains all relevant error information + */ +public interface ODataContentWriteErrorContext { + /** + * Get the exception which caused this error (as Java exception). + * If the cause exception is a ODataLibraryException this method will + * return the same exception as the {@link #getODataLibraryException()} method. + * + * @return the exception which caused this error (as Java exception). + */ + Exception getException(); + /** + * Get the exception which caused this error (as ODataLibraryException exception). + * If the cause exception is an ODataLibraryException this method will + * return the same exception as the {@link #getException()} method. + * If the cause exception is <b>NOT</b> an ODataLibraryException this method will + * return <code>NULL</code>. + * + * @return the cause exception if it is an ODataLibraryException otherwise + * this method will return <code>NULL</code>. + */ + ODataLibraryException getODataLibraryException(); +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-api/src/main/java/org/apache/olingo/server/api/WriteContentErrorCallback.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/WriteContentErrorCallback.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/WriteContentErrorCallback.java deleted file mode 100644 index 3132876..0000000 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/WriteContentErrorCallback.java +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.api; - -import java.io.OutputStream; -import java.nio.channels.WritableByteChannel; - -/** - * The WriteContentErrorCallback is called when during the {@link ODataContent#write(OutputStream)} - * or the {@link ODataContent#write(WritableByteChannel)} an error occurs. - */ -public interface WriteContentErrorCallback { - void handleError(WriteContentErrorContext context, WritableByteChannel channel); -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-api/src/main/java/org/apache/olingo/server/api/WriteContentErrorContext.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/WriteContentErrorContext.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/WriteContentErrorContext.java deleted file mode 100644 index 837c184..0000000 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/WriteContentErrorContext.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.olingo.server.api; - -/** - * The WriteContentErrorErrorContext is the parameter for the WriteContentErrorCallback. - */ -public interface WriteContentErrorContext { - Exception getException(); - ODataLibraryException getODataLibraryException(); -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/EntityCollectionSerializerOptions.java ---------------------------------------------------------------------- diff --git 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 index 9335829..9578ba7 100644 --- 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 @@ -19,7 +19,7 @@ package org.apache.olingo.server.api.serializer; import org.apache.olingo.commons.api.data.ContextURL; -import org.apache.olingo.server.api.WriteContentErrorCallback; +import org.apache.olingo.server.api.ODataContentWriteErrorCallback; import org.apache.olingo.server.api.uri.queryoption.CountOption; import org.apache.olingo.server.api.uri.queryoption.ExpandOption; import org.apache.olingo.server.api.uri.queryoption.SelectOption; @@ -33,7 +33,7 @@ public class EntityCollectionSerializerOptions { private SelectOption select; private boolean writeOnlyReferences; private String id; - private WriteContentErrorCallback writeContentErrorCallback; + private ODataContentWriteErrorCallback ODataContentWriteErrorCallback; private String xml10InvalidCharReplacement; /** Gets the {@link ContextURL}. */ @@ -74,8 +74,8 @@ public class EntityCollectionSerializerOptions { * write of the content * */ - public WriteContentErrorCallback getWriteContentErrorCallback() { - return writeContentErrorCallback; + public ODataContentWriteErrorCallback getODataContentWriteErrorCallback() { + return ODataContentWriteErrorCallback; } /** Gets the replacement string for unicode characters, that is not allowed in XML 1.0 */ public String xml10InvalidCharReplacement() { @@ -136,11 +136,11 @@ public class EntityCollectionSerializerOptions { * Set the callback which is used in case of an exception during * write of the content. * - * @param writeContentErrorCallback the callback + * @param ODataContentWriteErrorCallback the callback * @return the builder */ - public Builder writeContentErrorCallback(WriteContentErrorCallback writeContentErrorCallback) { - options.writeContentErrorCallback = writeContentErrorCallback; + public Builder writeContentErrorCallback(ODataContentWriteErrorCallback ODataContentWriteErrorCallback) { + options.ODataContentWriteErrorCallback = ODataContentWriteErrorCallback; return this; } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/SerializerStreamResult.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/SerializerStreamResult.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/SerializerStreamResult.java index c19c270..54e928d 100644 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/SerializerStreamResult.java +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/SerializerStreamResult.java @@ -22,12 +22,13 @@ import org.apache.olingo.server.api.ODataContent; /** * Result type for {@link ODataSerializer} methods - * which supports stream/write in the future + * which supports streaming (write in the future). */ public interface SerializerStreamResult { /** - * Returns the content as ODataContent - * @return content + * Returns the content as ODataContent instance. + * + * @return OData response content */ ODataContent getODataContent(); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java index 7a7c142..f315734 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataWritableContent.java @@ -29,8 +29,8 @@ import org.apache.olingo.commons.api.ex.ODataRuntimeException; import org.apache.olingo.server.api.ODataContent; import org.apache.olingo.server.api.ODataLibraryException; import org.apache.olingo.server.api.ServiceMetadata; -import org.apache.olingo.server.api.WriteContentErrorCallback; -import org.apache.olingo.server.api.WriteContentErrorContext; +import org.apache.olingo.server.api.ODataContentWriteErrorCallback; +import org.apache.olingo.server.api.ODataContentWriteErrorContext; import org.apache.olingo.server.api.serializer.EntityCollectionSerializerOptions; import org.apache.olingo.server.api.serializer.ODataSerializer; import org.apache.olingo.server.api.serializer.SerializerException; @@ -39,6 +39,14 @@ import org.apache.olingo.server.core.serializer.SerializerStreamResultImpl; import org.apache.olingo.server.core.serializer.json.ODataJsonSerializer; import org.apache.olingo.server.core.serializer.xml.ODataXmlSerializer; +/** + * Stream supporting implementation of the ODataContent + * and contains the response content for the OData request. + * <p/> + * If an error occur during a <code>write</code> method <b>NO</b> exception + * will be thrown but if registered the + * org.apache.olingo.server.api.ODataContentWriteErrorCallback is called. + */ public class ODataWritableContent implements ODataContent { private StreamContent streamContent; @@ -65,9 +73,9 @@ public class ODataWritableContent implements ODataContent { try { writeEntity(iterator, out); } catch (SerializerException e) { - final WriteContentErrorCallback errorCallback = options.getWriteContentErrorCallback(); + final ODataContentWriteErrorCallback errorCallback = options.getODataContentWriteErrorCallback(); if(errorCallback != null) { - final ErrorContext errorContext = new ErrorContext(e); + final WriteErrorContext errorContext = new WriteErrorContext(e); errorCallback.handleError(errorContext, Channels.newChannel(out)); } } @@ -136,9 +144,9 @@ public class ODataWritableContent implements ODataContent { return new ODataWritableContentBuilder(iterator, entityType, serializer, metadata, options); } - public static class ErrorContext implements WriteContentErrorContext { + public static class WriteErrorContext implements ODataContentWriteErrorContext { private ODataLibraryException exception; - public ErrorContext(ODataLibraryException exception) { + public WriteErrorContext(ODataLibraryException exception) { this.exception = exception; } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/SerializerResultImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/SerializerResultImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/SerializerResultImpl.java index 7c7de2f..69287af 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/SerializerResultImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/SerializerResultImpl.java @@ -20,7 +20,6 @@ package org.apache.olingo.server.core.serializer; import java.io.InputStream; -import org.apache.olingo.server.api.ODataContent; import org.apache.olingo.server.api.serializer.SerializerResult; public class SerializerResultImpl implements SerializerResult { @@ -31,21 +30,6 @@ public class SerializerResultImpl implements SerializerResult { return content; } - // @Override -// public ReadableByteChannel getChannel() { -// return Channels.newChannel(getContent()); -// } -// -// @Override -// public void write(WritableByteChannel channel) { -// ResultHelper.copy(Channels.newChannel(content), channel); -// } -// -// @Override -// public boolean isWriteSupported() { -// return false; -// } - public static SerializerResultBuilder with() { return new SerializerResultBuilder(); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializer.java ---------------------------------------------------------------------- diff --git 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 index 2fa16ea..399df3d 100644 --- 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,7 +53,6 @@ import org.apache.olingo.commons.api.edm.EdmType; 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; http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0879bfbe/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java index a7cf057..bc3ac19 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializerTest.java @@ -26,7 +26,6 @@ import java.nio.channels.WritableByteChannel; import java.util.Arrays; import java.util.Collections; import java.util.Iterator; -import java.util.Locale; import java.util.TimeZone; import org.apache.commons.io.IOUtils; @@ -49,8 +48,8 @@ import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.ODataContent; import org.apache.olingo.server.api.ServiceMetadata; -import org.apache.olingo.server.api.WriteContentErrorCallback; -import org.apache.olingo.server.api.WriteContentErrorContext; +import org.apache.olingo.server.api.ODataContentWriteErrorCallback; +import org.apache.olingo.server.api.ODataContentWriteErrorContext; import org.apache.olingo.server.api.edmx.EdmxReference; import org.apache.olingo.server.api.serializer.ComplexSerializerOptions; import org.apache.olingo.server.api.serializer.EntityCollectionSerializerOptions; @@ -275,9 +274,9 @@ public class ODataJsonSerializerTest { CountOption countOption = Mockito.mock(CountOption.class); Mockito.when(countOption.getValue()).thenReturn(true); - WriteContentErrorCallback errorCallback = new WriteContentErrorCallback() { + ODataContentWriteErrorCallback errorCallback = new ODataContentWriteErrorCallback() { @Override - public void handleError(WriteContentErrorContext context, WritableByteChannel channel) { + public void handleError(ODataContentWriteErrorContext context, WritableByteChannel channel) { try { String msgKey = context.getODataLibraryException().getMessageKey().getKey(); String toChannel = "ERROR: " + msgKey;
