@Override public void processError(ODataServerError error, ErrorResponse response) { int logLevel = error.getStatusCode() >= 500 ? MessageLevel.ERROR : MessageLevel.WARNING; Throwable ex = getRoot(error.getException()); // many exceptions in TeiidServiceHandler default as INTERNAL_SERVER_ERROR // so we make a better check for codes here if (ex instanceof TeiidNotImplementedException) { error.setException((TeiidNotImplementedException) ex); error.setCode(((TeiidNotImplementedException) ex).getCode()); error.setStatusCode(501); logLevel = MessageLevel.DETAIL; } else if (ex instanceof TeiidProcessingException) { error.setException((TeiidProcessingException) ex); error.setCode(((TeiidProcessingException) ex).getCode()); error.setStatusCode(400); logLevel = MessageLevel.WARNING; } else if (ex instanceof TeiidException) { error.setException((TeiidException) ex); error.setCode(((TeiidException) ex).getCode()); error.setStatusCode(500); logLevel = MessageLevel.ERROR; } else if (ex instanceof TeiidRuntimeException) { error.setException((TeiidRuntimeException) ex); error.setCode(((TeiidRuntimeException) ex).getCode()); error.setStatusCode(500); logLevel = MessageLevel.ERROR; } if (ex != error.getException() && ex.getMessage() != null) { if (LogManager.isMessageToBeRecorded(LogConstants.CTX_ODATA, MessageLevel.DETAIL) || logLevel <= MessageLevel.ERROR) { LogManager.log( logLevel, LogConstants.CTX_ODATA, error.getException(), ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16050, error.getMessage(), ex.getMessage())); } else { LogManager.log( logLevel, LogConstants.CTX_DQP, ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16051, error.getMessage(), ex.getMessage())); } } else { if (LogManager.isMessageToBeRecorded(LogConstants.CTX_ODATA, MessageLevel.DETAIL) || logLevel <= MessageLevel.ERROR) { LogManager.log( logLevel, LogConstants.CTX_ODATA, error.getException(), ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16052, error.getMessage())); } else { LogManager.log( logLevel, LogConstants.CTX_DQP, ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16053, error.getMessage())); } } response.writeError(error); }
@Override public void anyUnsupported(ODataRequest request, ODataResponse response) throws ODataLibraryException, ODataApplicationException { throw new ODataApplicationException( ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16049), HttpStatusCode.NOT_IMPLEMENTED.getStatusCode(), Locale.getDefault()); }
private void checkETag(String entityETag) throws ODataApplicationException { if (entityETag != null && !entityETag.equals("*")) { throw new ODataApplicationException( ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16030), HttpStatusCode.NOT_IMPLEMENTED.getStatusCode(), Locale.getDefault()); } }
@Override public void rollback(String txnId) throws ODataLibraryException, ODataApplicationException { try { getClient().rollback(txnId); } catch (SQLException e) { throw new ODataApplicationException( ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16039), HttpStatusCode.INTERNAL_SERVER_ERROR.getStatusCode(), Locale.getDefault()); } }
@Override public String startTransaction() throws ODataLibraryException, ODataApplicationException { try { return getClient().startTransaction(); } catch (SQLException e) { throw new ODataApplicationException( ODataPlugin.Util.gs(ODataPlugin.Event.TEIID16039), HttpStatusCode.INTERNAL_SERVER_ERROR.getStatusCode(), Locale.getDefault()); } }