log.error("Unable to remove Managed Index because the required Property '{}'" +
"used to define the name of the Index is missing",INDEX_NAME);
setFinishedState(ResourceState.IGNORED);
} else {
String serverName = (String) getResource().getAttribute(ManagedIndexConstants.SERVER_NAME);
ManagedSolrServer server = managedServers.get(serverName);
if(server == null){
log.warn("Unable to install Managed Solr Index {} because the {} " +
"Server {} is currently not active!",
new Object[]{indexName,serverName == null ? "default" : "",
serverName != null ? serverName : ""});
setFinishedState(ResourceState.IGNORED); //needs still to be installed
} else {
//we have an index name and a server to in stall it ...
// ... let's do the work
String archiveFormat = (String) getResource().getAttribute(PROPERTY_ARCHIVE_FORMAT);
InputStream is = null;
try {
is = getResource().getInputStream();
if ("properties".equals(archiveFormat)) {
InputStreamReader reader = new InputStreamReader(is, "UTF-8");
Properties props = new Properties();
try {
props.load(reader);
} finally {
IOUtils.closeQuietly(reader);
}
//TODO install to the right server!
String indexPath = props.getProperty(INDEX_ARCHIVES);
if (indexPath == null) {
indexPath = indexName + '.' + ConfigUtils.SOLR_INDEX_ARCHIVE_EXTENSION;
log.info("Property \""
+ INDEX_ARCHIVES
+ "\" not present within the SolrIndex references file. Will use the default name \""
+ indexPath + "\"");
}
server.updateIndex(indexName, indexPath, props);
setFinishedState(ResourceState.INSTALLED);
} else {
ArchiveInputStream ais = null;
try {
ais = ConfigUtils.getArchiveInputStream(archiveFormat, is);
server.updateIndex(indexName, ais);
// we are done ... set the state to installed!
setFinishedState(ResourceState.INSTALLED);
} finally {
IOUtils.closeQuietly(ais);
}