Index: src/java/org/apache/hadoop/hbase/rest/TableHandler.java =================================================================== --- src/java/org/apache/hadoop/hbase/rest/TableHandler.java (revision 685614) +++ src/java/org/apache/hadoop/hbase/rest/TableHandler.java (working copy) @@ -78,15 +78,15 @@ public void doPost(HttpServletRequest request, HttpServletResponse response, String[] pathSegments) throws ServletException, IOException { - if (pathSegments.length == 1) { + if (pathSegments.length == 0 || pathSegments[0].length() <= 0) { // if it's a creation operation putTable(request, response, pathSegments); } else { // if it's a disable operation or enable operation - String tableName = pathSegments[1]; - if (pathSegments[2].toLowerCase().equals(DISABLE)) { + String tableName = pathSegments[0]; + if (pathSegments[1].toLowerCase().equals(DISABLE)) { admin.disableTable(tableName); - } else if (pathSegments[2].toLowerCase().equals(ENABLE)) { + } else if (pathSegments[1].toLowerCase().equals(ENABLE)) { admin.enableTable(tableName); } response.setStatus(202); @@ -240,7 +240,7 @@ private void deleteTable(HttpServletRequest request, HttpServletResponse response, String[] pathSegments) throws IOException { - String tableName = pathSegments[1]; + String tableName = pathSegments[0]; admin.deleteTable(tableName); response.setStatus(202); } @@ -302,7 +302,7 @@ } try { - String tableName = pathSegments[1]; + String tableName = pathSegments[0]; NodeList columnfamily_nodes = doc.getElementsByTagName("columnfamily"); for (int i = 0; i < columnfamily_nodes.getLength(); i++) { Index: src/java/org/apache/hadoop/hbase/rest/Dispatcher.java =================================================================== --- src/java/org/apache/hadoop/hbase/rest/Dispatcher.java (revision 685614) +++ src/java/org/apache/hadoop/hbase/rest/Dispatcher.java (working copy) @@ -65,7 +65,6 @@ private RowHandler rowHandler; private ScannerHandler scannerHandler; - private static final String TABLES = "tables"; private static final String SCANNER = "scanner"; private static final String ROW = "row"; @@ -117,12 +116,13 @@ throws IOException, ServletException { String [] pathSegments = getPathSegments(request); - if (pathSegments.length == 1 && pathSegments[0].toLowerCase().equals(TABLES)) { + if (pathSegments.length == 0 || pathSegments[0].length() <= 0) { + // if it was a root request, it must be a create table request tableHandler.doPost(request, response, pathSegments); return; } else { // there should be at least two path segments (table name and row or - // scanner) + // scanner or disable/enable operation) if (pathSegments.length >= 2 && pathSegments[0].length() > 0) { if (pathSegments[1].toLowerCase().equals(SCANNER) && pathSegments.length >= 2) { @@ -132,8 +132,8 @@ && pathSegments.length >= 3) { rowHandler.doPost(request, response, pathSegments); return; - } else if (pathSegments[0].toLowerCase().equals(TABLES) && pathSegments[1].length() > 0 - && (pathSegments[2].toLowerCase().equals(TableHandler.DISABLE) || pathSegments[2].toLowerCase().equals(TableHandler.ENABLE))) { + } else if ((pathSegments[1].toLowerCase().equals(TableHandler.DISABLE) || pathSegments[1].toLowerCase().equals(TableHandler.ENABLE)) + && pathSegments.length == 2) { tableHandler.doPost(request, response, pathSegments); return; } @@ -147,12 +147,13 @@ protected void doPut(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - // Equate PUT with a POST. String [] pathSegments = getPathSegments(request); - if (pathSegments.length == 2 && pathSegments[0].toLowerCase().equals(TABLES) && pathSegments[1].length() > 0) { + if (pathSegments.length == 1 && pathSegments[0].length() > 0) { + // if it has only table name tableHandler.doPut(request, response, pathSegments); } else { + // Equate PUT with a POST. doPost(request, response); } } @@ -162,7 +163,8 @@ throws IOException, ServletException { String [] pathSegments = getPathSegments(request); - if (pathSegments.length == 2 && pathSegments[0].toLowerCase().equals(TABLES) && pathSegments[1].length() > 0) { + if (pathSegments.length == 1 && pathSegments[0].length() > 0) { + // if it only has only table name tableHandler.doDelete(request, response, pathSegments); return; } else if (pathSegments.length >= 3 && pathSegments[0].length() > 0) { Index: src/java/org/apache/hadoop/hbase/rest/ScannerHandler.java =================================================================== --- src/java/org/apache/hadoop/hbase/rest/ScannerHandler.java (revision 685614) +++ src/java/org/apache/hadoop/hbase/rest/ScannerHandler.java (working copy) @@ -23,8 +23,6 @@ import java.net.URLDecoder; import java.util.HashMap; import java.util.Map; -import java.util.SortedMap; -import java.util.TreeMap; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; @@ -39,7 +37,6 @@ import org.apache.hadoop.hbase.util.JenkinsHash; import org.apache.hadoop.hbase.io.Cell; import org.apache.hadoop.hbase.io.RowResult; -import org.apache.hadoop.io.Text; import org.mortbay.servlet.MultiPartResponse; import org.znerd.xmlenc.XMLOutputter; Index: src/java/org/apache/hadoop/hbase/rest/GenericHandler.java =================================================================== --- src/java/org/apache/hadoop/hbase/rest/GenericHandler.java (revision 685614) +++ src/java/org/apache/hadoop/hbase/rest/GenericHandler.java (working copy) @@ -55,7 +55,6 @@ protected static final String CONTENT_TYPE = "content-type"; protected static final String ROW = "row"; protected static final String REGIONS = "regions"; - protected static final String TABLES = "tables"; protected final Log LOG = LogFactory.getLog(this.getClass());