Package org.apache.maven.index.context
Class MergedIndexingContext
- java.lang.Object
-
- org.apache.maven.index.context.AbstractIndexingContext
-
- org.apache.maven.index.context.MergedIndexingContext
-
- All Implemented Interfaces:
IndexingContext
public class MergedIndexingContext extends AbstractIndexingContext
A merged indexing context that offers read only "view" on multiple other indexing contexts merged and presented as one. Usable for searching and publishing, but all write operations are basically noop.
-
-
Field Summary
Fields Modifier and Type Field Description private org.apache.lucene.store.Directory
directory
private java.io.File
directoryFile
private GavCalculator
gavCalculator
private java.lang.String
id
private ContextMemberProvider
membersProvider
private java.io.File
repository
private java.lang.String
repositoryId
private boolean
searchable
-
Fields inherited from interface org.apache.maven.index.context.IndexingContext
INDEX_CHAIN_ID, INDEX_CHUNK_COUNTER, INDEX_CHUNK_PREFIX, INDEX_FILE_PREFIX, INDEX_ID, INDEX_LEGACY_TIMESTAMP, INDEX_PACKER_PROPERTIES_FILE, INDEX_PROPERTY_PREFIX, INDEX_REMOTE_PROPERTIES_FILE, INDEX_TIME_DAY_FORMAT, INDEX_TIME_FORMAT, INDEX_TIMESTAMP, INDEX_UPDATER_PROPERTIES_FILE
-
-
Constructor Summary
Constructors Modifier Constructor Description MergedIndexingContext(java.lang.String id, java.lang.String repositoryId, java.io.File repository, java.io.File indexDirectoryFile, boolean searchable, ContextMemberProvider membersProvider)
MergedIndexingContext(java.lang.String id, java.lang.String repositoryId, java.io.File repository, org.apache.lucene.store.Directory indexDirectory, boolean searchable, ContextMemberProvider membersProvider)
Deprecated.private
MergedIndexingContext(ContextMemberProvider membersProvider, java.lang.String id, java.lang.String repositoryId, java.io.File repository, org.apache.lucene.store.Directory indexDirectory, boolean searchable)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.apache.lucene.search.IndexSearcher
acquireIndexSearcher()
Acquires a fresh instance ofIndexSearcher
.void
close(boolean deleteFiles)
Shuts down this context.void
commit()
Commits changes to context, eventually refreshing readers/searchers too.java.util.Set<java.lang.String>
getAllGroups()
Gets all group names stored in the current indexing contextorg.apache.lucene.analysis.Analyzer
getAnalyzer()
Returns the Lucene Analyzer of this context used for by IndexWriter and IndexSearcher.GavCalculator
getGavCalculator()
Returns the GavCalculator for this Context.java.lang.String
getId()
Returns this indexing context id.java.util.List<IndexCreator>
getIndexCreators()
List of IndexCreators used in this context.org.apache.lucene.store.Directory
getIndexDirectory()
java.io.File
getIndexDirectoryFile()
java.lang.String
getIndexUpdateUrl()
Returns url for the index updateorg.apache.lucene.index.IndexWriter
getIndexWriter()
Returns the Lucene IndexWriter (thread safe, shared instance) of this context.java.util.Collection<IndexingContext>
getMembers()
java.io.File
getRepository()
Returns location for the local repository.java.lang.String
getRepositoryId()
Returns repository id.java.lang.String
getRepositoryUrl()
Returns public repository url.java.util.Set<java.lang.String>
getRootGroups()
Gets root group names stored in the current indexing contextint
getSize()
Returns a number that represents the "size" useful for doing comparisons between contexts (which one has more data indexed?).java.util.Date
getTimestamp()
Returns index update timeboolean
isSearchable()
Is the context searchable when doing "non-targeted" searches? Ie.void
merge(org.apache.lucene.store.Directory directory)
Merges content of given Lucene directory with this context.void
merge(org.apache.lucene.store.Directory directory, DocumentFilter filter)
Merges content of given Lucene directory with this context, but filters out the unwanted ones.void
optimize()
Optimizes index.void
purge()
Purge (cleans) the context, deletes/empties the index and restores the context to new/empty state.void
rebuildGroups()
Rebuilds stored group names from the indexvoid
releaseIndexSearcher(org.apache.lucene.search.IndexSearcher indexSearcher)
Releases theIndexSearcher
instance.void
replace(org.apache.lucene.store.Directory directory)
Replaces the Lucene index with the one from supplied directory.void
replace(org.apache.lucene.store.Directory directory, java.util.Set<java.lang.String> allGroups, java.util.Set<java.lang.String> rootGroups)
void
rollback()
Rolls back changes to context, eventually refreshing readers/searchers too.void
setAllGroups(java.util.Collection<java.lang.String> groups)
Sets all group names stored in the current indexing contextprotected void
setIndexDirectoryFile(java.io.File dir)
Sets index location.void
setRootGroups(java.util.Collection<java.lang.String> groups)
Sets root group names stored in the current indexing contextvoid
setSearchable(boolean searchable)
Sets is the context searchable when doing "non-targeted" searches.void
updateTimestamp()
void
updateTimestamp(boolean save)
void
updateTimestamp(boolean save, java.util.Date date)
-
Methods inherited from class org.apache.maven.index.context.AbstractIndexingContext
isReceivingUpdates
-
-
-
-
Field Detail
-
id
private final java.lang.String id
-
repositoryId
private final java.lang.String repositoryId
-
repository
private final java.io.File repository
-
membersProvider
private final ContextMemberProvider membersProvider
-
gavCalculator
private final GavCalculator gavCalculator
-
directory
private final org.apache.lucene.store.Directory directory
-
directoryFile
private java.io.File directoryFile
-
searchable
private boolean searchable
-
-
Constructor Detail
-
MergedIndexingContext
private MergedIndexingContext(ContextMemberProvider membersProvider, java.lang.String id, java.lang.String repositoryId, java.io.File repository, org.apache.lucene.store.Directory indexDirectory, boolean searchable) throws java.io.IOException
- Throws:
java.io.IOException
-
MergedIndexingContext
public MergedIndexingContext(java.lang.String id, java.lang.String repositoryId, java.io.File repository, java.io.File indexDirectoryFile, boolean searchable, ContextMemberProvider membersProvider) throws java.io.IOException
- Throws:
java.io.IOException
-
MergedIndexingContext
@Deprecated public MergedIndexingContext(java.lang.String id, java.lang.String repositoryId, java.io.File repository, org.apache.lucene.store.Directory indexDirectory, boolean searchable, ContextMemberProvider membersProvider) throws java.io.IOException
Deprecated.- Throws:
java.io.IOException
-
-
Method Detail
-
getMembers
public java.util.Collection<IndexingContext> getMembers()
-
getId
public java.lang.String getId()
Description copied from interface:IndexingContext
Returns this indexing context id.
-
getRepositoryId
public java.lang.String getRepositoryId()
Description copied from interface:IndexingContext
Returns repository id.
-
getRepository
public java.io.File getRepository()
Description copied from interface:IndexingContext
Returns location for the local repository.
-
getRepositoryUrl
public java.lang.String getRepositoryUrl()
Description copied from interface:IndexingContext
Returns public repository url.
-
getIndexUpdateUrl
public java.lang.String getIndexUpdateUrl()
Description copied from interface:IndexingContext
Returns url for the index update
-
isSearchable
public boolean isSearchable()
Description copied from interface:IndexingContext
Is the context searchable when doing "non-targeted" searches? Ie. Should it take a part when searching without specifying context?- Returns:
-
setSearchable
public void setSearchable(boolean searchable)
Description copied from interface:IndexingContext
Sets is the context searchable when doing "non-targeted" searches.
-
getTimestamp
public java.util.Date getTimestamp()
Description copied from interface:IndexingContext
Returns index update time
-
updateTimestamp
public void updateTimestamp() throws java.io.IOException
- Throws:
java.io.IOException
-
updateTimestamp
public void updateTimestamp(boolean save) throws java.io.IOException
- Throws:
java.io.IOException
-
updateTimestamp
public void updateTimestamp(boolean save, java.util.Date date) throws java.io.IOException
- Throws:
java.io.IOException
-
getSize
public int getSize() throws java.io.IOException
Description copied from interface:IndexingContext
Returns a number that represents the "size" useful for doing comparisons between contexts (which one has more data indexed?). The number return does not represent the count of ArtifactInfos, neither other "meaningful" info, it is purely to be used for inter-context comparisons only!- Returns:
- Throws:
java.io.IOException
-
acquireIndexSearcher
public org.apache.lucene.search.IndexSearcher acquireIndexSearcher() throws java.io.IOException
Description copied from interface:IndexingContext
Acquires a fresh instance ofIndexSearcher
. You have to release the received instance withIndexingContext.releaseIndexSearcher(IndexSearcher)
otherwise you are about to introduce leak.- Returns:
- Throws:
java.io.IOException
-
releaseIndexSearcher
public void releaseIndexSearcher(org.apache.lucene.search.IndexSearcher indexSearcher) throws java.io.IOException
Description copied from interface:IndexingContext
Releases theIndexSearcher
instance.- Throws:
java.io.IOException
-
getIndexWriter
public org.apache.lucene.index.IndexWriter getIndexWriter() throws java.io.IOException
Description copied from interface:IndexingContext
Returns the Lucene IndexWriter (thread safe, shared instance) of this context.- Returns:
- indexWriter
- Throws:
java.io.IOException
-
getIndexCreators
public java.util.List<IndexCreator> getIndexCreators()
Description copied from interface:IndexingContext
List of IndexCreators used in this context.- Returns:
- list of index creators.
-
getAnalyzer
public org.apache.lucene.analysis.Analyzer getAnalyzer()
Description copied from interface:IndexingContext
Returns the Lucene Analyzer of this context used for by IndexWriter and IndexSearcher. Note: this method always creates a new instance of analyzer!- Returns:
-
commit
public void commit() throws java.io.IOException
Description copied from interface:IndexingContext
Commits changes to context, eventually refreshing readers/searchers too.- Throws:
java.io.IOException
-
rollback
public void rollback() throws java.io.IOException
Description copied from interface:IndexingContext
Rolls back changes to context, eventually refreshing readers/searchers too.- Throws:
java.io.IOException
-
optimize
public void optimize() throws java.io.IOException
Description copied from interface:IndexingContext
Optimizes index. According to Lucene 3.6+ Javadoc, there is no more sense to optimize, so this method might become "noop".- Throws:
java.io.IOException
-
close
public void close(boolean deleteFiles) throws java.io.IOException
Description copied from interface:IndexingContext
Shuts down this context.- Throws:
java.io.IOException
-
purge
public void purge() throws java.io.IOException
Description copied from interface:IndexingContext
Purge (cleans) the context, deletes/empties the index and restores the context to new/empty state.- Throws:
java.io.IOException
-
merge
public void merge(org.apache.lucene.store.Directory directory) throws java.io.IOException
Description copied from interface:IndexingContext
Merges content of given Lucene directory with this context.- Parameters:
directory
- - the directory to merge- Throws:
java.io.IOException
-
merge
public void merge(org.apache.lucene.store.Directory directory, DocumentFilter filter) throws java.io.IOException
Description copied from interface:IndexingContext
Merges content of given Lucene directory with this context, but filters out the unwanted ones.- Parameters:
directory
- - the directory to merge- Throws:
java.io.IOException
-
replace
public void replace(org.apache.lucene.store.Directory directory) throws java.io.IOException
Description copied from interface:IndexingContext
Replaces the Lucene index with the one from supplied directory.- Throws:
java.io.IOException
-
replace
public void replace(org.apache.lucene.store.Directory directory, java.util.Set<java.lang.String> allGroups, java.util.Set<java.lang.String> rootGroups) throws java.io.IOException
- Throws:
java.io.IOException
-
getIndexDirectory
public org.apache.lucene.store.Directory getIndexDirectory()
-
getIndexDirectoryFile
public java.io.File getIndexDirectoryFile()
-
setIndexDirectoryFile
protected void setIndexDirectoryFile(java.io.File dir) throws java.io.IOException
Sets index location. As usually index is persistent (is on disk), this will point to that value, but in some circumstances (ie, using RAMDisk for index), this will point to an existing tmp directory.- Throws:
java.io.IOException
-
getGavCalculator
public GavCalculator getGavCalculator()
Description copied from interface:IndexingContext
Returns the GavCalculator for this Context. Implies repository layout.
-
setAllGroups
public void setAllGroups(java.util.Collection<java.lang.String> groups) throws java.io.IOException
Description copied from interface:IndexingContext
Sets all group names stored in the current indexing context- Throws:
java.io.IOException
-
getAllGroups
public java.util.Set<java.lang.String> getAllGroups() throws java.io.IOException
Description copied from interface:IndexingContext
Gets all group names stored in the current indexing context- Throws:
java.io.IOException
-
setRootGroups
public void setRootGroups(java.util.Collection<java.lang.String> groups) throws java.io.IOException
Description copied from interface:IndexingContext
Sets root group names stored in the current indexing context- Throws:
java.io.IOException
-
getRootGroups
public java.util.Set<java.lang.String> getRootGroups() throws java.io.IOException
Description copied from interface:IndexingContext
Gets root group names stored in the current indexing context- Throws:
java.io.IOException
-
rebuildGroups
public void rebuildGroups() throws java.io.IOException
Description copied from interface:IndexingContext
Rebuilds stored group names from the index- Throws:
java.io.IOException
-
-