Search in sources :

Example 1 with ErrorResponse

use of io.crnk.core.engine.error.ErrorResponse in project crnk-framework by crnk-project.

the class JpaExceptionMapperTests method testPersistenceException.

@Test
public void testPersistenceException() {
    PersistenceException exception = new PersistenceException(new BadRequestException("test"));
    ExceptionMapperRegistry exceptionMapperRegistry = boot.getExceptionMapperRegistry();
    PersistenceExceptionMapper mapper = (PersistenceExceptionMapper) exceptionMapperRegistry.findMapperFor(PersistenceException.class).get();
    ErrorResponse response = mapper.toErrorResponse(exception);
    ErrorData errorData = response.getErrors().iterator().next();
    Assert.assertEquals(Integer.toString(HttpStatus.BAD_REQUEST_400), errorData.getStatus());
    Assert.assertEquals("test", errorData.getDetail());
}
Also used : PersistenceException(javax.persistence.PersistenceException) BadRequestException(io.crnk.core.exception.BadRequestException) ExceptionMapperRegistry(io.crnk.core.engine.internal.exception.ExceptionMapperRegistry) ErrorData(io.crnk.core.engine.document.ErrorData) PersistenceExceptionMapper(io.crnk.jpa.internal.PersistenceExceptionMapper) ErrorResponse(io.crnk.core.engine.error.ErrorResponse) Test(org.junit.Test)

Example 2 with ErrorResponse

use of io.crnk.core.engine.error.ErrorResponse in project crnk-framework by crnk-project.

the class JpaExceptionMapperTests method testPersistenceRollbackException.

@Test
public void testPersistenceRollbackException() {
    javax.persistence.RollbackException exception = new javax.persistence.RollbackException(new BadRequestException("test"));
    ExceptionMapperRegistry exceptionMapperRegistry = boot.getExceptionMapperRegistry();
    PersistenceRollbackExceptionMapper mapper = (PersistenceRollbackExceptionMapper) exceptionMapperRegistry.findMapperFor(javax.persistence.RollbackException.class).get();
    ErrorResponse response = mapper.toErrorResponse(exception);
    ErrorData errorData = response.getErrors().iterator().next();
    Assert.assertEquals(Integer.toString(HttpStatus.BAD_REQUEST_400), errorData.getStatus());
    Assert.assertEquals("test", errorData.getDetail());
}
Also used : BadRequestException(io.crnk.core.exception.BadRequestException) PersistenceRollbackExceptionMapper(io.crnk.jpa.internal.PersistenceRollbackExceptionMapper) ExceptionMapperRegistry(io.crnk.core.engine.internal.exception.ExceptionMapperRegistry) ErrorData(io.crnk.core.engine.document.ErrorData) ErrorResponse(io.crnk.core.engine.error.ErrorResponse) Test(org.junit.Test)

Example 3 with ErrorResponse

use of io.crnk.core.engine.error.ErrorResponse in project crnk-framework by crnk-project.

the class ClientStubBase method handleError.

protected RuntimeException handleError(HttpAdapterResponse response) throws IOException {
    ErrorResponse errorResponse = null;
    String body = response.body();
    String contentType = response.getResponseHeader(HttpHeaders.HTTP_CONTENT_TYPE);
    if (body.length() > 0 && contentType != null && contentType.toLowerCase().contains(HttpHeaders.JSONAPI_CONTENT_TYPE)) {
        ObjectMapper objectMapper = client.getObjectMapper();
        Document document = objectMapper.readValue(body, Document.class);
        if (document.getErrors() != null && !document.getErrors().isEmpty()) {
            errorResponse = new ErrorResponse(document.getErrors(), response.code());
        }
    }
    if (errorResponse == null) {
        errorResponse = new ErrorResponse(null, response.code());
    }
    ExceptionMapperRegistry exceptionMapperRegistry = client.getExceptionMapperRegistry();
    Optional<ExceptionMapper<?>> mapper = (Optional) exceptionMapperRegistry.findMapperFor(errorResponse);
    if (mapper.isPresent()) {
        Throwable throwable = mapper.get().fromErrorResponse(errorResponse);
        if (throwable instanceof RuntimeException) {
            return (RuntimeException) throwable;
        } else {
            return new ClientException(response.code(), response.message(), throwable);
        }
    } else {
        return new ClientException(response.code(), response.message());
    }
}
Also used : ExceptionMapper(io.crnk.core.engine.error.ExceptionMapper) Optional(io.crnk.core.utils.Optional) ClientException(io.crnk.client.ClientException) Document(io.crnk.core.engine.document.Document) ExceptionMapperRegistry(io.crnk.core.engine.internal.exception.ExceptionMapperRegistry) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) ErrorResponse(io.crnk.core.engine.error.ErrorResponse)

Example 4 with ErrorResponse

use of io.crnk.core.engine.error.ErrorResponse in project crnk-framework by crnk-project.

the class CrnkExceptionMapperTest method forbidden.

@Test
public void forbidden() {
    CrnkExceptionMapper mapper = new CrnkExceptionMapper();
    ErrorResponse response = mapper.toErrorResponse(new ForbiddenException("testMessage"));
    assertThat(response.getHttpStatus()).isEqualTo(HttpStatus.FORBIDDEN_403);
    assertThat(mapper.accepts(response)).isTrue();
    CrnkMappableException exception = mapper.fromErrorResponse(response);
    assertThat(exception).isInstanceOf(ForbiddenException.class);
    assertThat(exception.getMessage()).isEqualTo("testMessage");
}
Also used : CrnkExceptionMapper(io.crnk.core.engine.internal.exception.CrnkExceptionMapper) ErrorResponse(io.crnk.core.engine.error.ErrorResponse) Test(org.junit.Test)

Example 5 with ErrorResponse

use of io.crnk.core.engine.error.ErrorResponse in project crnk-framework by crnk-project.

the class CrnkExceptionMapperTest method invalidExceptionNotManagedByMapper.

@Test(expected = IllegalStateException.class)
public void invalidExceptionNotManagedByMapper() {
    CrnkExceptionMapper mapper = new CrnkExceptionMapper();
    mapper.fromErrorResponse(new ErrorResponse(null, 123));
}
Also used : CrnkExceptionMapper(io.crnk.core.engine.internal.exception.CrnkExceptionMapper) ErrorResponse(io.crnk.core.engine.error.ErrorResponse) Test(org.junit.Test)

Aggregations

ErrorResponse (io.crnk.core.engine.error.ErrorResponse)18 Test (org.junit.Test)15 ErrorData (io.crnk.core.engine.document.ErrorData)10 ExceptionMapperRegistry (io.crnk.core.engine.internal.exception.ExceptionMapperRegistry)7 CrnkExceptionMapper (io.crnk.core.engine.internal.exception.CrnkExceptionMapper)6 ExceptionMapper (io.crnk.core.engine.error.ExceptionMapper)5 JsonApiExceptionMapper (io.crnk.core.engine.error.JsonApiExceptionMapper)4 Optional (io.crnk.core.utils.Optional)4 BadRequestException (io.crnk.core.exception.BadRequestException)3 Document (io.crnk.core.engine.document.Document)2 ArrayList (java.util.ArrayList)2 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 ClientException (io.crnk.client.ClientException)1 CrnkBoot (io.crnk.core.boot.CrnkBoot)1 ResourceRepositoryInformation (io.crnk.core.engine.information.repository.ResourceRepositoryInformation)1 ResourceField (io.crnk.core.engine.information.resource.ResourceField)1 ResourceInformation (io.crnk.core.engine.information.resource.ResourceInformation)1 RelationshipRepositoryAdapter (io.crnk.core.engine.internal.repository.RelationshipRepositoryAdapter)1 ResourceRepositoryAdapter (io.crnk.core.engine.internal.repository.ResourceRepositoryAdapter)1 PreconditionUtil (io.crnk.core.engine.internal.utils.PreconditionUtil)1