Enhance solr ping request via SolrOperationService
diff --git a/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/service/SolrOperationServiceImpl.java b/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/service/SolrOperationServiceImpl.java
index acde88a..4729a72 100755
--- a/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/service/SolrOperationServiceImpl.java
+++ b/core/org.eclipse.smila.solr/code/src/org/eclipse/smila/solr/service/SolrOperationServiceImpl.java
@@ -1,118 +1,128 @@
-/**
- *
- */
-package org.eclipse.smila.solr.service;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.commons.httpclient.HttpClient;
-import org.apache.commons.httpclient.HttpException;
-import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
-import org.apache.commons.lang.NotImplementedException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.response.SolrPingResponse;
-import org.apache.solr.common.util.NamedList;
-import org.eclipse.smila.datamodel.Any;
-import org.eclipse.smila.datamodel.util.AnyUtil;
-import org.eclipse.smila.solr.SolrConfig.Mode;
-import org.eclipse.smila.solr.SolrOperationService;
-import org.eclipse.smila.solr.SolrServerService;
-import org.eclipse.smila.solr.SolrUtils;
-import org.eclipse.smila.solr.administration.SchemaRequest;
-import org.eclipse.smila.solr.administration.SmilaCollectionAdminRequest;
-import org.eclipse.smila.solr.administration.SmilaCoreAdminRequest;
-
-/**
- * @author pwissel
- *
- */
-public class SolrOperationServiceImpl implements SolrOperationService {
-
- private final Log _log = LogFactory.getLog(getClass());
-
- private final HttpClient _httpClient;
-
- private SolrServerService _serverService;
-
- public SolrOperationServiceImpl() {
- final MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager();
- _httpClient = new HttpClient(manager);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.smila.solr.SolrOperationService#processAdminOperation(java.lang.String, java.util.Map)
- */
- @Override
- public Any processAdminOperation(String action, Map<String, String[]> params) {
- try {
- SolrRequest request = null;
- final Mode mode = _serverService.getConfig().getMode();
- switch (mode) {
- case CLOUD:
- request = new SmilaCollectionAdminRequest(action, params);
- break;
- case EMBEDDED:
- case HTTP:
- request = new SmilaCoreAdminRequest(action, params);
- break;
- default:
- final String message = String.format("Unknown mode: %s", mode.toString());
- throw new UnsupportedOperationException(message);
- }
- final NamedList<Object> response = _serverService.getServer().request(request);
- return SolrUtils.parseNamedList(response);
- } catch (Exception exception) {
- return AnyUtil.exceptionToAny(exception);
- }
- }
-
- @Override
- public Any processPingOperation(final String index) {
- try {
- final SolrPingResponse response = _serverService.getServer(index).ping();
- return SolrUtils.parseNamedList(response.getResponse());
- } catch (SolrServerException | IOException exception) {
- return AnyUtil.exceptionToAny(exception);
- }
- }
-
- @Override
- public Any processSchemaRequest(final String index, final Map<String, String[]> params, final List<String> path)
- throws HttpException, IOException {
- final Mode mode = _serverService.getConfig().getMode();
- switch (mode) {
- case CLOUD:
- case HTTP:
- final String restUri = _serverService.getConfig().getRestUri();
- final SchemaRequest schemaRequest = new SchemaRequest(_httpClient, restUri);
- return schemaRequest.getAsAny(index, params, path);
- default:
- final String message = String.format("Can not process schema request for mode: %s", mode.toString());
- throw new NotImplementedException(message);
- }
- }
-
- protected void bindSolrServerService(final SolrServerService serverService) {
- if (_log.isDebugEnabled()) {
- _log.debug("Bind SolrServerService...");
- }
- _serverService = serverService;
- }
-
- protected void unbindSolrServerService(final SolrServerService serverService) {
- if (_serverService == serverService) {
- if (_log.isDebugEnabled()) {
- _log.debug("Unbind SolrServerService...");
- }
- _serverService = null;
- }
- }
-
-}
+/**
+ *
+ */
+package org.eclipse.smila.solr.service;
+
+import java.io.IOException;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.httpclient.HttpClient;
+import org.apache.commons.httpclient.HttpException;
+import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
+import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.request.SolrPing;
+import org.apache.solr.client.solrj.response.SolrPingResponse;
+import org.apache.solr.common.util.NamedList;
+import org.eclipse.smila.datamodel.Any;
+import org.eclipse.smila.datamodel.util.AnyUtil;
+import org.eclipse.smila.solr.SolrConfig.Mode;
+import org.eclipse.smila.solr.SolrOperationService;
+import org.eclipse.smila.solr.SolrServerService;
+import org.eclipse.smila.solr.SolrUtils;
+import org.eclipse.smila.solr.administration.SchemaRequest;
+import org.eclipse.smila.solr.administration.SmilaCollectionAdminRequest;
+import org.eclipse.smila.solr.administration.SmilaCoreAdminRequest;
+
+/**
+ * @author pwissel
+ *
+ */
+public class SolrOperationServiceImpl implements SolrOperationService {
+
+ private final Log _log = LogFactory.getLog(getClass());
+
+ private final HttpClient _httpClient;
+
+ private SolrServerService _serverService;
+
+ public SolrOperationServiceImpl() {
+ final MultiThreadedHttpConnectionManager manager = new MultiThreadedHttpConnectionManager();
+ _httpClient = new HttpClient(manager);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.smila.solr.SolrOperationService#processAdminOperation(java.lang.String, java.util.Map)
+ */
+ @Override
+ public Any processAdminOperation(String action, Map<String, String[]> params) {
+ try {
+ SolrRequest request = null;
+ final Mode mode = _serverService.getConfig().getMode();
+ switch (mode) {
+ case CLOUD:
+ request = new SmilaCollectionAdminRequest(action, params);
+ break;
+ case EMBEDDED:
+ case HTTP:
+ request = new SmilaCoreAdminRequest(action, params);
+ break;
+ default:
+ final String message = String.format("Unknown mode: %s", mode.toString());
+ throw new UnsupportedOperationException(message);
+ }
+ final NamedList<Object> response = _serverService.getServer().request(request);
+ return SolrUtils.parseNamedList(response);
+ } catch (Exception exception) {
+ return AnyUtil.exceptionToAny(exception);
+ }
+ }
+
+ @Override
+ public Any processPingOperation(final String index) {
+ try {
+ // get server
+ final SolrServer server = _serverService.getServer(index);
+ // create ping request
+ final SolrPing ping = new SolrPing();
+ ping.getParams().add("distrib", "true");
+ // process request on server
+ final SolrPingResponse pingResponse = ping.process(server);
+ // parse server response
+ final NamedList<Object> response = pingResponse.getResponse();
+ return SolrUtils.parseNamedList(response);
+ } catch (SolrServerException | IOException exception) {
+ return AnyUtil.exceptionToAny(exception);
+ }
+ }
+
+ @Override
+ public Any processSchemaRequest(final String index, final Map<String, String[]> params, final List<String> path)
+ throws HttpException, IOException {
+ final Mode mode = _serverService.getConfig().getMode();
+ switch (mode) {
+ case CLOUD:
+ case HTTP:
+ final String restUri = _serverService.getConfig().getRestUri();
+ final SchemaRequest schemaRequest = new SchemaRequest(_httpClient, restUri);
+ return schemaRequest.getAsAny(index, params, path);
+ default:
+ final String message = String.format("Can not process schema request for mode: %s", mode.toString());
+ throw new NotImplementedException(message);
+ }
+ }
+
+ protected void bindSolrServerService(final SolrServerService serverService) {
+ if (_log.isDebugEnabled()) {
+ _log.debug("Bind SolrServerService...");
+ }
+ _serverService = serverService;
+ }
+
+ protected void unbindSolrServerService(final SolrServerService serverService) {
+ if (_serverService == serverService) {
+ if (_log.isDebugEnabled()) {
+ _log.debug("Unbind SolrServerService...");
+ }
+ _serverService = null;
+ }
+ }
+
+}