You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by tf...@apache.org on 2017/05/12 23:39:08 UTC

[41/58] [abbrv] lucene-solr:jira/solr-10233: SOLR-10647: Move the V1 <-> V2 API mapping to SolrJ

SOLR-10647: Move the V1 <-> V2 API mapping to SolrJ


Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/ccec2b95
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/ccec2b95
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/ccec2b95

Branch: refs/heads/jira/solr-10233
Commit: ccec2b95eee1bc5c5147383f43b273fb74192505
Parents: 0184d6b
Author: Noble Paul <no...@apache.org>
Authored: Thu May 11 19:19:20 2017 +0930
Committer: Noble Paul <no...@apache.org>
Committed: Thu May 11 19:19:20 2017 +0930

----------------------------------------------------------------------
 .../handler/admin/BaseHandlerApiSupport.java    |  30 +---
 .../handler/admin/CollectionHandlerApi.java     | 113 +++++++--------
 .../handler/admin/ConfigSetsHandlerApi.java     |  66 ++++-----
 .../solr/handler/admin/CoreAdminHandlerApi.java | 108 ++++++---------
 .../solrj/request/CollectionApiMapping.java     | 138 ++++++++++++-------
 .../client/solrj/request/CoreApiMapping.java    |  43 +++---
 6 files changed, 236 insertions(+), 262 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ccec2b95/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java b/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java
index 6e2ec36..083ec33 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/BaseHandlerApiSupport.java
@@ -31,7 +31,7 @@ import org.apache.solr.api.Api;
 import org.apache.solr.api.ApiBag;
 import org.apache.solr.api.ApiSupport;
 import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.request.CollectionApiMapping;
+import org.apache.solr.client.solrj.request.CollectionApiMapping.CommandMeta;
 import org.apache.solr.client.solrj.request.CollectionApiMapping.V2EndPoint;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.SolrParams;
@@ -182,35 +182,13 @@ public abstract class BaseHandlerApiSupport implements ApiSupport {
 
   }
 
+  protected abstract Collection<ApiCommand> getCommands();
 
-  public static Collection<String> getParamNames(CommandOperation op, ApiCommand command) {
-    List<String> result = new ArrayList<>();
-    Object o = op.getCommandData();
-    if (o instanceof Map) {
-      Map map = (Map) o;
-      collectKeyNames(map, result, "");
-    }
-    return result;
-
-  }
-
-  public static void collectKeyNames(Map<String, Object> map, List<String> result, String prefix) {
-    for (Map.Entry<String, Object> e : map.entrySet()) {
-      if (e.getValue() instanceof Map) {
-        collectKeyNames((Map) e.getValue(), result, prefix + e.getKey() + ".");
-      } else {
-        result.add(prefix + e.getKey());
-      }
-    }
-  }
-
-  protected abstract List<ApiCommand> getCommands();
-
-  protected abstract List<V2EndPoint> getEndPoints();
+  protected abstract Collection<V2EndPoint> getEndPoints();
 
 
   public interface ApiCommand  {
-    CollectionApiMapping.CommandMeta meta();
+    CommandMeta meta();
 
     void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler) throws Exception;
   }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ccec2b95/solr/core/src/java/org/apache/solr/handler/admin/CollectionHandlerApi.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionHandlerApi.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionHandlerApi.java
index 8513e090..b2da158 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionHandlerApi.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionHandlerApi.java
@@ -18,27 +18,70 @@
 package org.apache.solr.handler.admin;
 
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.solr.client.solrj.request.CollectionApiMapping;
+import org.apache.solr.client.solrj.request.CollectionApiMapping.CommandMeta;
 import org.apache.solr.client.solrj.request.CollectionApiMapping.Meta;
 import org.apache.solr.client.solrj.request.CollectionApiMapping.V2EndPoint;
 import org.apache.solr.handler.admin.CollectionsHandler.CollectionOperation;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 
-import static org.apache.solr.handler.admin.CollectionsHandler.CollectionOperation.*;
-
 public class CollectionHandlerApi extends BaseHandlerApiSupport {
   final CollectionsHandler handler;
+  static Collection<ApiCommand> apiCommands = createCollMapping();
+
+  private static Collection<ApiCommand> createCollMapping() {
+    Map<Meta, ApiCommand> result = new EnumMap<>(Meta.class);
+
+    for (Meta meta : Meta.values()) {
+      for (CollectionOperation op : CollectionOperation.values()) {
+        if (op.action == meta.action) {
+          result.put(meta, new ApiCommand() {
+            @Override
+            public CommandMeta meta() {
+              return meta;
+            }
+
+            @Override
+            public void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler) throws Exception {
+              ((CollectionHandlerApi) apiHandler).handler.invokeAction(req, rsp, ((CollectionHandlerApi) apiHandler).handler.coreContainer, op.action, op);
+            }
+          });
+        }
+      }
+    }
+    result.put(Meta.GET_NODES, new ApiCommand() {
+      @Override
+      public CommandMeta meta() {
+        return Meta.GET_NODES;
+      }
+
+      @Override
+      public void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler) throws Exception {
+        rsp.add("nodes", ((CollectionHandlerApi) apiHandler).handler.coreContainer.getZkController().getClusterState().getLiveNodes());
+      }
+    });
+    for (Meta meta : Meta.values()) {
+      if(result.get(meta) == null){
+        throw new RuntimeException("No implementation for "+ meta.name());
+      }
+    }
+
+    return result.values();
+  }
 
   public CollectionHandlerApi(CollectionsHandler handler) {
     this.handler = handler;
   }
 
   @Override
-  protected List<ApiCommand> getCommands() {
-    return Arrays.asList(Cmd.values());
+  protected Collection<ApiCommand> getCommands() {
+    return apiCommands;
   }
 
   @Override
@@ -46,66 +89,4 @@ public class CollectionHandlerApi extends BaseHandlerApiSupport {
     return Arrays.asList(CollectionApiMapping.EndPoint.values());
   }
 
-
-  enum Cmd implements ApiCommand {
-    GET_COLLECTIONS(Meta.GET_COLLECTIONS,LIST_OP),
-    GET_CLUSTER(Meta.GET_CLUSTER,LIST_OP),
-    GET_CLUSTER_OVERSEER(Meta.GET_CLUSTER_OVERSEER,OVERSEERSTATUS_OP),
-    GET_CLUSTER_STATUS_CMD(Meta.GET_CLUSTER_STATUS_CMD,REQUESTSTATUS_OP),
-    DELETE_CLUSTER_STATUS(Meta.DELETE_CLUSTER_STATUS,DELETESTATUS_OP),
-    GET_A_COLLECTION(Meta.GET_A_COLLECTION,CLUSTERSTATUS_OP),
-    LIST_ALIASES(Meta.LIST_ALIASES,LISTALIASES_OP),
-    CREATE_COLLECTION(Meta.CREATE_COLLECTION, CREATE_OP),
-    DELETE_COLL(Meta.DELETE_COLL, DELETE_OP),
-    RELOAD_COLL(Meta.RELOAD_COLL, RELOAD_OP),
-    MODIFYCOLLECTION(Meta.MODIFYCOLLECTION, MODIFYCOLLECTION_OP),
-    MIGRATE_DOCS(Meta.MIGRATE_DOCS,MIGRATE_OP),
-    REBALANCELEADERS(Meta.REBALANCELEADERS, REBALANCELEADERS_OP),
-    CREATE_ALIAS(Meta.CREATE_ALIAS, CREATEALIAS_OP),
-    DELETE_ALIAS(Meta.DELETE_ALIAS, DELETEALIAS_OP),
-    CREATE_SHARD(Meta.CREATE_SHARD,CREATESHARD_OP),
-    SPLIT_SHARD(Meta.SPLIT_SHARD, SPLITSHARD_OP),
-    DELETE_SHARD(Meta.DELETE_SHARD,DELETESHARD_OP),
-    CREATE_REPLICA(Meta.CREATE_REPLICA,ADDREPLICA_OP),
-    DELETE_REPLICA(Meta.DELETE_REPLICA,DELETEREPLICA_OP),
-    SYNC_SHARD(Meta.SYNC_SHARD, SYNCSHARD_OP),
-    ADDREPLICAPROP(Meta.ADDREPLICAPROP, ADDREPLICAPROP_OP),
-    DELETEREPLICAPROP(Meta.DELETEREPLICAPROP, DELETEREPLICAPROP_OP),
-    ADDROLE(Meta.ADDROLE, ADDROLE_OP),
-    REMOVEROLE(Meta.REMOVEROLE, REMOVEROLE_OP),
-    CLUSTERPROP(Meta.CLUSTERPROP,CLUSTERPROP_OP),
-    BACKUP(Meta.BACKUP, BACKUP_OP),
-    RESTORE(Meta.RESTORE, RESTORE_OP),
-    GET_NODES(Meta.GET_NODES, null) {
-      @Override
-      public void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler) throws Exception {
-        rsp.add("nodes", ((CollectionHandlerApi) apiHandler).handler.coreContainer.getZkController().getClusterState().getLiveNodes());
-      }
-    },
-    FORCELEADER(Meta.FORCELEADER,FORCELEADER_OP),
-    SYNCSHARD(Meta.SYNCSHARD,SYNCSHARD_OP),
-    BALANCESHARDUNIQUE(Meta.BALANCESHARDUNIQUE,BALANCESHARDUNIQUE_OP)
-
-    ;
-
-    public final CollectionApiMapping.CommandMeta meta;
-
-    public final CollectionOperation target;
-
-    Cmd(CollectionApiMapping.CommandMeta meta, CollectionOperation target) {
-      this.meta = meta;
-      this.target = target;
-    }
-
-    @Override
-    public CollectionApiMapping.CommandMeta meta() {
-      return meta;
-    }
-
-    public void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler)
-        throws Exception {
-      ((CollectionHandlerApi) apiHandler).handler.invokeAction(req, rsp, ((CollectionHandlerApi) apiHandler).handler.coreContainer, target.action, target);
-    }
-  }
-
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ccec2b95/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandlerApi.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandlerApi.java b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandlerApi.java
index db396d3..a4138a2 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandlerApi.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandlerApi.java
@@ -18,7 +18,10 @@
 package org.apache.solr.handler.admin;
 
 import java.util.Arrays;
+import java.util.Collection;
+import java.util.EnumMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.solr.client.solrj.request.CollectionApiMapping;
 import org.apache.solr.client.solrj.request.CollectionApiMapping.ConfigSetMeta;
@@ -26,13 +29,39 @@ import org.apache.solr.handler.admin.ConfigSetsHandler.ConfigSetOperation;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 
-import static org.apache.solr.handler.admin.ConfigSetsHandler.ConfigSetOperation.CREATE_OP;
-import static org.apache.solr.handler.admin.ConfigSetsHandler.ConfigSetOperation.DELETE_OP;
-import static org.apache.solr.handler.admin.ConfigSetsHandler.ConfigSetOperation.LIST_OP;
-
 public class ConfigSetsHandlerApi extends BaseHandlerApiSupport {
 
   final ConfigSetsHandler configSetHandler;
+  static Collection<ApiCommand> apiCommands = createMapping();
+
+  private static Collection<ApiCommand> createMapping() {
+    Map<ConfigSetMeta, ApiCommand> result = new EnumMap<>(ConfigSetMeta.class);
+
+    for (ConfigSetMeta meta : ConfigSetMeta.values())
+      for (ConfigSetOperation op : ConfigSetOperation.values()) {
+        if (op.action == meta.action) {
+          result.put(meta, new ApiCommand() {
+            @Override
+            public CollectionApiMapping.CommandMeta meta() {
+              return meta;
+            }
+
+            @Override
+            public void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler) throws Exception {
+              ((ConfigSetsHandlerApi) apiHandler).configSetHandler.invokeAction(req, rsp, op.action);
+            }
+          });
+        }
+      }
+
+    for (ConfigSetMeta meta : ConfigSetMeta.values()) {
+      if(result.get(meta) == null){
+        throw new RuntimeException("No implementation for "+ meta.name());
+      }
+    }
+
+    return result.values();
+  }
 
   public ConfigSetsHandlerApi(ConfigSetsHandler configSetHandler) {
     this.configSetHandler = configSetHandler;
@@ -40,8 +69,8 @@ public class ConfigSetsHandlerApi extends BaseHandlerApiSupport {
 
 
   @Override
-  protected List<ApiCommand> getCommands() {
-    return Arrays.asList(Cmd.values());
+  protected Collection<ApiCommand> getCommands() {
+    return apiCommands;
   }
 
   @Override
@@ -49,29 +78,4 @@ public class ConfigSetsHandlerApi extends BaseHandlerApiSupport {
     return Arrays.asList(CollectionApiMapping.ConfigSetEndPoint.values());
   }
 
-  enum Cmd implements ApiCommand {
-    LIST(ConfigSetMeta.LIST, LIST_OP),
-    CREATE(ConfigSetMeta.CREATE, CREATE_OP),
-    DEL(ConfigSetMeta.DEL,DELETE_OP);
-
-    public ConfigSetMeta meta;
-
-    private final ConfigSetOperation op;
-
-    Cmd(ConfigSetMeta meta, ConfigSetOperation op) {
-      this.meta = meta;
-      this.op = op;
-    }
-
-    @Override
-    public CollectionApiMapping.CommandMeta meta() {
-      return meta;
-    }
-
-    @Override
-    public void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler) throws Exception {
-      ((ConfigSetsHandlerApi) apiHandler).configSetHandler.invokeAction(req, rsp, op.action);
-    }
-
-  }
 }

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ccec2b95/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandlerApi.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandlerApi.java b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandlerApi.java
index e9d8474..cb2623d 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandlerApi.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandlerApi.java
@@ -18,94 +18,66 @@
 package org.apache.solr.handler.admin;
 
 import java.util.Arrays;
-import java.util.List;
+import java.util.Collection;
+import java.util.EnumMap;
+import java.util.Map;
 
-import org.apache.solr.client.solrj.request.CollectionApiMapping;
+import org.apache.solr.client.solrj.request.CollectionApiMapping.CommandMeta;
 import org.apache.solr.client.solrj.request.CollectionApiMapping.V2EndPoint;
 import org.apache.solr.client.solrj.request.CoreApiMapping;
-import org.apache.solr.client.solrj.request.CoreApiMapping.Meta;
 import org.apache.solr.request.SolrQueryRequest;
 import org.apache.solr.response.SolrQueryResponse;
 
-import static org.apache.solr.handler.admin.CoreAdminOperation.CREATE_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.FORCEPREPAREFORLEADERSHIP_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.INVOKE_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.MERGEINDEXES_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.OVERSEEROP_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.PREPRECOVERY_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.REJOINLEADERELECTION_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.RELOAD_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.RENAME_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.REQUESTAPPLYUPDATES_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.REQUESTBUFFERUPDATES_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.REQUESTRECOVERY_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.REQUESTSTATUS_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.REQUESTSYNCSHARD_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.SPLIT_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.STATUS_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.SWAP_OP;
-import static org.apache.solr.handler.admin.CoreAdminOperation.UNLOAD_OP;
-
 public class CoreAdminHandlerApi extends BaseHandlerApiSupport {
   private final CoreAdminHandler handler;
-
-  public CoreAdminHandlerApi(CoreAdminHandler handler) {
-    this.handler = handler;
-  }
-
-  enum Cmd implements ApiCommand {
-    CREATE(Meta.CREATE, CREATE_OP),
-    UNLOAD(Meta.UNLOAD, UNLOAD_OP),
-    RELOAD(Meta.RELOAD, RELOAD_OP),
-    STATUS(Meta.STATUS, STATUS_OP),
-    SWAP(Meta.SWAP, SWAP_OP),
-    RENAME(Meta.RENAME, RENAME_OP),
-    MERGEINDEXES(Meta.MERGEINDEXES, MERGEINDEXES_OP),
-    SPLIT(Meta.SPLIT, SPLIT_OP),
-    PREPRECOVERY(Meta.PREPRECOVERY, PREPRECOVERY_OP),
-    REQUESTRECOVERY(Meta.REQUESTRECOVERY, REQUESTRECOVERY_OP),
-    REQUESTSYNCSHARD(Meta.REQUESTSYNCSHARD, REQUESTSYNCSHARD_OP),
-    REQUESTBUFFERUPDATES(Meta.REQUESTBUFFERUPDATES, REQUESTBUFFERUPDATES_OP),
-    REQUESTAPPLYUPDATES(Meta.REQUESTAPPLYUPDATES, REQUESTAPPLYUPDATES_OP),
-    REQUESTSTATUS(Meta.REQUESTSTATUS, REQUESTSTATUS_OP),
-    OVERSEEROP(Meta.OVERSEEROP, OVERSEEROP_OP),
-    REJOINLEADERELECTION(Meta.REJOINLEADERELECTION, REJOINLEADERELECTION_OP),
-    INVOKE(Meta.INVOKE, INVOKE_OP),
-    FORCEPREPAREFORLEADERSHIP(Meta.FORCEPREPAREFORLEADERSHIP, FORCEPREPAREFORLEADERSHIP_OP);
-
-    public final Meta meta;
-    public final CoreAdminOperation target;
-
-
-    Cmd(Meta meta, CoreAdminOperation target) {
-      this.meta = meta;
-      this.target = target;
+  static Collection<ApiCommand> apiCommands = createMapping();
+
+  private static Collection<ApiCommand> createMapping() {
+    Map<CoreApiMapping.Meta, ApiCommand> result = new EnumMap<>(CoreApiMapping.Meta.class);
+
+    for (CoreApiMapping.Meta meta : CoreApiMapping.Meta.values()) {
+
+      for (CoreAdminOperation op : CoreAdminOperation.values()) {
+        if (op.action == meta.action) {
+          result.put(meta, new ApiCommand() {
+            @Override
+            public CommandMeta meta() {
+              return meta;
+            }
+
+            @Override
+            public void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler) throws Exception {
+              op.execute(new CoreAdminHandler.CallInfo(((CoreAdminHandlerApi) apiHandler).handler,
+                  req,
+                  rsp,
+                  op));
+            }
+          });
+        }
+      }
     }
 
-
-    @Override
-    public CollectionApiMapping.CommandMeta meta() {
-      return meta;
+    for (CoreApiMapping.Meta meta : CoreApiMapping.Meta.values()) {
+      if (result.get(meta) == null) {
+        throw new RuntimeException("No implementation for " + meta.name());
+      }
     }
 
-    @Override
-    public void invoke(SolrQueryRequest req, SolrQueryResponse rsp, BaseHandlerApiSupport apiHandler) throws Exception {
-      target.execute(new CoreAdminHandler.CallInfo(((CoreAdminHandlerApi) apiHandler).handler,
-          req,
-          rsp,
-          target));
+    return result.values();
+  }
 
-    }
+  public CoreAdminHandlerApi(CoreAdminHandler handler) {
+    this.handler = handler;
   }
 
 
   @Override
-  protected List<ApiCommand> getCommands() {
-    return Arrays.asList(Cmd.values());
+  protected Collection<ApiCommand> getCommands() {
+    return apiCommands;
   }
 
   @Override
-  protected List<V2EndPoint> getEndPoints() {
+  protected Collection<V2EndPoint> getEndPoints() {
     return Arrays.asList(CoreApiMapping.EndPoint.values());
   }
 

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ccec2b95/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionApiMapping.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionApiMapping.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionApiMapping.java
index 9d7ec8a..e622c4b 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionApiMapping.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionApiMapping.java
@@ -26,12 +26,31 @@ import java.util.Map;
 
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.common.params.CollectionParams.CollectionAction;
+import org.apache.solr.common.params.ConfigSetParams.ConfigSetAction;
 import org.apache.solr.common.util.CommandOperation;
 import org.apache.solr.common.util.Utils;
 
 import static org.apache.solr.client.solrj.SolrRequest.METHOD.DELETE;
 import static org.apache.solr.client.solrj.SolrRequest.METHOD.GET;
 import static org.apache.solr.client.solrj.SolrRequest.METHOD.POST;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.ConfigSetEndPoint.CONFIG_COMMANDS;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.ConfigSetEndPoint.CONFIG_DEL;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.ConfigSetEndPoint.LIST_CONFIG;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.CLUSTER;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.CLUSTER_ALIASES;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.CLUSTER_CMD;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.CLUSTER_CMD_STATUS;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.CLUSTER_CMD_STATUS_DELETE;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.CLUSTER_NODES;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.COLLECTIONS;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.COLLECTIONS_COMMANDS;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.COLLECTION_STATE;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.PER_COLLECTION;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.PER_COLLECTION_PER_SHARD_COMMANDS;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.PER_COLLECTION_PER_SHARD_DELETE;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.PER_COLLECTION_PER_SHARD_PER_REPLICA_DELETE;
+import static org.apache.solr.client.solrj.request.CollectionApiMapping.EndPoint.PER_COLLECTION_SHARDS_COMMANDS;
+import static org.apache.solr.common.params.CollectionParams.CollectionAction.*;
 import static org.apache.solr.common.params.CommonParams.NAME;
 
 /** stores the mapping of v1 API parameters to v2 API parameters
@@ -41,16 +60,17 @@ import static org.apache.solr.common.params.CommonParams.NAME;
 public class CollectionApiMapping {
 
   public enum Meta implements CommandMeta {
-    GET_COLLECTIONS(EndPoint.COLLECTIONS, GET),
-    GET_CLUSTER(EndPoint.CLUSTER, GET,  "/cluster", null),
-    GET_CLUSTER_OVERSEER(EndPoint.CLUSTER, GET, "/cluster/overseer", null),
-    GET_CLUSTER_STATUS_CMD(EndPoint.CLUSTER_CMD_STATUS, GET ),
-    DELETE_CLUSTER_STATUS(EndPoint.CLUSTER_CMD_STATUS_DELETE, DELETE),
-    GET_A_COLLECTION(EndPoint.COLLECTION_STATE, GET),
-    LIST_ALIASES(EndPoint.CLUSTER_ALIASES, GET),
-    CREATE_COLLECTION(EndPoint.COLLECTIONS_COMMANDS,
+    GET_COLLECTIONS(COLLECTIONS, GET, LIST),
+    GET_CLUSTER(CLUSTER, GET, LIST, "/cluster", null),
+    GET_CLUSTER_OVERSEER(CLUSTER, GET, OVERSEERSTATUS, "/cluster/overseer", null),
+    GET_CLUSTER_STATUS_CMD(CLUSTER_CMD_STATUS, GET, REQUESTSTATUS),
+    DELETE_CLUSTER_STATUS(CLUSTER_CMD_STATUS_DELETE, DELETE, DELETESTATUS),
+    GET_A_COLLECTION(COLLECTION_STATE, GET, CLUSTERSTATUS),
+    LIST_ALIASES(CLUSTER_ALIASES, GET, LISTALIASES),
+    CREATE_COLLECTION(COLLECTIONS_COMMANDS,
         POST,
-        CollectionAction.CREATE.toLower(),
+        CREATE,
+        CREATE.toLower(),
         Utils.makeMap(
             "collection.configName", "config",
             "createNodeSet.shuffle", "shuffleNodes",
@@ -60,37 +80,45 @@ public class CollectionApiMapping {
 
     DELETE_COLL(EndPoint.PER_COLLECTION_DELETE,
         DELETE,
+        CollectionAction.DELETE,
         CollectionAction.DELETE.toLower(),
         Utils.makeMap(NAME, "collection")),
 
-    RELOAD_COLL(EndPoint.PER_COLLECTION,
+    RELOAD_COLL(PER_COLLECTION,
         POST,
-        CollectionAction.RELOAD.toLower(),
+        RELOAD,
+        RELOAD.toLower(),
         Utils.makeMap(NAME, "collection")),
-    MODIFYCOLLECTION(EndPoint.PER_COLLECTION,
+    MODIFY_COLLECTION(PER_COLLECTION,
         POST,
+        MODIFYCOLLECTION,
         "modify",null),
-    MIGRATE_DOCS(EndPoint.PER_COLLECTION,
+    MIGRATE_DOCS(PER_COLLECTION,
         POST,
+        MIGRATE,
         "migrate-docs",
         Utils.makeMap("split.key", "splitKey",
             "target.collection", "target",
             "forward.timeout", "forwardTimeout"
         )),
-    REBALANCELEADERS(EndPoint.PER_COLLECTION,
+    REBALANCE_LEADERS(PER_COLLECTION,
         POST,
+        REBALANCELEADERS,
         "rebalance-leaders", null),
-    CREATE_ALIAS(EndPoint.COLLECTIONS_COMMANDS,
+    CREATE_ALIAS(COLLECTIONS_COMMANDS,
         POST,
+        CREATEALIAS,
         "create-alias",
         null),
 
-    DELETE_ALIAS(EndPoint.COLLECTIONS_COMMANDS,
+    DELETE_ALIAS(COLLECTIONS_COMMANDS,
         POST,
+        DELETEALIAS,
         "delete-alias",
         null),
-    CREATE_SHARD(EndPoint.PER_COLLECTION_SHARDS_COMMANDS,
+    CREATE_SHARD(PER_COLLECTION_SHARDS_COMMANDS,
         POST,
+        CREATESHARD,
         "create",
         Utils.makeMap("createNodeSet", "nodeSet"),
         Utils.makeMap("coreProperties.", "property.")) {
@@ -100,60 +128,69 @@ public class CollectionApiMapping {
       }
     },
 
-    SPLIT_SHARD(EndPoint.PER_COLLECTION_SHARDS_COMMANDS,
+    SPLIT_SHARD(PER_COLLECTION_SHARDS_COMMANDS,
         POST,
+        SPLITSHARD,
         "split",
         Utils.makeMap(
             "split.key", "splitKey"),
         Utils.makeMap("coreProperties.", "property.")),
-    DELETE_SHARD(EndPoint.PER_COLLECTION_PER_SHARD_DELETE,
-        DELETE),
+    DELETE_SHARD(PER_COLLECTION_PER_SHARD_DELETE,
+        DELETE, DELETESHARD),
 
-    CREATE_REPLICA(EndPoint.PER_COLLECTION_SHARDS_COMMANDS,
+    CREATE_REPLICA(PER_COLLECTION_SHARDS_COMMANDS,
         POST,
+        ADDREPLICA,
         "add-replica",
         null,
         Utils.makeMap("coreProperties.", "property.")),
 
-    DELETE_REPLICA(EndPoint.PER_COLLECTION_PER_SHARD_PER_REPLICA_DELETE,
-        DELETE),
+    DELETE_REPLICA(PER_COLLECTION_PER_SHARD_PER_REPLICA_DELETE,
+        DELETE, DELETEREPLICA),
 
-    SYNC_SHARD(EndPoint.PER_COLLECTION_PER_SHARD_COMMANDS,
+    SYNC_SHARD(PER_COLLECTION_PER_SHARD_COMMANDS,
         POST,
+        CollectionAction.SYNCSHARD,
         "synch-shard",
         null),
-    ADDREPLICAPROP(EndPoint.PER_COLLECTION,
+    ADD_REPLICA_PROPERTY(PER_COLLECTION,
         POST,
+        CollectionAction.ADDREPLICAPROP,
         "add-replica-property",
         Utils.makeMap("property", "name", "property.value", "value")),
-    DELETEREPLICAPROP(EndPoint.PER_COLLECTION,
+    DELETE_REPLICA_PROPERTY(PER_COLLECTION,
         POST,
+        DELETEREPLICAPROP,
         "delete-replica-property",
         null),
-    ADDROLE(EndPoint.CLUSTER_CMD,
+    ADD_ROLE(CLUSTER_CMD,
         POST,
+        ADDROLE,
         "add-role",null),
-    REMOVEROLE(EndPoint.CLUSTER_CMD,
+    REMOVE_ROLE(CLUSTER_CMD,
         POST,
+        REMOVEROLE,
         "remove-role",null),
 
-    CLUSTERPROP(EndPoint.CLUSTER_CMD,
+    SET_CLUSTER_PROPERTY(CLUSTER_CMD,
         POST,
+        CLUSTERPROP,
         "set-property",null),
 
-    BACKUP(EndPoint.COLLECTIONS_COMMANDS,
+    BACKUP_COLLECTION(COLLECTIONS_COMMANDS,
         POST,
+        BACKUP,
         "backup-collection", null
     ),
-    RESTORE(EndPoint.COLLECTIONS_COMMANDS,
+    RESTORE_COLLECTION(COLLECTIONS_COMMANDS,
         POST,
+        RESTORE,
         "restore-collection",
         null
     ),
-    GET_NODES(EndPoint.CLUSTER_NODES, null),
-    FORCELEADER(EndPoint.PER_COLLECTION_PER_SHARD_COMMANDS,POST, "force-leader",null),
-    SYNCSHARD(EndPoint.PER_COLLECTION_PER_SHARD_COMMANDS,POST, "sync-shard",null),
-    BALANCESHARDUNIQUE(EndPoint.PER_COLLECTION, POST, "balance-shard-unique",null)
+    GET_NODES(CLUSTER_NODES, GET, null),
+    FORCE_LEADER(PER_COLLECTION_PER_SHARD_COMMANDS, POST, CollectionAction.FORCELEADER, "force-leader", null),
+    BALANCE_SHARD_UNIQUE(PER_COLLECTION, POST, BALANCESHARDUNIQUE,"balance-shard-unique" , null)
     ;
 
     public final String commandName;
@@ -163,24 +200,26 @@ public class CollectionApiMapping {
     public final Map<String, String> paramstoAttr;
     //mapping of old prefix to new for instance properties.a=val can be substituted with property:{a:val}
     public final Map<String, String> prefixSubstitutes;
+    public final CollectionAction action;
 
     public SolrRequest.METHOD getMethod() {
       return method;
     }
 
 
-    Meta(EndPoint endPoint, SolrRequest.METHOD method) {
-      this(endPoint, method,  null, null);
+    Meta(EndPoint endPoint, SolrRequest.METHOD method, CollectionAction action) {
+      this(endPoint, method, action, null, null);
     }
 
-    Meta(EndPoint endPoint, SolrRequest.METHOD method,
+    Meta(EndPoint endPoint, SolrRequest.METHOD method, CollectionAction action,
          String commandName, Map paramstoAttr) {
-      this(endPoint, method,  commandName, paramstoAttr, Collections.EMPTY_MAP);
+      this(endPoint, method, action, commandName, paramstoAttr, Collections.EMPTY_MAP);
 
     }
 
-    Meta(EndPoint endPoint, SolrRequest.METHOD method,
+    Meta(EndPoint endPoint, SolrRequest.METHOD method, CollectionAction action,
          String commandName, Map paramstoAttr, Map prefixSubstitutes) {
+      this.action = action;
       this.commandName = commandName;
       this.endPoint = endPoint;
       this.method = method;
@@ -273,22 +312,21 @@ public class CollectionApiMapping {
   }
 
   public enum ConfigSetMeta implements CommandMeta {
-    LIST(ConfigSetEndPoint.LIST_CONFIG, GET),
-    CREATE(ConfigSetEndPoint.CONFIG_COMMANDS, POST, "create"),
-    DEL(ConfigSetEndPoint.CONFIG_DEL,  DELETE)
+    LIST(LIST_CONFIG, GET,null, ConfigSetAction.LIST),
+    CREATE(CONFIG_COMMANDS, POST, "create", ConfigSetAction.CREATE),
+    DEL(CONFIG_DEL,  DELETE, null, ConfigSetAction.DELETE)
     ;
-    private final ConfigSetEndPoint endPoint;
-    private final SolrRequest.METHOD method;
-    private final String cmdName;
+    public final ConfigSetEndPoint endPoint;
+    public final SolrRequest.METHOD method;
+    public final String cmdName;
+    public final ConfigSetAction action;
 
-    ConfigSetMeta(ConfigSetEndPoint endPoint, SolrRequest.METHOD method) {
-      this(endPoint, method, null);
-    }
 
-    ConfigSetMeta(ConfigSetEndPoint endPoint, SolrRequest.METHOD method, String cmdName) {
+    ConfigSetMeta(ConfigSetEndPoint endPoint, SolrRequest.METHOD method, String cmdName, ConfigSetAction action) {
       this.cmdName = cmdName;
       this.endPoint = endPoint;
       this.method = method;
+      this.action = action;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/ccec2b95/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java
index c7e20f9..febd384 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreApiMapping.java
@@ -19,7 +19,6 @@ package org.apache.solr.client.solrj.request;
 
 
 import java.util.Collections;
-import java.util.Locale;
 import java.util.Map;
 
 import org.apache.solr.client.solrj.SolrRequest;
@@ -41,36 +40,38 @@ import static org.apache.solr.client.solrj.request.CoreApiMapping.EndPoint.PER_C
  */
 public class CoreApiMapping {
   public enum Meta implements CommandMeta {
-    CREATE(CORES_COMMANDS, POST, CoreAdminAction.CREATE, Utils.makeMap("config", "configSet")),
-    UNLOAD(PER_CORE_COMMANDS, POST, CoreAdminAction.UNLOAD, null),
-    RELOAD(PER_CORE_COMMANDS, POST, CoreAdminAction.RELOAD, null),
-    STATUS(CORES_STATUS, GET, CoreAdminAction.STATUS, null),
-    SWAP(PER_CORE_COMMANDS, POST, CoreAdminAction.SWAP, Utils.makeMap("other", "with")),
-    RENAME(PER_CORE_COMMANDS, POST, CoreAdminAction.RENAME, null),
-    MERGEINDEXES(PER_CORE_COMMANDS, POST, "merge-indexes", null),
-    SPLIT(PER_CORE_COMMANDS, POST, CoreAdminAction.SPLIT, Utils.makeMap("split.key", "splitKey")),
-    PREPRECOVERY(PER_CORE_COMMANDS, POST, "prep-recovery", null),
-    REQUESTRECOVERY(PER_CORE_COMMANDS, POST, CoreAdminAction.REQUESTRECOVERY, null),
-    REQUESTSYNCSHARD(PER_CORE_COMMANDS, POST, "request-sync-shard", null),
-    REQUESTBUFFERUPDATES(PER_CORE_COMMANDS, POST, "request-buffer-updates", null),
-    REQUESTAPPLYUPDATES(PER_CORE_COMMANDS, POST, "request-apply-updates", null),
-    REQUESTSTATUS(PER_CORE_COMMANDS, POST, CoreAdminAction.REQUESTSTATUS, null),
-    OVERSEEROP(NODEAPIS, POST, "overseer-op", null),
-    REJOINLEADERELECTION(NODEAPIS, POST, "rejoin-leader-election", null),
-    INVOKE(NODEINVOKE, GET, CoreAdminAction.INVOKE, null),
-    FORCEPREPAREFORLEADERSHIP(PER_CORE_COMMANDS, POST, "force-prepare-for-leadership", null);
+    CREATE(CORES_COMMANDS, POST, CoreAdminAction.CREATE, "create", Utils.makeMap("config", "configSet")),
+    UNLOAD(PER_CORE_COMMANDS, POST, CoreAdminAction.UNLOAD, "unload", null),
+    RELOAD(PER_CORE_COMMANDS, POST, CoreAdminAction.RELOAD, "reload", null),
+    STATUS(CORES_STATUS, GET, CoreAdminAction.STATUS, "status", null),
+    SWAP(PER_CORE_COMMANDS, POST, CoreAdminAction.SWAP, "swap", Utils.makeMap("other", "with")),
+    RENAME(PER_CORE_COMMANDS, POST, CoreAdminAction.RENAME, "rename", null),
+    MERGEINDEXES(PER_CORE_COMMANDS, POST, CoreAdminAction.MERGEINDEXES, "merge-indexes", null),
+    SPLIT(PER_CORE_COMMANDS, POST, CoreAdminAction.SPLIT, "split", Utils.makeMap("split.key", "splitKey")),
+    PREPRECOVERY(PER_CORE_COMMANDS, POST, CoreAdminAction.PREPRECOVERY, "prep-recovery", null),
+    REQUESTRECOVERY(PER_CORE_COMMANDS, POST, CoreAdminAction.REQUESTRECOVERY, "request-recovery", null),
+    REQUESTSYNCSHARD(PER_CORE_COMMANDS, POST, CoreAdminAction.REQUESTSYNCSHARD, "request-sync-shard", null),
+    REQUESTBUFFERUPDATES(PER_CORE_COMMANDS, POST, CoreAdminAction.REQUESTBUFFERUPDATES, "request-buffer-updates", null),
+    REQUESTAPPLYUPDATES(PER_CORE_COMMANDS, POST, CoreAdminAction.REQUESTAPPLYUPDATES, "request-apply-updates", null),
+    REQUESTSTATUS(PER_CORE_COMMANDS, GET, CoreAdminAction.REQUESTSTATUS, "request-status", null),/*TODO*/
+    OVERSEEROP(NODEAPIS, POST, CoreAdminAction.OVERSEEROP, "overseer-op", null),
+    REJOINLEADERELECTION(NODEAPIS, POST, CoreAdminAction.REJOINLEADERELECTION, "rejoin-leader-election", null),
+    INVOKE(NODEINVOKE, GET, CoreAdminAction.INVOKE,"invoke",  null),
+    FORCEPREPAREFORLEADERSHIP(PER_CORE_COMMANDS, POST, CoreAdminAction.FORCEPREPAREFORLEADERSHIP, "force-prepare-for-leadership", null);
 
     public final String commandName;
     public final EndPoint endPoint;
     public final SolrRequest.METHOD method;
+    public final CoreAdminAction action;
     public final Map<String, String> paramstoAttr;
 
-    Meta(EndPoint endPoint, SolrRequest.METHOD method, Object commandName,
+    Meta(EndPoint endPoint, SolrRequest.METHOD method, CoreAdminAction action, String commandName,
          Map paramstoAttr) {
-      this.commandName = commandName.toString().toLowerCase(Locale.ROOT);
+      this.commandName = commandName;
       this.endPoint = endPoint;
       this.method = method;
       this.paramstoAttr = paramstoAttr == null ? Collections.EMPTY_MAP : Collections.unmodifiableMap(paramstoAttr);
+      this.action = action;
     }
 
     @Override