package org.odata4j.producer; import javax.ws.rs.core.HttpHeaders; import javax.ws.rs.core.UriInfo; import org.odata4j.exceptions.ODataProducerException; /** * This class provides implementations of the {@link ErrorResponseExtension} interface for common * use cases. */ public class ErrorResponseExtensions { /** * Returns inner errors in all cases. */ public static final ErrorResponseExtension returnInnerErrors() { return new ErrorResponseExtension() { public boolean returnInnerError(HttpHeaders httpHeaders, UriInfo uriInfo, ODataProducerException exception) { return true; } }; } /** * Default system property and query parameter that drives whether or not inner errors are returned. * * @see ErrorResponseExtensions#returnInnerErrorsBasedOnDefaultSystemProperty * @see ErrorResponseExtensions#returnInnerErrorsBasedOnDefaultQueryParameter */ public static final String ODATA4J_DEBUG = "odata4j.debug"; /** * Returns inner errors when the default system property is set to {@code true}. * * @see ErrorResponseExtensions#ODATA4J_DEBUG */ public static final ErrorResponseExtension returnInnerErrorsBasedOnDefaultSystemProperty() { return returnInnerErrorsBasedOnSystemProperty(ODATA4J_DEBUG); } /** * Returns inner errors when a system property is set to {@code true}. * * @param propertyName the system property key */ public static final ErrorResponseExtension returnInnerErrorsBasedOnSystemProperty(final String propertyName) { return new ErrorResponseExtension() { public boolean returnInnerError(HttpHeaders httpHeaders, UriInfo uriInfo, ODataProducerException exception) { return Boolean.parseBoolean(System.getProperty(propertyName)); } }; } /** * Returns inner errors when the default query parameter is set to {@code true}. * * @see ErrorResponseExtensions#ODATA4J_DEBUG */ public static final ErrorResponseExtension returnInnerErrorsBasedOnDefaultQueryParameter() { return returnInnerErrorsBasedOnQueryParameter(ODATA4J_DEBUG); } /** * Returns inner errors when a custom query parameter is set to {@code true}. * * @param queryParameterName the custom parameter key */ public static final ErrorResponseExtension returnInnerErrorsBasedOnQueryParameter(final String queryParameterName) { return new ErrorResponseExtension() { public boolean returnInnerError(HttpHeaders httpHeaders, UriInfo uriInfo, ODataProducerException exception) { return Boolean.parseBoolean(uriInfo.getQueryParameters().getFirst(queryParameterName)); } }; } }