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

Reply via email to