blob: 38366b89e115fe365e34cd94e1a7be3d61f2a22d [file] [log] [blame]
/**
*
*/
package org.eclipse.smila.solr.service;
import org.apache.commons.lang.NotImplementedException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.client.solrj.SolrServerException;
import org.eclipse.smila.solr.SolrConfig;
import org.eclipse.smila.solr.SolrServerService;
import org.eclipse.smila.solr.SolrConfig.Mode;
import org.eclipse.smila.solr.server.CloudServers;
import org.eclipse.smila.solr.server.EmbeddedServers;
import org.eclipse.smila.solr.server.HttpServers;
import org.eclipse.smila.solr.server.SolrServers;
import org.osgi.service.component.ComponentContext;
/**
* @author pwissel
*
*/
public class SolrServerServiceImpl implements SolrServerService {
private final Log _log = LogFactory.getLog(getClass());
private SolrConfig _config = new SolrConfig();
private SolrServers _servers;
/*
* (non-Javadoc)
*
* @see org.eclipse.smila.solr.SolrServerService#getServer(java.lang.String)
*/
@Override
public SolrServer getServer(final String index) throws SolrServerException {
return _servers.getServer(index);
}
@Override
public SolrServer getServer() throws SolrServerException {
return _servers.getServer();
}
@Override
public SolrConfig getConfig() {
return _config;
}
public SolrConfig reloadConfig() {
_servers.clearCache();
return _config = new SolrConfig();
}
protected void activate(ComponentContext context) {
if (_log.isInfoEnabled()) {
_log.info("OSGI DS: Activate SolrServerService...");
}
final Mode mode = _config.getMode();
if (_log.isDebugEnabled()) {
_log.debug("Set mode: " + mode.toString());
}
switch (mode) {
case CLOUD:
_servers = new CloudServers(_config);
break;
case EMBEDDED:
_servers = new EmbeddedServers(_config);
break;
case HTTP:
_servers = new HttpServers(_config);
break;
default:
throw new NotImplementedException(mode.toString());
}
if (_log.isDebugEnabled()) {
_log.debug("SolrServerService activated successfully");
}
}
}