This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit f8fdadf58b3097357eaabbc3fb24c1f4c569bb8e Author: Benoit Tellier <btell...@linagora.com> AuthorDate: Wed Dec 11 17:11:30 2019 +0700 JAMES-2272 Improve CassandraMigrationRoutes - Rely on standard error handling - Improve error message upon version error parsing - Remove some never thrown exception --- .../webadmin/dto/CassandraVersionRequest.java | 6 ++++- .../webadmin/routes/CassandraMigrationRoutes.java | 26 ++++------------------ .../routes/CassandraMigrationRoutesTest.java | 8 +++---- 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/dto/CassandraVersionRequest.java b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/dto/CassandraVersionRequest.java index 7f9f307..dde07f7 100644 --- a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/dto/CassandraVersionRequest.java +++ b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/dto/CassandraVersionRequest.java @@ -26,7 +26,11 @@ import com.google.common.base.Preconditions; public class CassandraVersionRequest { public static CassandraVersionRequest parse(String version) { Preconditions.checkNotNull(version, "Version is mandatory"); - return new CassandraVersionRequest(Integer.parseInt(version)); + try { + return new CassandraVersionRequest(Integer.parseInt(version)); + } catch (NumberFormatException e) { + throw new IllegalArgumentException("Expecting version to be specified as an integer", e); + } } private final int value; diff --git a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java index 5effb68..8f77736 100644 --- a/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java +++ b/server/protocols/webadmin/webadmin-cassandra/src/main/java/org/apache/james/webadmin/routes/CassandraMigrationRoutes.java @@ -141,28 +141,10 @@ public class CassandraMigrationRoutes implements Routes { }) public Object upgradeToVersion(Request request, Response response) { LOGGER.debug("Cassandra upgrade launched"); - try { - CassandraVersionRequest cassandraVersionRequest = CassandraVersionRequest.parse(request.body()); - Task migration = cassandraMigrationService.upgradeToVersion(cassandraVersionRequest.getValue()); - TaskId taskId = taskManager.submit(migration); - return TaskIdDto.from(taskId); - } catch (NullPointerException | IllegalArgumentException e) { - LOGGER.info(INVALID_VERSION_UPGRADE_REQUEST); - throw ErrorResponder.builder() - .statusCode(HttpStatus.BAD_REQUEST_400) - .type(ErrorType.INVALID_ARGUMENT) - .message(INVALID_VERSION_UPGRADE_REQUEST) - .cause(e) - .haltError(); - } catch (IllegalStateException e) { - LOGGER.info(MIGRATION_REQUEST_CAN_NOT_BE_DONE, e); - throw ErrorResponder.builder() - .statusCode(HttpStatus.CONFLICT_409) - .type(ErrorType.WRONG_STATE) - .message(MIGRATION_REQUEST_CAN_NOT_BE_DONE) - .cause(e) - .haltError(); - } + CassandraVersionRequest cassandraVersionRequest = CassandraVersionRequest.parse(request.body()); + Task migration = cassandraMigrationService.upgradeToVersion(cassandraVersionRequest.getValue()); + TaskId taskId = taskManager.submit(migration); + return TaskIdDto.from(taskId); } @GET diff --git a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java index e156375..3575722 100644 --- a/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java +++ b/server/protocols/webadmin/webadmin-cassandra/src/test/java/org/apache/james/webadmin/routes/CassandraMigrationRoutesTest.java @@ -71,7 +71,7 @@ public class CassandraMigrationRoutesTest { private CassandraSchemaVersionDAO schemaVersionDAO; private MemoryTaskManager taskManager; - private void createServer() throws InterruptedException { + private void createServer() { Migration successfulMigration = () -> { }; CassandraSchemaTransitions transitions = new CassandraSchemaTransitions(ImmutableMap.of( @@ -96,7 +96,7 @@ public class CassandraMigrationRoutesTest { } @Before - public void setUp() throws InterruptedException { + public void setUp() { createServer(); } @@ -166,8 +166,8 @@ public class CassandraMigrationRoutesTest { assertThat(errors) .containsEntry("statusCode", HttpStatus.BAD_REQUEST_400) .containsEntry("type", "InvalidArgument") - .containsEntry("message", "Invalid request for version upgrade") - .containsEntry("details", "For input string: \"NonInt\""); + .containsEntry("message", "Invalid arguments supplied in the user request") + .containsEntry("details", "Expecting version to be specified as an integer"); verifyNoMoreInteractions(schemaVersionDAO); } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org