This is an automated email from the ASF dual-hosted git repository.

mmiller pushed a commit to branch 1.7
in repository https://gitbox.apache.org/repos/asf/accumulo.git


The following commit(s) were added to refs/heads/1.7 by this push:
     new e738351  ACCUMULO-4546 Create default log message for table error 
(#327)
e738351 is described below

commit e738351fcdf2359997814c2cf105875702799265
Author: Mark Owens <jmark...@gmail.com>
AuthorDate: Thu Nov 30 13:11:21 2017 -0500

    ACCUMULO-4546 Create default log message for table error (#327)
---
 .../accumulo/server/tables/TableManager.java       | 20 ++++++-
 .../IllegalTableTransitionExceptionTest.java       | 68 ++++++++++++++++++++++
 2 files changed, 87 insertions(+), 1 deletion(-)

diff --git 
a/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java 
b/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
index 0b23061..cb207ec 100644
--- 
a/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
+++ 
b/server/base/src/main/java/org/apache/accumulo/server/tables/TableManager.java
@@ -41,6 +41,7 @@ import org.apache.accumulo.server.client.HdfsZooInstance;
 import org.apache.accumulo.server.util.TablePropUtil;
 import org.apache.accumulo.server.zookeeper.ZooCache;
 import org.apache.accumulo.server.zookeeper.ZooReaderWriter;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.zookeeper.KeeperException;
 import org.apache.zookeeper.WatchedEvent;
 import org.apache.zookeeper.Watcher;
@@ -115,10 +116,22 @@ public class TableManager {
 
     final TableState oldState;
     final TableState newState;
+    final String message;
 
     public IllegalTableTransitionException(TableState oldState, TableState 
newState) {
+      this(oldState, newState, "");
+    }
+
+    public IllegalTableTransitionException(TableState oldState, TableState 
newState, String message) {
       this.oldState = oldState;
       this.newState = newState;
+
+      if (StringUtils.isNotEmpty(message))
+        this.message = message;
+      else {
+        String defaultMessage = "Error transitioning from " + oldState + " 
state to " + newState + " state";
+        this.message = defaultMessage;
+      }
     }
 
     public TableState getOldState() {
@@ -129,6 +142,11 @@ public class TableManager {
       return newState;
     }
 
+    @Override
+    public String getMessage() {
+      return message;
+    }
+
   }
 
   public synchronized void transitionTableState(final String tableId, final 
TableState newState) {
@@ -166,7 +184,7 @@ public class TableManager {
         }
       });
     } catch (Exception e) {
-      // ACCUMULO-3651 Changed level to error and added FATAL to message for 
slf4j compability
+      // ACCUMULO-3651 Changed level to error and added FATAL to message for 
slf4j compatibility
       log.error("FATAL Failed to transition table to state " + newState);
       throw new RuntimeException(e);
     }
diff --git 
a/server/base/src/test/java/org/apache/accumulo/server/tables/IllegalTableTransitionExceptionTest.java
 
b/server/base/src/test/java/org/apache/accumulo/server/tables/IllegalTableTransitionExceptionTest.java
new file mode 100644
index 0000000..d867ead
--- /dev/null
+++ 
b/server/base/src/test/java/org/apache/accumulo/server/tables/IllegalTableTransitionExceptionTest.java
@@ -0,0 +1,68 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.accumulo.server.tables;
+
+import static org.junit.Assert.assertEquals;
+
+import org.apache.accumulo.core.master.state.tables.TableState;
+import 
org.apache.accumulo.server.tables.TableManager.IllegalTableTransitionException;
+import org.junit.Test;
+
+public class IllegalTableTransitionExceptionTest {
+
+  final TableState oldState = TableState.ONLINE;
+  final TableState newState = TableState.OFFLINE;
+  final String defaultMsg = "Error transitioning from " + oldState + " state 
to " + newState + " state";
+
+  @Test
+  public void testIllegalTableTransitionExceptionMessage() {
+    String userMessage = null;
+    try {
+      userMessage = "User suppled message - Exception from " + oldState + " 
state to " + newState + " state";
+      throw new TableManager.IllegalTableTransitionException(oldState, 
newState, userMessage);
+    } catch (IllegalTableTransitionException e) {
+      assertEquals(userMessage, e.getMessage());
+    }
+  }
+
+  @Test
+  public void testIllegalTableTransitionExceptionDefaultMessage() {
+    try {
+      throw new TableManager.IllegalTableTransitionException(oldState, 
newState);
+    } catch (IllegalTableTransitionException e) {
+      assertEquals(defaultMsg, e.getMessage());
+    }
+  }
+
+  @Test
+  public void testIllegalTableTransitionExceptionWithNull() {
+    try {
+      throw new TableManager.IllegalTableTransitionException(oldState, 
newState, null);
+    } catch (IllegalTableTransitionException e) {
+      assertEquals(defaultMsg, e.getMessage());
+    }
+  }
+
+  @Test
+  public void testIllegalTableTransitionExceptionEmptyMessage() {
+    try {
+      throw new TableManager.IllegalTableTransitionException(oldState, 
newState, "");
+    } catch (IllegalTableTransitionException e) {
+      assertEquals(defaultMsg, e.getMessage());
+    }
+  }
+}

-- 
To stop receiving notification emails like this one, please contact
['"commits@accumulo.apache.org" <commits@accumulo.apache.org>'].

Reply via email to