/** * Each operation can have one or many error responses Concatenate all the error responses and * create on string * * @return */ private String calculateExceptionMessage() { StringBuilder errorMessage = new StringBuilder(); if (this.getErrorResponses() != null) { for (ErrorResponse errorResponse : this.getErrorResponses()) { errorMessage.append(errorResponse.getCode() + " - " + errorResponse.getReason() + " "); } } return errorMessage.toString(); }
/** {@inheritDoc} */ public void testMessageMarshall() { QName qname = new QName(OpenIDConstants.OPENID_20_NS, expectedMode); ErrorResponse response = (ErrorResponse) buildMessage(qname); response.setError(expectedError); response.setContact(expectedContact); response.setReference(expectedReference); assertEquals(expectedParameters, response); }
@Test public void canBeCreatedAroundMessage() { // Arrange: final ErrorResponse response = new ErrorResponse(new TimeInstant(29), "badness", 500); // Assert: Assert.assertThat(response.getTimeStamp(), IsEqual.equalTo(new TimeInstant(29))); Assert.assertThat(response.getError(), IsEqual.equalTo("Internal Server Error")); Assert.assertThat(response.getMessage(), IsEqual.equalTo("badness")); Assert.assertThat(response.getStatus(), IsEqual.equalTo(500)); }
@Test public void responseWithoutDescriptionsCanBeRoundTripped() { // Act: final ErrorResponse response = createRoundTrippedResponse(new ErrorResponse(new TimeInstant(54), null, 890)); // Assert: Assert.assertThat(response.getTimeStamp(), IsEqual.equalTo(new TimeInstant(54))); Assert.assertThat(response.getError(), IsNull.nullValue()); Assert.assertThat(response.getMessage(), IsNull.nullValue()); Assert.assertThat(response.getStatus(), IsEqual.equalTo(890)); }
@Test public void responseCanBeRoundTripped() { // Act: final ErrorResponse response = createRoundTrippedResponse(new ErrorResponse(new TimeInstant(18), "badness", 500)); // Assert: Assert.assertThat(response.getTimeStamp(), IsEqual.equalTo(new TimeInstant(18))); Assert.assertThat(response.getError(), IsEqual.equalTo("Internal Server Error")); Assert.assertThat(response.getMessage(), IsEqual.equalTo("badness")); Assert.assertThat(response.getStatus(), IsEqual.equalTo(500)); }
@Test public void canBeCreatedAroundUnknownHttpStatus() { // Arrange: final ErrorResponse response = new ErrorResponse(new TimeInstant(18), "exception message", -123); // Assert: Assert.assertThat(response.getTimeStamp(), IsEqual.equalTo(new TimeInstant(18))); Assert.assertThat(response.getError(), IsNull.nullValue()); Assert.assertThat(response.getMessage(), IsEqual.equalTo("exception message")); Assert.assertThat(response.getStatus(), IsEqual.equalTo(-123)); }
@Test public void canBeCreatedAroundException() { // Arrange: final ErrorResponse response = new ErrorResponse( new TimeInstant(18), new RuntimeException("exception message"), HttpStatus.NOT_FOUND); // Assert: Assert.assertThat(response.getTimeStamp(), IsEqual.equalTo(new TimeInstant(18))); Assert.assertThat(response.getError(), IsEqual.equalTo("Not Found")); Assert.assertThat(response.getMessage(), IsEqual.equalTo("exception message")); Assert.assertThat(response.getStatus(), IsEqual.equalTo(404)); }
@Test public void responseCanBeSerialized() { // Arrange: final JsonSerializer serializer = new JsonSerializer(); final ErrorResponse response = new ErrorResponse(new TimeInstant(18), "badness", 500); // Act: response.serialize(serializer); final JSONObject jsonObject = serializer.getObject(); // Assert: Assert.assertThat(jsonObject.get("timeStamp"), IsEqual.equalTo(18)); Assert.assertThat(jsonObject.get("error"), IsEqual.equalTo("Internal Server Error")); Assert.assertThat(jsonObject.get("message"), IsEqual.equalTo("badness")); Assert.assertThat(jsonObject.get("status"), IsEqual.equalTo(500)); }
@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); }
@Test public void shouldReturn500OnGatewayException() throws Exception { mockFdaGateway.exception = new GatewayException(); final MvcResult mvcResult = mvc.perform( MockMvcRequestBuilders.get("/api/events") .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON) .param("productNdc", MockOpenFdaGateway.ASPIRIN_NDC)) .andExpect(MockMvcResultMatchers.status().isInternalServerError()) .andReturn(); final ErrorResponse response = SimpleObjectMapper.mapResponse(mvcResult.getResponse(), ErrorResponse.class); assertThat(response.getMessage(), equalTo("Error communicating with OpenFDA API")); }
/** {@inheritDoc} */ public void testMessageUnmarshall() { ErrorResponse response = (ErrorResponse) unmarshallMessage(messageFile); String mode = response.getMode(); assertEquals( "NegativeAssertion mode was " + mode + ", expected " + expectedMode, expectedMode, mode); String error = response.getError(); assertEquals( "ErrorResponse error was " + error + ", expected " + expectedError, expectedError, error); String contact = response.getContact(); assertEquals( "ErrorResponse contact was " + contact + ", expected " + expectedContact, expectedContact, contact); String reference = response.getReference(); assertEquals( "ErrorResponse reference was " + reference + ", expected " + expectedReference, expectedReference, reference); }
int getUserID(String sessioID, HttpServletResponse response) { int userID; try { userID = SessionManager.getUserID(sessioID); } // Illegal session id catch (IllegalArgumentException e) { Helper.answerError( response, HttpStatics.HTTP_STATUS_INVALID_PARAMS, ErrorResponse.build(ErrorCodes.ErrorCode.REQUEST_SESSION_ID_INVALID).toByteArray()); return -1; } // Session is expired if (userID < 0) { Helper.answerError( response, HttpStatics.HTTP_STATUS_INVALID_PARAMS, ErrorResponse.build(ErrorCodes.ErrorCode.REQUEST_SESSION_EXPIRED).toByteArray()); return -1; } return userID; }
private void respondErrorAndClose(HttpExchange exchange, ErrorResponse errorResponse) throws IOException { respondWithXmlDocumentAndClose( exchange, errorResponse.getStatusCode(), new ErrorResponseXmlDocument(errorResponse)); }