You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by gc...@apache.org on 2015/10/05 22:54:18 UTC
svn commit: r1706919 - in /lucene/dev/branches/branch_5x/solr: ./
core/src/java/org/apache/solr/handler/admin/
core/src/test/org/apache/solr/cloud/
solrj/src/java/org/apache/solr/client/solrj/request/
solrj/src/java/org/apache/solr/client/solrj/respons...
Author: gchanan
Date: Mon Oct 5 20:54:17 2015
New Revision: 1706919
URL: http://svn.apache.org/viewvc?rev=1706919&view=rev
Log:
SOLR-7995: Add a LIST command to ConfigSets API
Modified:
lucene/dev/branches/branch_5x/solr/CHANGES.txt
lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java
lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/response/ConfigSetAdminResponse.java
lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java
lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java
Modified: lucene/dev/branches/branch_5x/solr/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/CHANGES.txt?rev=1706919&r1=1706918&r2=1706919&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/CHANGES.txt (original)
+++ lucene/dev/branches/branch_5x/solr/CHANGES.txt Mon Oct 5 20:54:17 2015
@@ -64,6 +64,8 @@ New Features
* SOLR-8053: Basic auth support in SolrJ (noble)
+* SOLR-7995: Add a LIST command to ConfigSets API (Gregory Chanan)
+
Bug Fixes
----------------------
Modified: lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java?rev=1706919&r1=1706918&r2=1706919&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/java/org/apache/solr/handler/admin/ConfigSetsHandler.java Mon Oct 5 20:54:17 2015
@@ -18,14 +18,18 @@ package org.apache.solr.handler.admin;
*/
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;
import org.apache.solr.client.solrj.SolrResponse;
import org.apache.solr.cloud.Overseer;
+import org.apache.solr.cloud.OverseerSolrResponse;
import org.apache.solr.cloud.OverseerTaskQueue.QueueEvent;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
+import org.apache.solr.common.cloud.SolrZkClient;
+import org.apache.solr.common.cloud.ZkConfigManager;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.common.params.ConfigSetParams;
import org.apache.solr.common.params.ConfigSetParams.ConfigSetAction;
@@ -170,6 +174,19 @@ public class ConfigSetsHandler extends R
Map<String, Object> call(SolrQueryRequest req, SolrQueryResponse rsp, ConfigSetsHandler h) throws Exception {
return req.getParams().required().getAll(null, NAME);
}
+ },
+ LIST_OP(LIST) {
+ @Override
+ Map<String, Object> call(SolrQueryRequest req, SolrQueryResponse rsp, ConfigSetsHandler h) throws Exception {
+ NamedList<Object> results = new NamedList<>();
+ SolrZkClient zk = h.coreContainer.getZkController().getZkStateReader().getZkClient();
+ ZkConfigManager zkConfigManager = new ZkConfigManager(zk);
+ List<String> configSetsList = zkConfigManager.listConfigs();
+ results.add("configSets", configSetsList);
+ SolrResponse response = new OverseerSolrResponse(results);
+ rsp.getValues().addAll(response.getResponse());
+ return null;
+ }
};
ConfigSetAction action;
Modified: lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java?rev=1706919&r1=1706918&r2=1706919&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java (original)
+++ lucene/dev/branches/branch_5x/solr/core/src/test/org/apache/solr/cloud/TestConfigSetsAPI.java Mon Oct 5 20:54:17 2015
@@ -22,9 +22,12 @@ import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
+import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Properties;
+import java.util.Set;
import org.apache.commons.io.FileUtils;
import org.apache.solr.SolrTestCaseJ4;
@@ -33,6 +36,7 @@ import org.apache.solr.client.solrj.impl
import org.apache.solr.client.solrj.request.ConfigSetAdminRequest;
import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Create;
import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.Delete;
+import org.apache.solr.client.solrj.request.ConfigSetAdminRequest.List;
import org.apache.solr.client.solrj.response.ConfigSetAdminResponse;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkConfigManager;
@@ -292,6 +296,39 @@ public class TestConfigSetsAPI extends S
} finally {
zkClient.close();
}
+
+ solrClient.close();
+ }
+
+ @Test
+ public void testList() throws Exception {
+ final SolrClient solrClient =
+ new HttpSolrClient(solrCluster.getJettySolrRunners().get(0).getBaseUrl().toString());
+
+ SolrZkClient zkClient = new SolrZkClient(solrCluster.getZkServer().getZkAddress(),
+ AbstractZkTestCase.TIMEOUT, 45000, null);
+ try {
+ // test empty
+ List list = new List();
+ ConfigSetAdminResponse.List response = list.process(solrClient);
+ Collection<String> actualConfigSets = response.getConfigSets();
+ assertEquals(0, actualConfigSets.size());
+
+ // test multiple
+ final File configDir = getFile("solr").toPath().resolve("configsets/configset-2/conf").toFile();
+ Set<String> configSets = new HashSet<String>();
+ for (int i = 0; i < 5; ++i) {
+ String configSet = "configSet" + i;
+ solrCluster.uploadConfigDir(configDir, configSet);
+ configSets.add(configSet);
+ }
+ response = list.process(solrClient);
+ actualConfigSets = response.getConfigSets();
+ assertEquals(configSets.size(), actualConfigSets.size());
+ assertTrue(configSets.containsAll(actualConfigSets));
+ } finally {
+ zkClient.close();
+ }
solrClient.close();
}
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java?rev=1706919&r1=1706918&r2=1706919&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java Mon Oct 5 20:54:17 2015
@@ -38,10 +38,11 @@ import static org.apache.solr.common.par
*
* @since solr 5.4
*/
-public abstract class ConfigSetAdminRequest <Q extends ConfigSetAdminRequest<Q>> extends SolrRequest<ConfigSetAdminResponse> {
+public abstract class ConfigSetAdminRequest
+ <Q extends ConfigSetAdminRequest<Q,R>, R extends ConfigSetAdminResponse>
+ extends SolrRequest<R> {
protected ConfigSetAction action = null;
- protected String configSetName = null;
protected ConfigSetAdminRequest setAction(ConfigSetAction action) {
this.action = action;
@@ -63,12 +64,8 @@ public abstract class ConfigSetAdminRequ
if (action == null) {
throw new RuntimeException( "no action specified!" );
}
- if (configSetName == null) {
- throw new RuntimeException( "no ConfigSet specified!" );
- }
ModifiableSolrParams params = new ModifiableSolrParams();
params.set(ConfigSetParams.ACTION, action.toString());
- params.set(NAME, configSetName);
return params;
}
@@ -78,21 +75,40 @@ public abstract class ConfigSetAdminRequ
}
@Override
- protected ConfigSetAdminResponse createResponse(SolrClient client) {
- return new ConfigSetAdminResponse();
- }
+ protected abstract R createResponse(SolrClient client);
- public final Q setConfigSetName(String configSetName) {
- this.configSetName = configSetName;
- return getThis();
- }
+ protected abstract static class ConfigSetSpecificAdminRequest
+ <T extends ConfigSetAdminRequest<T,ConfigSetAdminResponse>>
+ extends ConfigSetAdminRequest<T,ConfigSetAdminResponse> {
+ protected String configSetName = null;
+
+ public final T setConfigSetName(String configSetName) {
+ this.configSetName = configSetName;
+ return getThis();
+ }
+
+ public final String getConfigSetName() {
+ return configSetName;
+ }
- public final String getConfigSetName() {
- return configSetName;
+ @Override
+ public SolrParams getParams() {
+ ModifiableSolrParams params = new ModifiableSolrParams(super.getParams());
+ if (configSetName == null) {
+ throw new RuntimeException( "no ConfigSet specified!" );
+ }
+ params.set(NAME, configSetName);
+ return params;
+ }
+
+ @Override
+ protected ConfigSetAdminResponse createResponse(SolrClient client) {
+ return new ConfigSetAdminResponse();
+ }
}
// CREATE request
- public static class Create extends ConfigSetAdminRequest<Create> {
+ public static class Create extends ConfigSetSpecificAdminRequest<Create> {
protected static String PROPERTY_PREFIX = "configSetProp";
protected String baseConfigSetName;
protected Properties properties;
@@ -142,7 +158,7 @@ public abstract class ConfigSetAdminRequ
}
// DELETE request
- public static class Delete extends ConfigSetAdminRequest<Delete> {
+ public static class Delete extends ConfigSetSpecificAdminRequest<Delete> {
public Delete() {
action = ConfigSetAction.DELETE;
}
@@ -152,4 +168,21 @@ public abstract class ConfigSetAdminRequ
return this;
}
}
+
+ // LIST request
+ public static class List extends ConfigSetAdminRequest<List, ConfigSetAdminResponse.List> {
+ public List() {
+ action = ConfigSetAction.LIST;
+ }
+
+ @Override
+ protected List getThis() {
+ return this;
+ }
+
+ @Override
+ protected ConfigSetAdminResponse.List createResponse(SolrClient client) {
+ return new ConfigSetAdminResponse.List();
+ }
+ }
}
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/response/ConfigSetAdminResponse.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/response/ConfigSetAdminResponse.java?rev=1706919&r1=1706918&r2=1706919&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/response/ConfigSetAdminResponse.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/client/solrj/response/ConfigSetAdminResponse.java Mon Oct 5 20:54:17 2015
@@ -30,4 +30,9 @@ public class ConfigSetAdminResponse exte
return (NamedList<String>) getResponse().get( "exceptions" );
}
+ public static class List extends ConfigSetAdminResponse {
+ public java.util.List<String> getConfigSets() {
+ return (java.util.List<String>) getResponse().get("configSets");
+ }
+ }
}
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java?rev=1706919&r1=1706918&r2=1706919&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/java/org/apache/solr/common/params/ConfigSetParams.java Mon Oct 5 20:54:17 2015
@@ -28,7 +28,8 @@ public interface ConfigSetParams
public enum ConfigSetAction {
CREATE,
- DELETE;
+ DELETE,
+ LIST;
public static ConfigSetAction get(String p) {
if (p != null) {
Modified: lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java?rev=1706919&r1=1706918&r2=1706919&view=diff
==============================================================================
--- lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java (original)
+++ lucene/dev/branches/branch_5x/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java Mon Oct 5 20:54:17 2015
@@ -18,6 +18,8 @@
package org.apache.solr.client.solrj.request;
import org.apache.solr.SolrTestCaseJ4;
+import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.response.ConfigSetAdminResponse;
import org.junit.Assert;
import org.junit.Test;
@@ -29,7 +31,6 @@ public class TestConfigSetAdminRequest e
@Test
public void testNoAction() {
ConfigSetAdminRequest request = new MyConfigSetAdminRequest();
- request.setConfigSetName("name");
verifyException(request, "action");
}
@@ -59,12 +60,17 @@ public class TestConfigSetAdminRequest e
}
}
- private static class MyConfigSetAdminRequest extends ConfigSetAdminRequest<MyConfigSetAdminRequest> {
+ private static class MyConfigSetAdminRequest extends ConfigSetAdminRequest<MyConfigSetAdminRequest, ConfigSetAdminResponse> {
public MyConfigSetAdminRequest() {}
@Override
public MyConfigSetAdminRequest getThis() {
return this;
}
+
+ @Override
+ public ConfigSetAdminResponse createResponse(SolrClient client) {
+ return new ConfigSetAdminResponse();
+ }
};
}