use of org.apache.solr.client.solrj.SolrClient in project ddf by codice.
the class RemoteSolrCatalogProviderTest method testShutdown.
@Test
public void testShutdown() throws SolrServerException, IOException {
boolean clientStatus = true;
SolrClient givenClient = givenSolrClient(clientStatus);
RemoteSolrCatalogProvider provider = new MockedRemoteSolrCatalogProvider(givenClient);
provider.shutdown();
verify(givenClient, times(1)).close();
}
use of org.apache.solr.client.solrj.SolrClient in project ddf by codice.
the class BackupCommand method performSolrCloudBackup.
private void performSolrCloudBackup() throws Exception {
SolrClient client = null;
try {
client = getCloudSolrClient();
if (asyncBackupStatus) {
verifyCloudBackupStatusInput();
getBackupStatus(client, asyncBackupReqId);
} else {
verifyCloudBackupInput();
performSolrCloudBackup(client);
}
} finally {
shutdown(client);
}
}
use of org.apache.solr.client.solrj.SolrClient in project ddf by codice.
the class SolrCommands method getCloudSolrClient.
protected SolrClient getCloudSolrClient() {
String zkHosts = System.getProperty(ZOOKEEPER_HOSTS_PROP);
LOGGER.debug("Zookeeper hosts: {}", zkHosts);
if (zkHosts != null) {
SolrClient client = new CloudSolrClient.Builder().withZkHost(zkHosts).build();
LOGGER.debug("Created solr client: {}", client);
return client;
} else {
throw new IllegalArgumentException(String.format("Could not determine Zookeeper Hosts. Please verify that the system property %s is configured in %s.", ZOOKEEPER_HOSTS_PROP, SYSTEM_PROPERTIES_PATH));
}
}
use of org.apache.solr.client.solrj.SolrClient in project ddf by codice.
the class PersistentStoreImpl method getSolrClient.
private SolrClient getSolrClient(String storeName) {
SolrClient solrClient = null;
Future<SolrClient> clientFuture = solrFutures.computeIfAbsent(storeName, clientFactory::newClient);
try {
solrClient = clientFuture.get(5, TimeUnit.SECONDS);
} catch (InterruptedException | ExecutionException | TimeoutException e) {
LOGGER.warn("Error getting solr server from future for core: {}", storeName, e);
}
return solrClient;
}
use of org.apache.solr.client.solrj.SolrClient in project ddf by codice.
the class PersistentStoreImpl method get.
@Override
public // Returned Map will have suffixes in the key names - client is responsible for handling them
List<Map<String, Object>> get(String type, String cql) throws PersistenceException {
if (StringUtils.isBlank(type)) {
throw new PersistenceException("The type of object(s) to retrieve must be non-null and not blank, e.g., notification, metacard, etc.");
}
List<Map<String, Object>> results = new ArrayList<>();
// Set Solr Core name to type and create/connect to Solr Core
SolrClient solrClient = getSolrClient(type);
if (solrClient == null) {
throw new PersistenceException("Unable to create Solr client.");
}
SolrQueryFilterVisitor visitor = new SolrQueryFilterVisitor(solrClient, type);
try {
SolrQuery solrQuery;
// If not cql specified, then return all items
if (StringUtils.isBlank(cql)) {
solrQuery = new SolrQuery("*:*");
} else {
Filter filter = CQL.toFilter(cql);
solrQuery = (SolrQuery) filter.accept(visitor, null);
}
QueryResponse solrResponse = solrClient.query(solrQuery, METHOD.POST);
long numResults = solrResponse.getResults().getNumFound();
LOGGER.debug("numResults = {}", numResults);
SolrDocumentList docs = solrResponse.getResults();
for (SolrDocument doc : docs) {
PersistentItem result = new PersistentItem();
Collection<String> fieldNames = doc.getFieldNames();
for (String name : fieldNames) {
LOGGER.debug("field name = {} has value = {}", name, doc.getFieldValue(name));
if (name.endsWith(PersistentItem.TEXT_SUFFIX) && doc.getFieldValues(name).size() > 1) {
result.addProperty(name, doc.getFieldValues(name).stream().filter(s -> s instanceof String).map(s -> (String) s).collect(Collectors.toSet()));
} else if (name.endsWith(PersistentItem.XML_SUFFIX)) {
result.addXmlProperty(name, (String) doc.getFirstValue(name));
} else if (name.endsWith(PersistentItem.TEXT_SUFFIX)) {
result.addProperty(name, (String) doc.getFirstValue(name));
} else if (name.endsWith(PersistentItem.LONG_SUFFIX)) {
result.addProperty(name, (Long) doc.getFirstValue(name));
} else if (name.endsWith(PersistentItem.INT_SUFFIX)) {
result.addProperty(name, (Integer) doc.getFirstValue(name));
} else if (name.endsWith(PersistentItem.DATE_SUFFIX)) {
result.addProperty(name, (Date) doc.getFirstValue(name));
} else if (name.endsWith(PersistentItem.BINARY_SUFFIX)) {
result.addProperty(name, (byte[]) doc.getFirstValue(name));
} else {
LOGGER.debug("Not adding field {} because it has invalid suffix", name);
}
}
results.add(result);
}
} catch (CQLException e) {
throw new PersistenceException("CQLException while getting Solr data with cql statement " + cql, e);
} catch (SolrServerException | IOException e) {
throw new PersistenceException("SolrServerException while getting Solr data with cql statement " + cql, e);
}
return results;
}
Aggregations