public IndexMetadata getIndexMetadata(String indexName){ IndexMetadata metadata = null; synchronized (inMemoryModelLock) { Iterator<Map<String,IndexMetadata>> inStateIt = managed.values().iterator(); while(metadata == null && inStateIt.hasNext()) { metadata = inStateIt.next().get(indexName); } } //we need to return a clone to prevent changes by external changes to //the internal state! if(metadata != null){ IndexMetadata clone = new IndexMetadata(); clone.putAll(metadata); return clone; } else { return null; } } @SuppressWarnings("unchecked")
public IndexMetadata getIndexMetadata(String indexName){ IndexMetadata metadata = null; synchronized (inMemoryModelLock) { Iterator<Map<String,IndexMetadata>> inStateIt = managed.values().iterator(); while(metadata == null && inStateIt.hasNext()) { metadata = inStateIt.next().get(indexName); } } //we need to return a clone to prevent changes by external changes to //the internal state! if(metadata != null){ IndexMetadata clone = new IndexMetadata(); clone.putAll(metadata); return clone; } else { return null; } } @SuppressWarnings("unchecked")
/** * Getter for the metadata of all indexes in a given state. Changing the * returned {@link Collection} or the Entries does not affect the state * of this class. * @param state the state * @return the metadata of all the indexes in that state (empty if none, * <code>null</code> if <code>null</code> was parsed as state) */ public Collection<IndexMetadata> getIndexMetadata(ManagedIndexState state){ if(state == null){ return null; } Collection<IndexMetadata> clones = new HashSet<IndexMetadata>(); synchronized (inMemoryModelLock) { for(IndexMetadata metadata : managed.get(state).values()){ IndexMetadata clone = new IndexMetadata(); clone.putAll(metadata); clones.add(clone); } } return clones; } public IndexMetadata getIndexMetadata(String indexName){
/** * Getter for the metadata of all indexes in a given state. Changing the * returned {@link Collection} or the Entries does not affect the state * of this class. * @param state the state * @return the metadata of all the indexes in that state (empty if none, * <code>null</code> if <code>null</code> was parsed as state) */ public Collection<IndexMetadata> getIndexMetadata(ManagedIndexState state){ if(state == null){ return null; } Collection<IndexMetadata> clones = new HashSet<IndexMetadata>(); synchronized (inMemoryModelLock) { for(IndexMetadata metadata : managed.get(state).values()){ IndexMetadata clone = new IndexMetadata(); clone.putAll(metadata); clones.add(clone); } } return clones; } public IndexMetadata getIndexMetadata(String indexName){
public void addUninitialisedIndex(String indexName, String indexArchiveName, Boolean sync) throws IOException { IndexMetadata config = new IndexMetadata(); config = new IndexMetadata(); config.setIndexName(indexName); config.setServerName(serverName); config.setState(ManagedIndexState.UNINITIALISED); if(sync != null){ config.setSynchronized(sync); } //no need to clone, because we have created the instance updateIndexProperties(null, config, false); } public void store(IndexMetadata properties){
public void addUninitialisedIndex(String indexName, String indexArchiveName, Boolean sync) throws IOException { IndexMetadata config = new IndexMetadata(); config = new IndexMetadata(); config.setIndexName(indexName); config.setServerName(serverName); config.setState(ManagedIndexState.UNINITIALISED); if(sync != null){ config.setSynchronized(sync); } //no need to clone, because we have created the instance updateIndexProperties(null, config, false); } public void store(IndexMetadata properties){
String indexName = file.substring(0, file.indexOf('.')); File configFile = new File(uninstalledConfigDir, file); IndexMetadata props = new IndexMetadata(); InputStream is = null; try {
String indexName = file.substring(0, file.indexOf('.')); File configFile = new File(uninstalledConfigDir, file); IndexMetadata props = new IndexMetadata(); InputStream is = null; try {
resourceName+"'!",e); IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties);
@Override public IndexMetadata updateIndex(String indexName, ArchiveInputStream ais, String archiveCoreName) throws IOException, SAXException { if(indexName == null || indexName.isEmpty()){ throw new IllegalArgumentException("The parsed name for the index MUST NOT" + "be NULL nor empty!"); } if(ais == null){ throw new IOException("The parsed ArchiveInputStream MUST NOT be NULL!"); } IndexMetadata metadata = new IndexMetadata(); metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setSynchronized(false); if (archiveCoreName != null) { metadata.setArchive(archiveCoreName); } try { updateCore(metadata, ais); } finally { managedCores.store(metadata); } return metadata; }
@Override public IndexMetadata updateIndex(String name, ArchiveInputStream ais, String archiveCoreName) throws IOException { if (name == null || name.isEmpty()) { throw new IllegalArgumentException("The parsed index name MUST NOT be NULL nor empty!"); } IndexMetadata metadata = new IndexMetadata(); metadata.setIndexName(name); metadata.setServerName(DEFAULT_SERVER_NAME); metadata.setSynchronized(false); metadata.setState(ManagedIndexState.ACTIVE); if (archiveCoreName != null) { metadata.setArchive(archiveCoreName); } return updateCore(metadata, ais); }
/** * Creates and initialises a {@link IndexMetadata} instance based on the * parsed {@link SolrCore} * @param core the {@link SolrCore} * @param serverName the name of the server * @return the initialised {@link IndexMetadata} */ public static IndexMetadata getMetadata(SolrCore core, String serverName){ if(core == null){ return null; } IndexMetadata metadata = new IndexMetadata(); if(serverName != null){ metadata.setServerName(serverName); } metadata.setSynchronized(false); updateMetadata(metadata, core); return metadata; } /**
/** * Creates and initialises a {@link IndexMetadata} instance based on the * parsed {@link SolrCore} * @param core the {@link SolrCore} * @param serverName the name of the server * @return the initialised {@link IndexMetadata} */ public static IndexMetadata getMetadata(SolrCore core, String serverName){ if(core == null){ return null; } IndexMetadata metadata = new IndexMetadata(); if(serverName != null){ metadata.setServerName(serverName); } metadata.setSynchronized(false); updateMetadata(metadata, core); return metadata; } /**
@Override public IndexMetadata updateIndex(String name, ArchiveInputStream ais, String archiveCoreName) throws IOException { if (name == null || name.isEmpty()) { throw new IllegalArgumentException("The parsed index name MUST NOT be NULL nor empty!"); } IndexMetadata metadata = new IndexMetadata(); metadata.setIndexName(name); metadata.setServerName(DEFAULT_SERVER_NAME); metadata.setSynchronized(false); metadata.setState(ManagedIndexState.ACTIVE); if (archiveCoreName != null) { metadata.setArchive(archiveCoreName); } return updateCore(metadata, ais); }
resourceName+"'!",e); IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties);
@Override public IndexMetadata updateIndex(String indexName, ArchiveInputStream ais, String archiveCoreName) throws IOException, SAXException { if(indexName == null || indexName.isEmpty()){ throw new IllegalArgumentException("The parsed name for the index MUST NOT" + "be NULL nor empty!"); } if(ais == null){ throw new IOException("The parsed ArchiveInputStream MUST NOT be NULL!"); } IndexMetadata metadata = new IndexMetadata(); metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setSynchronized(false); if (archiveCoreName != null) { metadata.setArchive(archiveCoreName); } try { updateCore(metadata, ais); } finally { managedCores.store(metadata); } return metadata; }
@Override public IndexMetadata createSolrIndex(String indexName, String resourceName, Properties properties) throws IOException { if(indexName == null || indexName.isEmpty()){ throw new IllegalArgumentException("The parsed index name MUST NOT be NULL nor empty!"); } if(!ConfigUtils.isValidSolrIndexFileName(resourceName)){ log.debug("add SolrIndexFileExtension to parsed indexArchive {}",resourceName); resourceName = ConfigUtils.appandSolrIndexFileExtension(resourceName, null); } if(isManagedIndex(indexName)){ throw new IllegalArgumentException("An index with the parsed name '"+ indexName+"' already exists on this managed Solr server '"+serverName+"'!"); } IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties); } metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setIndexArchives(Collections.singletonList(resourceName)); metadata.setState(ManagedIndexState.UNINITIALISED); //TODO: we need to deal with the synchronised property! // now add the index to the list of uninitialised managedCores.store(metadata); //now start tracking this archive file indexArchiveTracker.addTracking(metadata); dataFileTracker.add(indexArchiveTracker, resourceName, IndexMetadata.toStringMap(metadata)); return metadata; }
@Override public IndexMetadata createSolrIndex(String indexName, String resourceName, Properties properties) throws IOException { if(indexName == null || indexName.isEmpty()){ throw new IllegalArgumentException("The parsed index name MUST NOT be NULL nor empty!"); } if(!ConfigUtils.isValidSolrIndexFileName(resourceName)){ log.debug("add SolrIndexFileExtension to parsed indexArchive {}",resourceName); resourceName = ConfigUtils.appandSolrIndexFileExtension(resourceName, null); } if(isManagedIndex(indexName)){ throw new IllegalArgumentException("An index with the parsed name '"+ indexName+"' already exists on this managed Solr server '"+serverName+"'!"); } IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties); } metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setIndexArchives(Collections.singletonList(resourceName)); metadata.setState(ManagedIndexState.UNINITIALISED); //TODO: we need to deal with the synchronised property! // now add the index to the list of uninitialised managedCores.store(metadata); //now start tracking this archive file indexArchiveTracker.addTracking(metadata); dataFileTracker.add(indexArchiveTracker, resourceName, IndexMetadata.toStringMap(metadata)); return metadata; }
@Override public IndexMetadata updateIndex(String indexName, String resourceName, Properties properties) throws IOException { //NOTE: this does not deactivate the current index version, but only updates //the metadata and re-registers the DataFileTracking IndexMetadata oldMetadata = managedCores.getIndexMetadata(indexName); IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties); } metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setIndexArchives(Collections.singletonList(resourceName)); if(oldMetadata != null){ //we need to metadata.setState(oldMetadata.getState()); //same as for the old version metadata.setDirectory(oldMetadata.getDirectory()); } else { metadata.setState(ManagedIndexState.UNINITIALISED); } //TODO: we need to deal with the synchronised property! // now add the index to the list of uninitialised managedCores.store(metadata); indexArchiveTracker.updateTracking(oldMetadata,metadata); return metadata; } @Override
@Override public IndexMetadata updateIndex(String indexName, String resourceName, Properties properties) throws IOException { //NOTE: this does not deactivate the current index version, but only updates //the metadata and re-registers the DataFileTracking IndexMetadata oldMetadata = managedCores.getIndexMetadata(indexName); IndexMetadata metadata = new IndexMetadata(); if(properties != null){ metadata.putAll(properties); } metadata.setServerName(serverName); metadata.setIndexName(indexName); metadata.setIndexArchives(Collections.singletonList(resourceName)); if(oldMetadata != null){ //we need to metadata.setState(oldMetadata.getState()); //same as for the old version metadata.setDirectory(oldMetadata.getDirectory()); } else { metadata.setState(ManagedIndexState.UNINITIALISED); } //TODO: we need to deal with the synchronised property! // now add the index to the list of uninitialised managedCores.store(metadata); indexArchiveTracker.updateTracking(oldMetadata,metadata); return metadata; } @Override