You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by va...@apache.org on 2016/02/11 02:19:53 UTC

lucene-solr git commit: SOLR-8534: Fix SolrJ APIs to add async support

Repository: lucene-solr
Updated Branches:
  refs/heads/master 70e61fd9e -> 9985a0966


SOLR-8534: Fix SolrJ APIs to add async support


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

Branch: refs/heads/master
Commit: 9985a0966ba33f78b0889b00cd81cd6c5a858111
Parents: 70e61fd
Author: Varun Thacker <va...@gmail.com>
Authored: Wed Feb 10 16:28:13 2016 -0800
Committer: Varun Thacker <va...@gmail.com>
Committed: Wed Feb 10 16:53:52 2016 -0800

----------------------------------------------------------------------
 .../solrj/request/CollectionAdminRequest.java   | 250 +++++++++++--------
 1 file changed, 150 insertions(+), 100 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/9985a096/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
index 4ae7fe8..e3446f7 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
@@ -45,7 +45,6 @@ import java.util.Properties;
 public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q>> extends SolrRequest<CollectionAdminResponse> {
 
   protected CollectionAction action = null;
-  protected String asyncId;
 
   private static String PROPERTY_PREFIX = "property.";
 
@@ -64,24 +63,12 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
 
   protected abstract Q getThis();
 
-  public Q setAsyncId(String asyncId) {
-    this.asyncId = asyncId;
-    return getThis();
-  }
-
-  public String getAsyncId() {
-    return asyncId;
-  }
-
   @Override
   public SolrParams getParams() {
     if (action == null) {
       throw new RuntimeException( "no action specified!" );
     }
     ModifiableSolrParams params = new ModifiableSolrParams();
-    if (asyncId != null) {
-      params.set(CommonAdminParams.ASYNC, asyncId);
-    }
     params.set(CoreAdminParams.ACTION, action.toString());
     return params;
   }
@@ -95,7 +82,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   protected CollectionAdminResponse createResponse(SolrClient client) {
     return new CollectionAdminResponse();
   }
-  
+
   protected void addProperties(ModifiableSolrParams params, Properties props) {
     Iterator<Map.Entry<Object, Object>> iter = props.entrySet().iterator();
     while(iter.hasNext()) {
@@ -106,6 +93,28 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
     }
   }
 
+  protected abstract static class AsyncCollectionAdminRequest <T extends CollectionAdminRequest<T>> extends CollectionAdminRequest<T> {
+    protected String asyncId = null;
+
+    public final T setAsyncId(String asyncId) {
+      this.asyncId = asyncId;
+      return getThis();
+    }
+
+    public String getAsyncId() {
+      return asyncId;
+    }
+
+    @Override
+    public SolrParams getParams() {
+      ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
+      if (asyncId != null) {
+        params.set(CommonAdminParams.ASYNC, asyncId);
+      }
+      return params;
+    }
+  }
+
   //---------------------------------------------------------------------------------------
   //
   //---------------------------------------------------------------------------------------
@@ -130,6 +139,28 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
     }
   }
 
+  protected abstract static class CollectionSpecificAsyncAdminRequest<T extends CollectionAdminRequest<T>> extends CollectionSpecificAdminRequest<T> {
+    protected String asyncId = null;
+
+    public final T setAsyncId(String asyncId) {
+      this.asyncId = asyncId;
+      return getThis();
+    }
+
+    public String getAsyncId() {
+      return asyncId;
+    }
+
+    @Override
+    public SolrParams getParams() {
+      ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
+      if (asyncId != null) {
+        params.set(CommonAdminParams.ASYNC, asyncId);
+      }
+      return params;
+    }
+  }
+
   protected abstract static class CollectionShardAdminRequest <T extends CollectionAdminRequest<T>> extends CollectionAdminRequest<T> {
     protected String shardName = null;
     protected String collection = null;
@@ -147,7 +178,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       this.shardName = shard;
       return getThis();
     }
-    
+
     public String getShardName() {
       return this.shardName;
     }
@@ -157,9 +188,6 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
       params.set(CoreAdminParams.COLLECTION, collection);
       params.set(CoreAdminParams.SHARD, shardName);
-      if (asyncId != null) {
-        params.set(CommonAdminParams.ASYNC, asyncId);
-      }
       return params;
     }
 
@@ -171,11 +199,32 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return params;
     }
   }
-  
-  protected abstract static class CollectionAdminRoleRequest <T extends CollectionAdminRequest<T>> extends CollectionAdminRequest<T> {
+
+  protected abstract static class CollectionShardAsyncAdminRequest<T extends CollectionAdminRequest<T>> extends CollectionShardAdminRequest<T> {
+    protected String asyncId = null;
+
+    public final T setAsyncId(String asyncId) {
+      this.asyncId = asyncId;
+      return getThis();
+    }
+
+    public String getAsyncId() {
+      return asyncId;
+    }
+
+    @Override
+    public SolrParams getParams() {
+      ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
+      if (asyncId != null) {
+        params.set(CommonAdminParams.ASYNC, asyncId);
+      }
+      return params;
+    }
+  }
+
+  protected abstract static class CollectionAdminRoleRequest <T extends CollectionAdminRequest<T>> extends AsyncCollectionAdminRequest<T> {
     protected String node;
     protected String role;
-
     public T setNode(String node) {
       this.node = node;
       return getThis();
@@ -204,10 +253,10 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
 
   }
 
-  /** Specific Collection API call implementations **/ 
-  
+  /** Specific Collection API call implementations **/
+
   // CREATE request
-  public static class Create extends CollectionSpecificAdminRequest<Create> {
+  public static class Create extends CollectionSpecificAsyncAdminRequest<Create> {
     protected String configName = null;
     protected String createNodeSet = null;
     protected String routerName;
@@ -298,7 +347,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // RELOAD request
-  public static class Reload extends CollectionSpecificAdminRequest<Reload> {
+  public static class Reload extends CollectionSpecificAsyncAdminRequest<Reload> {
     public Reload() {
       action = CollectionAction.RELOAD;
     }
@@ -316,7 +365,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // DELETE request
-  public static class Delete extends CollectionSpecificAdminRequest<Delete> {
+  public static class Delete extends CollectionSpecificAsyncAdminRequest<Delete> {
 
     public Delete() {
       action = CollectionAction.DELETE;
@@ -335,7 +384,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // CREATESHARD request
-  public static class CreateShard extends CollectionShardAdminRequest<CreateShard> {
+  public static class CreateShard extends CollectionShardAsyncAdminRequest<CreateShard> {
     protected String nodeSet;
     protected Properties properties;
 
@@ -380,10 +429,10 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // SPLITSHARD request
-  public static class SplitShard extends CollectionShardAdminRequest<SplitShard> {
+  public static class SplitShard extends CollectionShardAsyncAdminRequest<SplitShard> {
     protected String ranges;
     protected String splitKey;
-    
+
     private Properties properties;
 
     public SplitShard() {
@@ -397,11 +446,11 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       this.splitKey = splitKey;
       return this;
     }
-    
+
     public String getSplitKey() {
       return this.splitKey;
     }
-    
+
     public Properties getProperties() {
       return properties;
     }
@@ -410,7 +459,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       this.properties = properties;
       return this;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
@@ -418,7 +467,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
 
       if(splitKey != null)
         params.set("split.key", this.splitKey);
-      
+
       if(properties != null) {
         addProperties(params, properties);
       }
@@ -432,7 +481,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // DELETESHARD request
-  public static class DeleteShard extends CollectionShardAdminRequest<DeleteShard> {
+  public static class DeleteShard extends CollectionShardAsyncAdminRequest<DeleteShard> {
     public DeleteShard() {
       action = CollectionAction.DELETESHARD;
     }
@@ -442,7 +491,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return this;
     }
   }
-  
+
   // FORCELEADER request
   public static class ForceLeader extends CollectionShardAdminRequest<ForceLeader> {
 
@@ -531,7 +580,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // CREATEALIAS request
-  public static class CreateAlias extends CollectionAdminRequest<CreateAlias> {
+  public static class CreateAlias extends AsyncCollectionAdminRequest<CreateAlias> {
     protected String aliasName;
     protected String aliasedCollections;
 
@@ -547,12 +596,12 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
     public String getAliasName() {
       return aliasName;
     }
-    
+
     public CreateAlias setAliasedCollections(String alias) {
       this.aliasedCollections = alias;
       return this;
     }
-    
+
     public String getAliasedCollections() {
       return this.aliasedCollections;
     }
@@ -565,7 +614,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
     public void setCollectionName(String aliasName) {
       this.aliasName = aliasName;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = (ModifiableSolrParams) super.getParams();
@@ -581,18 +630,18 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // DELETEALIAS request
-  public static class DeleteAlias extends CollectionAdminRequest<DeleteAlias> {
+  public static class DeleteAlias extends AsyncCollectionAdminRequest<DeleteAlias> {
     protected String aliasName;
-    
+
     public DeleteAlias() {
       action = CollectionAction.DELETEALIAS;
     }
-    
+
     public DeleteAlias setAliasName(String aliasName) {
       this.aliasName = aliasName;
       return this;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
@@ -607,7 +656,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // ADDREPLICA request
-  public static class AddReplica extends CollectionShardAdminRequest<AddReplica> {
+  public static class AddReplica extends CollectionShardAsyncAdminRequest<AddReplica> {
     protected String node;
     protected String routeKey;
     protected String instanceDir;
@@ -695,10 +744,10 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // DELETEREPLICA request
-  public static class DeleteReplica extends CollectionShardAdminRequest<DeleteReplica> {
+  public static class DeleteReplica extends CollectionShardAsyncAdminRequest<DeleteReplica> {
     protected String replica;
     protected Boolean onlyIfDown;
-    
+
     public DeleteReplica() {
       action = CollectionAction.DELETEREPLICA;
     }
@@ -711,21 +760,21 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
     public String getReplica() {
       return this.replica;
     }
-    
+
     public DeleteReplica setOnlyIfDown(boolean onlyIfDown) {
       this.onlyIfDown = onlyIfDown;
       return this;
     }
-    
+
     public Boolean getOnlyIfDown() {
       return this.onlyIfDown;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
       params.set(ZkStateReader.REPLICA_PROP, this.replica);
-      
+
       if (onlyIfDown != null) {
         params.set("onlyIfDown", onlyIfDown);
       }
@@ -737,16 +786,16 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return this;
     }
   }
-  
+
   // CLUSTERPROP request
   public static class ClusterProp extends CollectionAdminRequest<ClusterProp> {
     private String propertyName;
     private String propertyValue;
-    
+
     public ClusterProp() {
       this.action = CollectionAction.CLUSTERPROP;
     }
-    
+
     public ClusterProp setPropertyName(String propertyName) {
       this.propertyName = propertyName;
       return this;
@@ -760,17 +809,17 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       this.propertyValue = propertyValue;
       return this;
     }
-    
+
     public String getPropertyValue() {
       return this.propertyValue;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
       params.add(CoreAdminParams.NAME, propertyName);
       params.add("val", propertyValue);
-      
+
       return params;
     }
 
@@ -779,19 +828,19 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return this;
     }
   }
-  
+
   // MIGRATE request
-  public static class Migrate extends CollectionAdminRequest<Migrate> {
+  public static class Migrate extends AsyncCollectionAdminRequest<Migrate> {
     private String collection;
     private String targetCollection;
     private String splitKey;
     private Integer forwardTimeout;
     private Properties properties;
-    
+
     public Migrate() {
       action = CollectionAction.MIGRATE;
     }
-    
+
     public Migrate setCollectionName(String collection) {
       this.collection = collection;
       return this;
@@ -800,43 +849,43 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
     public String getCollectionName() {
       return collection;
     }
-    
+
     public Migrate setTargetCollection(String targetCollection) {
       this.targetCollection = targetCollection;
       return this;
     }
-    
+
     public String getTargetCollection() {
       return this.targetCollection;
     }
-    
+
     public Migrate setSplitKey(String splitKey) {
       this.splitKey = splitKey;
       return this;
     }
-    
+
     public String getSplitKey() {
       return this.splitKey;
     }
-    
+
     public Migrate setForwardTimeout(int forwardTimeout) {
       this.forwardTimeout = forwardTimeout;
       return this;
     }
-    
+
     public Integer getForwardTimeout() {
       return this.forwardTimeout;
     }
-    
+
     public Migrate setProperties(Properties properties) {
       this.properties = properties;
       return this;
     }
-    
+
     public Properties getProperties() {
       return this.properties;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
@@ -849,7 +898,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       if (properties != null) {
         addProperties(params, properties);
       }
-      
+
       return params;
     }
 
@@ -858,7 +907,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return this;
     }
   }
-  
+
   // ADDROLE request
   public static class AddRole extends CollectionAdminRoleRequest<AddRole> {
     public AddRole() {
@@ -882,9 +931,10 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return this;
     }
   }
-  
+
   // OVERSEERSTATUS request
-  public static class OverseerStatus extends CollectionAdminRequest<OverseerStatus> {
+  public static class OverseerStatus extends AsyncCollectionAdminRequest<OverseerStatus> {
+
     public OverseerStatus () {
       action = CollectionAction.OVERSEERSTATUS;
     }
@@ -897,29 +947,29 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
 
   // CLUSTERSTATUS request
   public static class ClusterStatus extends CollectionAdminRequest<ClusterStatus> {
-    
+
     protected String shardName = null;
     protected String collection = null;
     protected String routeKey = null;
-    
+
     public ClusterStatus () {
       action = CollectionAction.CLUSTERSTATUS;
     }
-    
+
     public ClusterStatus setCollectionName(String collectionName) {
       this.collection = collectionName;
       return this;
     }
-    
+
     public String getCollectionName() {
       return collection;
     }
-    
+
     public ClusterStatus setShardName(String shard) {
       this.shardName = shard;
       return this;
     }
-    
+
     public String getShardName() {
       return this.shardName;
     }
@@ -965,14 +1015,14 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return this;
     }
   }
-  
+
   // ADDREPLICAPROP request
-  public static class AddReplicaProp extends CollectionShardAdminRequest<AddReplicaProp> {
+  public static class AddReplicaProp extends CollectionShardAsyncAdminRequest<AddReplicaProp> {
     private String replica;
     private String propertyName;
     private String propertyValue;
     private Boolean shardUnique;
-    
+
     public AddReplicaProp() {
       action = CollectionAction.ADDREPLICAPROP;
     }
@@ -1012,18 +1062,18 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       this.shardUnique = shardUnique;
       return this;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
       params.set(CoreAdminParams.REPLICA, replica);
       params.set("property", propertyName);
       params.set("property.value", propertyValue);
-      
+
       if (shardUnique != null) {
         params.set("shardUnique", shardUnique);
       }
-      
+
       return params;
     }
 
@@ -1032,16 +1082,16 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return this;
     }
   }
-  
+
   // DELETEREPLICAPROP request
-  public static class DeleteReplicaProp extends CollectionShardAdminRequest<DeleteReplicaProp> {
+  public static class DeleteReplicaProp extends CollectionShardAsyncAdminRequest<DeleteReplicaProp> {
     private String replica;
     private String propertyName;
 
     public DeleteReplicaProp() {
       this.action = CollectionAction.DELETEREPLICAPROP;
     }
-    
+
     public String getReplica() {
       return replica;
     }
@@ -1059,7 +1109,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       this.propertyName = propertyName;
       return this;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
@@ -1075,7 +1125,7 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
   }
 
   // MIGRATECLUSTERSTATE request
-  public static class MigrateClusterState extends CollectionShardAdminRequest<MigrateClusterState> {
+  public static class MigrateClusterState extends CollectionShardAsyncAdminRequest<MigrateClusterState> {
 
     public MigrateClusterState() {
       this.action = CollectionAction.MIGRATESTATEFORMAT;
@@ -1096,18 +1146,18 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       return this;
     }
   }
-  
+
   // BALANCESHARDUNIQUE request
-  public static class BalanceShardUnique extends CollectionAdminRequest<BalanceShardUnique> {
-    private String collection;
-    private String propertyName;
-    private Boolean onlyActiveNodes;
-    private Boolean shardUnique;
-    
+  public static class BalanceShardUnique extends AsyncCollectionAdminRequest<BalanceShardUnique> {
+    protected String collection;
+    protected String propertyName;
+    protected Boolean onlyActiveNodes;
+    protected Boolean shardUnique;
+
     public BalanceShardUnique() {
       this.action = CollectionAction.BALANCESHARDUNIQUE;
     }
-    
+
     public String getPropertyName() {
       return propertyName;
     }
@@ -1139,11 +1189,11 @@ public abstract class CollectionAdminRequest <Q extends CollectionAdminRequest<Q
       this.collection = collection;
       return this;
     }
-    
+
     public String getCollection() {
       return collection;
     }
-    
+
     @Override
     public SolrParams getParams() {
       ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());