Repository: olingo-odata4 Updated Branches: refs/heads/master 0457e24fa -> bec8cb3b2
[OLINGO-652] Rename to Server Error Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/1a9cff2f Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/1a9cff2f Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/1a9cff2f Branch: refs/heads/master Commit: 1a9cff2f63481b4077fc63bff63851d6f4faa291 Parents: 0457e24 Author: Christian Amend <[email protected]> Authored: Tue May 19 10:19:35 2015 +0200 Committer: Christian Amend <[email protected]> Committed: Tue May 19 10:19:35 2015 +0200 ---------------------------------------------------------------------- .../olingo/server/api/ClientServerError.java | 143 ------------------- .../olingo/server/api/ODataServerError.java | 143 +++++++++++++++++++ .../server/api/processor/DefaultProcessor.java | 7 +- .../server/api/processor/ErrorProcessor.java | 4 +- .../server/api/serializer/ODataSerializer.java | 4 +- .../apache/olingo/server/core/ErrorHandler.java | 26 ++-- .../server/core/responses/EntityResponse.java | 4 +- .../core/responses/EntitySetResponse.java | 4 +- .../server/core/responses/MetadataResponse.java | 4 +- .../server/core/responses/PropertyResponse.java | 4 +- .../core/responses/ServiceDocumentResponse.java | 4 +- .../server/core/ODataExceptionHelper.java | 50 +++---- .../apache/olingo/server/core/ODataHandler.java | 24 ++-- .../server/core/ODataHttpHandlerImpl.java | 4 +- .../serializer/json/ODataJsonSerializer.java | 4 +- .../serializer/xml/ODataXmlSerializerImpl.java | 4 +- .../json/ClientErrorSerializerTest.java | 136 ------------------ .../json/ServerErrorSerializerTest.java | 136 ++++++++++++++++++ .../olingo/server/core/ODataHandlerTest.java | 4 +- 19 files changed, 354 insertions(+), 355 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-api/src/main/java/org/apache/olingo/server/api/ClientServerError.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ClientServerError.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ClientServerError.java deleted file mode 100644 index 8af0ec7..0000000 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/ClientServerError.java +++ /dev/null @@ -1,143 +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.util.List; -import java.util.Locale; -import java.util.Map; - -import org.apache.olingo.commons.api.ODataError; -import org.apache.olingo.commons.api.ODataErrorDetail; - -/** - * Server error. - */ -public class ClientServerError extends ODataError { - - private Exception exception; - private int statusCode; - private Locale locale; - - /** - * Gets the locale. - * @return the locale for the exception message - */ - public Locale getLocale() { - return locale; - } - - /** - * Sets the locale. - * @return this for method chaining - */ - public ClientServerError setLocale(final Locale locale) { - this.locale = locale; - return this; - } - - /** - * Gets the exception. - * @return the exception with its hierarchy - */ - public Exception getException() { - return exception; - } - - /** - * Sets the exception. - * @return this for method chaining - */ - public ClientServerError setException(final Exception exception) { - this.exception = exception; - return this; - } - - /** - * Gets the status code. - * @return the status code which this error results in. - */ - public int getStatusCode() { - return statusCode; - } - - /** - * Sets the status code. - * @param statusCode the status code which this error results in - * @return this for method chaining - */ - public ClientServerError setStatusCode(final int statusCode) { - this.statusCode = statusCode; - return this; - } - - /** - * The value for the code name/value pair is a language-independent string. - * Its value is a service-defined error code. This code serves as a sub-status - * for the HTTP error code specified in the response. MAY be null. - * @return this for method chaining - */ - @Override - public ClientServerError setCode(final String code) { - super.setCode(code); - return this; - } - - /** - * The value for the message name/value pair MUST be a human-readable, - * language-dependent representation of the error. MUST not be null. - * @return this for method chaining - */ - @Override - public ClientServerError setMessage(final String message) { - super.setMessage(message); - return this; - } - - /** - * The value for the target name/value pair is the target of the particular error (for example, the name of the - * property in error). MAY be null. - * @return this for method chaining - */ - @Override - public ClientServerError setTarget(final String target) { - super.setTarget(target); - return this; - } - - /** - * Sets error details. - * @return this for method chaining. - */ - @Override - public ClientServerError setDetails(final List<ODataErrorDetail> details) { - super.setDetails(details); - return this; - } - - /** - * Sets server defined key-value pairs for debug environment only. - * @return this for method chaining. - */ - @Override - public ClientServerError setInnerError(final Map<String, String> innerError) { - super.setInnerError(innerError); - return this; - } - -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServerError.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServerError.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServerError.java new file mode 100644 index 0000000..9365d7e --- /dev/null +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/ODataServerError.java @@ -0,0 +1,143 @@ +/* + * 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.util.List; +import java.util.Locale; +import java.util.Map; + +import org.apache.olingo.commons.api.ODataError; +import org.apache.olingo.commons.api.ODataErrorDetail; + +/** + * Server error. + */ +public class ODataServerError extends ODataError { + + private Exception exception; + private int statusCode; + private Locale locale; + + /** + * Gets the locale. + * @return the locale for the exception message + */ + public Locale getLocale() { + return locale; + } + + /** + * Sets the locale. + * @return this for method chaining + */ + public ODataServerError setLocale(final Locale locale) { + this.locale = locale; + return this; + } + + /** + * Gets the exception. + * @return the exception with its hierarchy + */ + public Exception getException() { + return exception; + } + + /** + * Sets the exception. + * @return this for method chaining + */ + public ODataServerError setException(final Exception exception) { + this.exception = exception; + return this; + } + + /** + * Gets the status code. + * @return the status code which this error results in. + */ + public int getStatusCode() { + return statusCode; + } + + /** + * Sets the status code. + * @param statusCode the status code which this error results in + * @return this for method chaining + */ + public ODataServerError setStatusCode(final int statusCode) { + this.statusCode = statusCode; + return this; + } + + /** + * The value for the code name/value pair is a language-independent string. + * Its value is a service-defined error code. This code serves as a sub-status + * for the HTTP error code specified in the response. MAY be null. + * @return this for method chaining + */ + @Override + public ODataServerError setCode(final String code) { + super.setCode(code); + return this; + } + + /** + * The value for the message name/value pair MUST be a human-readable, + * language-dependent representation of the error. MUST not be null. + * @return this for method chaining + */ + @Override + public ODataServerError setMessage(final String message) { + super.setMessage(message); + return this; + } + + /** + * The value for the target name/value pair is the target of the particular error (for example, the name of the + * property in error). MAY be null. + * @return this for method chaining + */ + @Override + public ODataServerError setTarget(final String target) { + super.setTarget(target); + return this; + } + + /** + * Sets error details. + * @return this for method chaining. + */ + @Override + public ODataServerError setDetails(final List<ODataErrorDetail> details) { + super.setDetails(details); + return this; + } + + /** + * Sets server defined key-value pairs for debug environment only. + * @return this for method chaining. + */ + @Override + public ODataServerError setInnerError(final Map<String, String> innerError) { + super.setInnerError(innerError); + return this; + } + +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/DefaultProcessor.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/DefaultProcessor.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/DefaultProcessor.java index e3193f1..7be6b4d 100644 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/DefaultProcessor.java +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/DefaultProcessor.java @@ -24,7 +24,7 @@ import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.commons.api.format.ODataFormat; import org.apache.olingo.commons.api.http.HttpHeader; import org.apache.olingo.commons.api.http.HttpStatusCode; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataRequest; @@ -72,7 +72,7 @@ public class DefaultProcessor implements MetadataProcessor, ServiceDocumentProce @Override public void processError(final ODataRequest request, final ODataResponse response, - final ClientServerError serverError, + final ODataServerError serverError, final ContentType requestedContentType) { try { ODataSerializer serializer = odata.createSerializer(ODataFormat.fromContentType(requestedContentType)); @@ -82,8 +82,7 @@ public class DefaultProcessor implements MetadataProcessor, ServiceDocumentProce } catch (Exception e) { // This should never happen but to be sure we have this catch here to prevent sending a stacktrace to a client. String responseContent = - "{\"error\":{\"code\":null,\"message\":\"An unexpected exception occurred during " + - "error processing with message: " + e.getMessage() + "\"}}"; + "{\"error\":{\"code\":null,\"message\":\"An unexpected exception occurred during error processing\"}}"; response.setContent(new ByteArrayInputStream(responseContent.getBytes())); response.setStatusCode(HttpStatusCode.INTERNAL_SERVER_ERROR.getStatusCode()); response.setHeader(HttpHeader.CONTENT_TYPE, ContentType.APPLICATION_JSON.toContentTypeString()); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/ErrorProcessor.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/ErrorProcessor.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/ErrorProcessor.java index 509929b..00058a6 100644 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/ErrorProcessor.java +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/processor/ErrorProcessor.java @@ -19,7 +19,7 @@ package org.apache.olingo.server.api.processor; import org.apache.olingo.commons.api.format.ContentType; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ODataRequest; import org.apache.olingo.server.api.ODataResponse; @@ -36,6 +36,6 @@ public interface ErrorProcessor extends Processor { * @param serverError the server error * @param responseFormat requested content type after content negotiation */ - public void processError(ODataRequest request, ODataResponse response, ClientServerError serverError, + public void processError(ODataRequest request, ODataResponse response, ODataServerError serverError, ContentType responseFormat); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/ODataSerializer.java ---------------------------------------------------------------------- diff --git a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/ODataSerializer.java b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/ODataSerializer.java index bdaa87c..dfec888 100644 --- a/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/ODataSerializer.java +++ b/lib/server-api/src/main/java/org/apache/olingo/server/api/serializer/ODataSerializer.java @@ -25,7 +25,7 @@ import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.commons.api.edm.EdmComplexType; import org.apache.olingo.commons.api.edm.EdmEntityType; import org.apache.olingo.commons.api.edm.EdmPrimitiveType; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ServiceMetadata; /** OData serializer */ @@ -52,7 +52,7 @@ public interface ODataSerializer { * @param error the main error * @return inputStream containing the OData-formatted error */ - SerializerResult error(ClientServerError error) throws SerializerException; + SerializerResult error(ODataServerError error) throws SerializerException; /** * Writes entity-collection data into an InputStream. http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ErrorHandler.java ---------------------------------------------------------------------- diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ErrorHandler.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ErrorHandler.java index d7fb341..b83d383 100644 --- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ErrorHandler.java +++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/ErrorHandler.java @@ -27,7 +27,7 @@ import org.apache.olingo.commons.api.http.HttpStatusCode; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.ODataRequest; import org.apache.olingo.server.api.ODataResponse; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.batch.exception.BatchDeserializerException; import org.apache.olingo.server.api.deserializer.DeserializerException; @@ -55,40 +55,40 @@ public class ErrorHandler { public void handleException(Exception e, ODataRequest request, ODataResponse response) { if (e instanceof UriValidationException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((UriValidationException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((UriValidationException)e, null); handleServerError(request, response, serverError); } else if(e instanceof UriParserSemanticException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((UriParserSemanticException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((UriParserSemanticException)e, null); handleServerError(request, response, serverError); } else if(e instanceof UriParserSyntaxException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((UriParserSyntaxException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((UriParserSyntaxException)e, null); handleServerError(request, response, serverError); } else if(e instanceof UriParserException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((UriParserException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((UriParserException)e, null); handleServerError(request, response, serverError); } else if(e instanceof ContentNegotiatorException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((ContentNegotiatorException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((ContentNegotiatorException)e, null); handleServerError(request, response, serverError); } else if(e instanceof SerializerException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((SerializerException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((SerializerException)e, null); handleServerError(request, response, serverError); } else if(e instanceof BatchDeserializerException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((BatchDeserializerException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((BatchDeserializerException)e, null); handleServerError(request, response, serverError); } else if(e instanceof DeserializerException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((DeserializerException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((DeserializerException)e, null); handleServerError(request, response, serverError); } else if(e instanceof ODataHandlerException) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject((ODataHandlerException)e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject((ODataHandlerException)e, null); handleServerError(request, response, serverError); } else { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e); handleServerError(request, response, serverError); } } void handleServerError(final ODataRequest request, final ODataResponse response, - final ClientServerError serverError) { + final ODataServerError serverError) { ContentType requestedContentType; try { UriInfo uriInfo = new Parser().parseUri(request.getRawODataPath(), request.getRawQueryPath(), @@ -103,7 +103,7 @@ public class ErrorHandler { processError(response, serverError, requestedContentType); } - void processError(ODataResponse response, ClientServerError serverError, + void processError(ODataResponse response, ODataServerError serverError, ContentType requestedContentType) { try { ODataSerializer serializer = this.odata.createSerializer(ODataFormat http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntityResponse.java ---------------------------------------------------------------------- diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntityResponse.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntityResponse.java index 6bbb706..eb79c07 100644 --- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntityResponse.java +++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntityResponse.java @@ -29,7 +29,7 @@ import org.apache.olingo.commons.api.http.HttpHeader; import org.apache.olingo.commons.api.http.HttpStatusCode; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataResponse; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ODataTranslatedException; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.EntitySerializerOptions; @@ -150,7 +150,7 @@ public class EntityResponse extends ServiceResponse { } } - public void writeError(ClientServerError error) { + public void writeError(ODataServerError error) { try { writeContent(this.serializer.error(error).getContent(), error.getStatusCode(), true); } catch (SerializerException e) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntitySetResponse.java ---------------------------------------------------------------------- diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntitySetResponse.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntitySetResponse.java index e068bc5..27675c3 100644 --- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntitySetResponse.java +++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/EntitySetResponse.java @@ -26,7 +26,7 @@ import org.apache.olingo.commons.api.edm.EdmEntityType; import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataResponse; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ODataTranslatedException; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.EntityCollectionSerializerOptions; @@ -82,7 +82,7 @@ public class EntitySetResponse extends ServiceResponse { visitor.visit(this); } - public void writeError(ClientServerError error) { + public void writeError(ODataServerError error) { try { writeContent(this.serializer.error(error).getContent(), error.getStatusCode(), true); } catch (SerializerException e) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/MetadataResponse.java ---------------------------------------------------------------------- diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/MetadataResponse.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/MetadataResponse.java index 4f8719a..a644358 100644 --- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/MetadataResponse.java +++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/MetadataResponse.java @@ -23,7 +23,7 @@ import java.util.Map; import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataResponse; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ODataTranslatedException; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ODataSerializer; @@ -61,7 +61,7 @@ public class MetadataResponse extends ServiceResponse { visitor.visit(this); } - public void writeError(ClientServerError error) { + public void writeError(ODataServerError error) { try { writeContent(this.serializer.error(error).getContent(), error.getStatusCode(), true); } catch (SerializerException e) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java ---------------------------------------------------------------------- diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java index 3326491..86ce46f 100644 --- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java +++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/PropertyResponse.java @@ -30,7 +30,7 @@ import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.commons.api.http.HttpStatusCode; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataResponse; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ODataTranslatedException; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ComplexSerializerOptions; @@ -144,7 +144,7 @@ public class PropertyResponse extends ServiceResponse { writeNoContent(true); } - public void writeError(ClientServerError error) { + public void writeError(ODataServerError error) { try { writeContent(this.serializer.error(error).getContent(), error.getStatusCode(), true); } catch (SerializerException e) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java ---------------------------------------------------------------------- diff --git a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java index e8b7419..0f3733c 100644 --- a/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java +++ b/lib/server-core-ext/src/main/java/org/apache/olingo/server/core/responses/ServiceDocumentResponse.java @@ -23,7 +23,7 @@ import java.util.Map; import org.apache.olingo.commons.api.format.ContentType; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataResponse; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ODataTranslatedException; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ODataSerializer; @@ -62,7 +62,7 @@ public class ServiceDocumentResponse extends ServiceResponse { visitor.visit(this); } - public void writeError(ClientServerError error) { + public void writeError(ODataServerError error) { try { writeContent(this.serializer.error(error).getContent(), error.getStatusCode(), true); } catch (SerializerException e) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java index 8493f1d..78a27ea 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataExceptionHelper.java @@ -21,7 +21,7 @@ package org.apache.olingo.server.core; import java.util.Locale; import org.apache.olingo.commons.api.http.HttpStatusCode; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataTranslatedException; import org.apache.olingo.server.api.ODataTranslatedException.ODataErrorMessage; @@ -34,16 +34,16 @@ import org.apache.olingo.server.core.uri.validator.UriValidationException; public class ODataExceptionHelper { - public static ClientServerError createServerErrorObject(final UriValidationException e, + public static ODataServerError createServerErrorObject(final UriValidationException e, final Locale requestedLocale) { - ClientServerError serverError = basicTranslatedError(e, requestedLocale); + ODataServerError serverError = basicTranslatedError(e, requestedLocale); serverError.setStatusCode(HttpStatusCode.BAD_REQUEST.getStatusCode()); return serverError; } - public static ClientServerError createServerErrorObject(final UriParserSemanticException e, + public static ODataServerError createServerErrorObject(final UriParserSemanticException e, final Locale requestedLocale) { - ClientServerError serverError = basicTranslatedError(e, requestedLocale); + ODataServerError serverError = basicTranslatedError(e, requestedLocale); if (UriParserSemanticException.MessageKeys.RESOURCE_NOT_FOUND.equals(e.getMessageKey()) || UriParserSemanticException.MessageKeys.PROPERTY_NOT_IN_TYPE.equals(e.getMessageKey())) { serverError.setStatusCode(HttpStatusCode.NOT_FOUND.getStatusCode()); @@ -53,9 +53,9 @@ public class ODataExceptionHelper { return serverError; } - public static ClientServerError + public static ODataServerError createServerErrorObject(final UriParserSyntaxException e, final Locale requestedLocale) { - ClientServerError serverError = basicTranslatedError(e, requestedLocale); + ODataServerError serverError = basicTranslatedError(e, requestedLocale); serverError.setStatusCode( UriParserSyntaxException.MessageKeys.WRONG_VALUE_FOR_SYSTEM_QUERY_OPTION_FORMAT.equals(e.getMessageKey()) ? HttpStatusCode.NOT_ACCEPTABLE.getStatusCode() : @@ -63,21 +63,21 @@ public class ODataExceptionHelper { return serverError; } - public static ClientServerError createServerErrorObject(final UriParserException e, final Locale requestedLocale) { - ClientServerError serverError = basicTranslatedError(e, requestedLocale); + public static ODataServerError createServerErrorObject(final UriParserException e, final Locale requestedLocale) { + ODataServerError serverError = basicTranslatedError(e, requestedLocale); serverError.setStatusCode(HttpStatusCode.BAD_REQUEST.getStatusCode()); return serverError; } - public static ClientServerError createServerErrorObject(final ContentNegotiatorException e, + public static ODataServerError createServerErrorObject(final ContentNegotiatorException e, final Locale requestedLocale) { - ClientServerError serverError = basicTranslatedError(e, requestedLocale); + ODataServerError serverError = basicTranslatedError(e, requestedLocale); serverError.setStatusCode(HttpStatusCode.NOT_ACCEPTABLE.getStatusCode()); return serverError; } - public static ClientServerError createServerErrorObject(final ODataHandlerException e, final Locale requestedLocale) { - ClientServerError serverError = basicTranslatedError(e, requestedLocale); + public static ODataServerError createServerErrorObject(final ODataHandlerException e, final Locale requestedLocale) { + ODataServerError serverError = basicTranslatedError(e, requestedLocale); if (ODataHandlerException.MessageKeys.FUNCTIONALITY_NOT_IMPLEMENTED.equals(e.getMessageKey()) || ODataHandlerException.MessageKeys.PROCESSOR_NOT_IMPLEMENTED.equals(e.getMessageKey())) { serverError.setStatusCode(HttpStatusCode.NOT_IMPLEMENTED.getStatusCode()); @@ -92,44 +92,44 @@ public class ODataExceptionHelper { return serverError; } - public static ClientServerError createServerErrorObject(final SerializerException e, final Locale requestedLocale) { - ClientServerError serverError = basicTranslatedError(e, requestedLocale); + public static ODataServerError createServerErrorObject(final SerializerException e, final Locale requestedLocale) { + ODataServerError serverError = basicTranslatedError(e, requestedLocale); serverError.setStatusCode(HttpStatusCode.BAD_REQUEST.getStatusCode()); return serverError; } - public static ClientServerError createServerErrorObject(final DeserializerException e, final Locale requestedLocale) { + public static ODataServerError createServerErrorObject(final DeserializerException e, final Locale requestedLocale) { return basicTranslatedError(e, requestedLocale) .setStatusCode(HttpStatusCode.BAD_REQUEST.getStatusCode()); } - public static ClientServerError + public static ODataServerError createServerErrorObject(final ODataTranslatedException e, final Locale requestedLocale) { return basicTranslatedError(e, requestedLocale); } - public static ClientServerError createServerErrorObject(final ODataApplicationException e) { - ClientServerError serverError = basicServerError(e); + public static ODataServerError createServerErrorObject(final ODataApplicationException e) { + ODataServerError serverError = basicServerError(e); serverError.setStatusCode(e.getStatusCode()); serverError.setLocale(e.getLocale()); serverError.setCode(e.getODataErrorCode()); return serverError; } - public static ClientServerError createServerErrorObject(final Exception e) { - ClientServerError serverError = basicServerError(e); + public static ODataServerError createServerErrorObject(final Exception e) { + ODataServerError serverError = basicServerError(e); serverError.setStatusCode(HttpStatusCode.INTERNAL_SERVER_ERROR.getStatusCode()); serverError.setLocale(Locale.ENGLISH); return serverError; } - private static ClientServerError basicServerError(final Exception e) { - return new ClientServerError().setException(e).setMessage(e.getMessage()); + private static ODataServerError basicServerError(final Exception e) { + return new ODataServerError().setException(e).setMessage(e.getMessage()); } - private static ClientServerError basicTranslatedError(final ODataTranslatedException e, + private static ODataServerError basicTranslatedError(final ODataTranslatedException e, final Locale requestedLocale) { - ClientServerError serverError = basicServerError(e); + ODataServerError serverError = basicServerError(e); ODataErrorMessage translatedMessage = e.getTranslatedMessage(requestedLocale); serverError.setMessage(translatedMessage.getMessage()); serverError.setLocale(translatedMessage.getLocale()); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java index 978dc54..755bc92 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHandler.java @@ -34,7 +34,7 @@ import org.apache.olingo.commons.api.format.ODataFormat; import org.apache.olingo.commons.api.http.HttpHeader; import org.apache.olingo.commons.api.http.HttpMethod; import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataRequest; @@ -111,34 +111,34 @@ public class ODataHandler { processInternal(request, response); } catch (final UriValidationException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); handleException(request, response, serverError); } catch (final UriParserSemanticException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); handleException(request, response, serverError); } catch (final UriParserSyntaxException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); handleException(request, response, serverError); } catch (final UriParserException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); handleException(request, response, serverError); } catch (ContentNegotiatorException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); handleException(request, response, serverError); } catch (SerializerException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); handleException(request, response, serverError); } catch (DeserializerException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); handleException(request, response, serverError); } catch (ODataHandlerException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e, null); handleException(request, response, serverError); } catch (ODataApplicationException e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e); handleException(request, response, serverError); } catch (Exception e) { - ClientServerError serverError = ODataExceptionHelper.createServerErrorObject(e); + ODataServerError serverError = ODataExceptionHelper.createServerErrorObject(e); handleException(request, response, serverError); } return response; @@ -194,7 +194,7 @@ public class ODataHandler { } public void handleException(final ODataRequest request, final ODataResponse response, - final ClientServerError serverError) { + final ODataServerError serverError) { ErrorProcessor exceptionProcessor; try { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java index 6b567f0..2e6a645 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/ODataHttpHandlerImpl.java @@ -33,7 +33,7 @@ import javax.servlet.http.HttpServletResponse; import org.apache.olingo.commons.api.ODataRuntimeException; import org.apache.olingo.commons.api.http.HttpHeader; import org.apache.olingo.commons.api.http.HttpMethod; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.ODataHttpHandler; import org.apache.olingo.server.api.ODataRequest; @@ -80,7 +80,7 @@ public class ODataHttpHandlerImpl implements ODataHttpHandler { private ODataResponse handleException(final ODataRequest odRequest, final Exception e) { ODataResponse resp = new ODataResponse(); - ClientServerError serverError; + ODataServerError serverError; if (e instanceof ODataHandlerException) { serverError = ODataExceptionHelper.createServerErrorObject((ODataHandlerException) e, null); } else if (e instanceof ODataTranslatedException) { http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java index 7e43742..7650894 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/json/ODataJsonSerializer.java @@ -43,7 +43,7 @@ import org.apache.olingo.commons.api.edm.EdmStructuredType; import org.apache.olingo.commons.api.edm.FullQualifiedName; import org.apache.olingo.commons.api.format.ODataFormat; import org.apache.olingo.commons.core.edm.primitivetype.EdmPrimitiveTypeFactory; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ComplexSerializerOptions; import org.apache.olingo.server.api.serializer.EntityCollectionSerializerOptions; @@ -115,7 +115,7 @@ public class ODataJsonSerializer implements ODataSerializer { } @Override - public SerializerResult error(final ClientServerError error) throws SerializerException { + public SerializerResult error(final ODataServerError error) throws SerializerException { CircleStreamBuffer buffer = new CircleStreamBuffer(); try { JsonGenerator json = new JsonFactory().createGenerator(buffer.getOutputStream()); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerImpl.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerImpl.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerImpl.java index ef2d451..b15450b 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerImpl.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/serializer/xml/ODataXmlSerializerImpl.java @@ -29,7 +29,7 @@ import org.apache.olingo.commons.api.edm.Edm; import org.apache.olingo.commons.api.edm.EdmComplexType; import org.apache.olingo.commons.api.edm.EdmEntityType; import org.apache.olingo.commons.api.edm.EdmPrimitiveType; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.ServiceMetadata; import org.apache.olingo.server.api.serializer.ComplexSerializerOptions; import org.apache.olingo.server.api.serializer.EntityCollectionSerializerOptions; @@ -102,7 +102,7 @@ public class ODataXmlSerializerImpl implements ODataSerializer { } @Override - public SerializerResult error(final ClientServerError error) throws SerializerException { + public SerializerResult error(final ODataServerError error) throws SerializerException { throw new SerializerException("error serialization not implemented for XML format", SerializerException.MessageKeys.NOT_IMPLEMENTED); } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/json/ClientErrorSerializerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/json/ClientErrorSerializerTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/json/ClientErrorSerializerTest.java deleted file mode 100644 index bc89289..0000000 --- a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/json/ClientErrorSerializerTest.java +++ /dev/null @@ -1,136 +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.core.serializer.json; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.io.IOUtils; -import org.apache.olingo.commons.api.ODataErrorDetail; -import org.apache.olingo.commons.api.format.ODataFormat; -import org.apache.olingo.server.api.ClientServerError; -import org.apache.olingo.server.api.OData; -import org.apache.olingo.server.api.serializer.ODataSerializer; -import org.apache.olingo.server.api.serializer.SerializerException; -import org.junit.Before; -import org.junit.Test; - -import com.fasterxml.jackson.databind.JsonNode; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.fasterxml.jackson.databind.node.JsonNodeType; - -public class ClientErrorSerializerTest { - - ODataSerializer ser; - - @Before - public void before() throws Exception { - ser = OData.newInstance().createSerializer(ODataFormat.JSON); - } - - @Test - public void basicODataErrorNoCode() throws Exception { - ClientServerError error = new ClientServerError(); - error.setMessage("ErrorMessage"); - InputStream stream = ser.error(error).getContent(); - String jsonString = IOUtils.toString(stream); - assertEquals("{\"error\":{\"code\":null,\"message\":\"ErrorMessage\"}}", jsonString); - } - - @Test - public void basicODataErrorWithCode() throws Exception { - ClientServerError error = new ClientServerError(); - error.setCode("Code").setMessage("ErrorMessage"); - InputStream stream = ser.error(error).getContent(); - String jsonString = IOUtils.toString(stream); - assertEquals("{\"error\":{\"code\":\"Code\",\"message\":\"ErrorMessage\"}}", jsonString); - } - - @Test - public void basicODataErrorWithCodeAndTarget() throws Exception { - ClientServerError error = new ClientServerError(); - error.setCode("Code").setMessage("ErrorMessage").setTarget("Target"); - InputStream stream = ser.error(error).getContent(); - String jsonString = IOUtils.toString(stream); - assertEquals("{\"error\":{\"code\":\"Code\",\"message\":\"ErrorMessage\",\"target\":\"Target\"}}", jsonString); - } - - @Test(expected = SerializerException.class) - public void nullErrorResultsInException() throws Exception { - ser.error(null); - } - - @Test - public void emptyDetailsList() throws Exception { - ClientServerError error = new ClientServerError(); - error.setMessage("ErrorMessage").setDetails(new ArrayList<ODataErrorDetail>()); - InputStream stream = ser.error(error).getContent(); - String jsonString = IOUtils.toString(stream); - assertEquals("{\"error\":{\"code\":null,\"message\":\"ErrorMessage\",\"details\":[]}}", jsonString); - } - - @Test - public void nothingSetAtODataErrorObject() throws Exception { - ClientServerError error = new ClientServerError(); - InputStream stream = ser.error(error).getContent(); - String jsonString = IOUtils.toString(stream); - assertEquals("{\"error\":{\"code\":null,\"message\":null}}", jsonString); - } - - @Test - public void singleDetailNothingSet() throws Exception { - List<ODataErrorDetail> details = new ArrayList<ODataErrorDetail>(); - details.add(new ODataErrorDetail()); - ClientServerError error = new ClientServerError().setDetails(details); - InputStream stream = ser.error(error).getContent(); - String jsonString = IOUtils.toString(stream); - assertEquals("{\"error\":{\"code\":null,\"message\":null,\"details\":[{\"code\":null,\"message\":null}]}}", - jsonString); - } - - @Test - public void verifiedWithJacksonParser() throws Exception { - List<ODataErrorDetail> details = new ArrayList<ODataErrorDetail>(); - details.add(new ODataErrorDetail().setCode("detailCode").setMessage("detailMessage").setTarget("detailTarget")); - ClientServerError error = - new ClientServerError().setCode("Code").setMessage("Message").setTarget("Target").setDetails(details); - InputStream stream = ser.error(error).getContent(); - JsonNode tree = new ObjectMapper().readTree(stream); - assertNotNull(tree); - tree = tree.get("error"); - assertNotNull(tree); - assertEquals("Code", tree.get("code").textValue()); - assertEquals("Message", tree.get("message").textValue()); - assertEquals("Target", tree.get("target").textValue()); - - tree = tree.get("details"); - assertNotNull(tree); - assertEquals(JsonNodeType.ARRAY, tree.getNodeType()); - - tree = tree.get(0); - assertNotNull(tree); - assertEquals("detailCode", tree.get("code").textValue()); - assertEquals("detailMessage", tree.get("message").textValue()); - assertEquals("detailTarget", tree.get("target").textValue()); - } -} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/json/ServerErrorSerializerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/json/ServerErrorSerializerTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/json/ServerErrorSerializerTest.java new file mode 100644 index 0000000..c9efe07 --- /dev/null +++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/serializer/json/ServerErrorSerializerTest.java @@ -0,0 +1,136 @@ +/* + * 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.core.serializer.json; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +import java.io.InputStream; +import java.util.ArrayList; +import java.util.List; + +import org.apache.commons.io.IOUtils; +import org.apache.olingo.commons.api.ODataErrorDetail; +import org.apache.olingo.commons.api.format.ODataFormat; +import org.apache.olingo.server.api.ODataServerError; +import org.apache.olingo.server.api.OData; +import org.apache.olingo.server.api.serializer.ODataSerializer; +import org.apache.olingo.server.api.serializer.SerializerException; +import org.junit.Before; +import org.junit.Test; + +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.node.JsonNodeType; + +public class ServerErrorSerializerTest { + + ODataSerializer ser; + + @Before + public void before() throws Exception { + ser = OData.newInstance().createSerializer(ODataFormat.JSON); + } + + @Test + public void basicODataErrorNoCode() throws Exception { + ODataServerError error = new ODataServerError(); + error.setMessage("ErrorMessage"); + InputStream stream = ser.error(error).getContent(); + String jsonString = IOUtils.toString(stream); + assertEquals("{\"error\":{\"code\":null,\"message\":\"ErrorMessage\"}}", jsonString); + } + + @Test + public void basicODataErrorWithCode() throws Exception { + ODataServerError error = new ODataServerError(); + error.setCode("Code").setMessage("ErrorMessage"); + InputStream stream = ser.error(error).getContent(); + String jsonString = IOUtils.toString(stream); + assertEquals("{\"error\":{\"code\":\"Code\",\"message\":\"ErrorMessage\"}}", jsonString); + } + + @Test + public void basicODataErrorWithCodeAndTarget() throws Exception { + ODataServerError error = new ODataServerError(); + error.setCode("Code").setMessage("ErrorMessage").setTarget("Target"); + InputStream stream = ser.error(error).getContent(); + String jsonString = IOUtils.toString(stream); + assertEquals("{\"error\":{\"code\":\"Code\",\"message\":\"ErrorMessage\",\"target\":\"Target\"}}", jsonString); + } + + @Test(expected = SerializerException.class) + public void nullErrorResultsInException() throws Exception { + ser.error(null); + } + + @Test + public void emptyDetailsList() throws Exception { + ODataServerError error = new ODataServerError(); + error.setMessage("ErrorMessage").setDetails(new ArrayList<ODataErrorDetail>()); + InputStream stream = ser.error(error).getContent(); + String jsonString = IOUtils.toString(stream); + assertEquals("{\"error\":{\"code\":null,\"message\":\"ErrorMessage\",\"details\":[]}}", jsonString); + } + + @Test + public void nothingSetAtODataErrorObject() throws Exception { + ODataServerError error = new ODataServerError(); + InputStream stream = ser.error(error).getContent(); + String jsonString = IOUtils.toString(stream); + assertEquals("{\"error\":{\"code\":null,\"message\":null}}", jsonString); + } + + @Test + public void singleDetailNothingSet() throws Exception { + List<ODataErrorDetail> details = new ArrayList<ODataErrorDetail>(); + details.add(new ODataErrorDetail()); + ODataServerError error = new ODataServerError().setDetails(details); + InputStream stream = ser.error(error).getContent(); + String jsonString = IOUtils.toString(stream); + assertEquals("{\"error\":{\"code\":null,\"message\":null,\"details\":[{\"code\":null,\"message\":null}]}}", + jsonString); + } + + @Test + public void verifiedWithJacksonParser() throws Exception { + List<ODataErrorDetail> details = new ArrayList<ODataErrorDetail>(); + details.add(new ODataErrorDetail().setCode("detailCode").setMessage("detailMessage").setTarget("detailTarget")); + ODataServerError error = + new ODataServerError().setCode("Code").setMessage("Message").setTarget("Target").setDetails(details); + InputStream stream = ser.error(error).getContent(); + JsonNode tree = new ObjectMapper().readTree(stream); + assertNotNull(tree); + tree = tree.get("error"); + assertNotNull(tree); + assertEquals("Code", tree.get("code").textValue()); + assertEquals("Message", tree.get("message").textValue()); + assertEquals("Target", tree.get("target").textValue()); + + tree = tree.get("details"); + assertNotNull(tree); + assertEquals(JsonNodeType.ARRAY, tree.getNodeType()); + + tree = tree.get(0); + assertNotNull(tree); + assertEquals("detailCode", tree.get("code").textValue()); + assertEquals("detailMessage", tree.get("message").textValue()); + assertEquals("detailTarget", tree.get("target").textValue()); + } +} http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/1a9cff2f/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java index a6f6c36..72ec0c6 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/ODataHandlerTest.java @@ -47,7 +47,7 @@ import org.apache.olingo.commons.api.http.HttpContentType; import org.apache.olingo.commons.api.http.HttpHeader; import org.apache.olingo.commons.api.http.HttpMethod; import org.apache.olingo.commons.api.http.HttpStatusCode; -import org.apache.olingo.server.api.ClientServerError; +import org.apache.olingo.server.api.ODataServerError; import org.apache.olingo.server.api.OData; import org.apache.olingo.server.api.ODataApplicationException; import org.apache.olingo.server.api.ODataRequest; @@ -694,7 +694,7 @@ public class ODataHandlerTest { dispatch(HttpMethod.POST, "ESAllPrim", "", HttpHeader.CONTENT_TYPE, "some/unsupported", errorProcessor); verifyZeroInteractions(processor); verify(errorProcessor).processError(any(ODataRequest.class), any(ODataResponse.class), - any(ClientServerError.class), + any(ODataServerError.class), any(ContentType.class)); }
