public class NexusIndexManager extends java.lang.Object implements IndexManager, IMavenProjectChangedListener, IRepositoryIndexer
Modifier and Type | Field and Description |
---|---|
private org.apache.maven.index.ArtifactContextProducer |
artifactContextProducer
Lazy instantiated nexus indexer's contextProducer.
|
private java.io.File |
baseIndexDir |
private org.codehaus.plexus.PlexusContainer |
container |
private java.lang.Object |
contextProducerLock
Lock guarding lazy instantiation of contextProducer instance
|
private static char[] |
DIGITS |
private java.util.List<org.apache.maven.index.context.IndexCreator> |
fullCreators |
private java.util.Properties |
indexDetails |
private org.apache.maven.index.NexusIndexer |
indexer
Lazy instantiated nexus indexer instance.
|
private java.lang.Object |
indexerLock
Lock guarding lazy instantiation of indexerLock instance
|
private java.util.List<IndexListener> |
indexListeners |
private java.util.Map<java.lang.String,java.lang.Object> |
indexLocks
Maps repository UID to the lock object associated with the repository.
|
private org.apache.maven.index.updater.IndexUpdater |
indexUpdater |
private NexusIndex |
localIndex |
private static EquinoxLocker |
locker |
private static org.slf4j.Logger |
log |
private IMaven |
maven |
static int |
MIN_CLASS_QUERY_LENGTH |
private java.util.List<org.apache.maven.index.context.IndexCreator> |
minCreators |
private IMavenProjectRegistry |
projectManager |
private IRepositoryRegistry |
repositoryRegistry |
private IndexUpdaterJob |
updaterJob |
private java.util.Set<java.lang.String> |
updatingIndexes |
private NexusIndex |
workspaceIndex |
LOCAL_INDEX, WORKSPACE_INDEX
Constructor and Description |
---|
NexusIndexManager(org.codehaus.plexus.PlexusContainer container,
IMavenProjectRegistry projectManager,
IRepositoryRegistry repositoryRegistry,
java.io.File stateDir) |
Modifier and Type | Method and Description |
---|---|
private void |
addArtifactFile(java.util.Map<java.lang.String,IndexedArtifact> result,
IndexedArtifactFile af,
java.lang.String className,
java.lang.String packageName,
java.lang.String packaging) |
private void |
addClassifiersToQuery(org.apache.lucene.search.BooleanQuery.Builder bq,
int classifier) |
protected void |
addDocument(IRepository repository,
java.io.File file,
ArtifactKey key) |
void |
addIndexListener(IndexListener listener) |
org.apache.lucene.search.Query |
constructQuery(org.apache.maven.index.Field field,
SearchExpression query)
Method to construct Lucene Queries without need to actually know the structure and details (field names, analyze
details, etc) of the underlying index.
|
private org.apache.lucene.search.Query |
constructQuery(org.apache.maven.index.Field field,
java.lang.String query,
org.apache.maven.index.SearchType searchType) |
protected org.apache.maven.index.context.IndexingContext |
createIndexingContext(IRepository repository,
java.lang.String details) |
private static java.lang.String |
encode(byte[] digest) |
protected void |
fireIndexAdded(IRepository repository) |
protected void |
fireIndexChanged(IRepository repository) |
protected void |
fireIndexRemoved(IRepository repository) |
protected void |
fireIndexUpdating(IRepository repository) |
IIndex |
getAllIndexes()
Returns index aggregating all indexes enabled for repositories defined in settings.xml
|
org.apache.maven.archetype.source.ArchetypeDataSource |
getArchetypeCatalog() |
private org.apache.maven.index.ArtifactContext |
getArtifactContext(java.io.File file,
org.apache.maven.index.context.IndexingContext context) |
org.apache.maven.index.ArtifactContextProducer |
getArtifactContextProducer() |
protected java.lang.String |
getArtifactFileKey(java.lang.String group,
java.lang.String artifact,
java.lang.String packageName,
java.lang.String className) |
static java.lang.String |
getDocumentKey(ArtifactKey artifact) |
private java.util.List<org.apache.maven.index.context.IndexCreator> |
getFullCreator() |
IIndex |
getIndex(org.eclipse.core.resources.IProject project)
For Maven projects, returns index of all repositories configured for the project.
|
NexusIndex |
getIndex(IRepository repository) |
java.lang.String |
getIndexDetails(IRepository repository)
For tests only
|
private java.io.File |
getIndexDetailsFile() |
protected org.apache.lucene.store.Directory |
getIndexDirectory(IRepository repository) |
protected java.io.File |
getIndexDirectoryFile(IRepository repository) |
IndexedArtifactFile |
getIndexedArtifactFile(org.apache.maven.index.ArtifactInfo artifactInfo)
for Unit test
|
IndexedArtifactFile |
getIndexedArtifactFile(IRepository repository,
ArtifactKey gav)
for Unit test
|
org.apache.maven.index.NexusIndexer |
getIndexer() |
java.lang.String |
getIndexerId() |
protected java.util.List<org.apache.maven.index.context.IndexCreator> |
getIndexers(java.lang.String details) |
org.apache.maven.index.context.IndexingContext |
getIndexingContext(IRepository repository)
public for unit tests only!
|
private java.lang.Object |
getIndexLock(IRepository repository) |
org.apache.maven.index.updater.IndexUpdater |
getIndexUpdate() |
org.eclipse.core.runtime.jobs.Job |
getIndexUpdateJob()
for unit tests only
|
NexusIndex |
getLocalIndex() |
private java.util.List<org.apache.maven.index.context.IndexCreator> |
getMinCreator() |
private IMavenProjectFacade |
getProjectByArtifactKey(ArtifactKey artifactKey) |
IndexedArtifactGroup[] |
getRootIndexedArtifactGroups(IRepository repository)
for unit tests
|
private org.apache.maven.index.ArtifactContext |
getWorkspaceArtifactContext(IMavenProjectFacade facade,
org.apache.maven.index.context.IndexingContext context) |
NexusIndex |
getWorkspaceIndex() |
IndexedArtifactFile |
identify(java.io.File file) |
protected org.apache.maven.index.ArtifactInfo |
identify(java.io.File artifact,
java.util.Collection<org.apache.maven.index.context.IndexingContext> contexts) |
protected IndexedArtifactFile |
identify(IRepository repository,
java.io.File file) |
void |
initialize(org.eclipse.core.runtime.IProgressMonitor monitor)
This method is called from a background thread which does not keep any workspace locks.
|
protected boolean |
isUpdatingIndex(IRepository repository) |
void |
mavenProjectChanged(MavenProjectChangedEvent[] events,
org.eclipse.core.runtime.IProgressMonitor monitor)
This method is called while holding workspace lock.
|
protected org.apache.maven.index.updater.IndexUpdateRequest |
newIndexUpdateRequest(IRepository repository,
org.apache.maven.index.context.IndexingContext context,
org.eclipse.core.runtime.IProgressMonitor monitor) |
private NexusIndex |
newLocalIndex(IRepository localRepository) |
private void |
purgeCurrentIndex(org.apache.maven.index.context.IndexingContext context) |
private void |
reindexLocalRepository(IRepository repository,
boolean force,
org.eclipse.core.runtime.IProgressMonitor monitor) |
private void |
reindexWorkspace(boolean force,
org.eclipse.core.runtime.IProgressMonitor monitor) |
protected void |
removeDocument(IRepository repository,
java.io.File file,
ArtifactKey key,
IMavenProjectFacade facade) |
void |
removeIndexListener(IndexListener listener) |
void |
repositoryAdded(IRepository repository,
org.eclipse.core.runtime.IProgressMonitor monitor)
Called by repository registry when new repository is added.
|
void |
repositoryRemoved(IRepository repository,
org.eclipse.core.runtime.IProgressMonitor monitor)
Called by repository registry when a repository is removed.
|
IndexedArtifactGroup |
resolveGroup(IndexedArtifactGroup group) |
protected void |
scheduleIndexUpdate(IRepository repository,
boolean force) |
protected java.util.Map<java.lang.String,IndexedArtifact> |
search(IRepository repository,
org.apache.lucene.search.Query query) |
protected java.util.Map<java.lang.String,IndexedArtifact> |
search(IRepository repository,
SearchExpression term,
java.lang.String type) |
protected java.util.Map<java.lang.String,IndexedArtifact> |
search(IRepository repository,
SearchExpression term,
java.lang.String type,
int classifier) |
java.util.Map<java.lang.String,IndexedArtifact> |
search(SearchExpression term,
java.lang.String type) |
java.util.Map<java.lang.String,IndexedArtifact> |
search(SearchExpression term,
java.lang.String type,
int classifier) |
void |
setIndexDetails(IRepository repository,
java.lang.String details,
org.eclipse.core.runtime.IProgressMonitor monitor)
Updates index synchronously if monitor!=null.
|
private void |
setIndexDetails(IRepository repository,
java.lang.String details,
java.lang.String defaultDetails,
org.eclipse.core.runtime.IProgressMonitor monitor) |
void |
updateIndex(IRepository repository,
boolean force,
org.eclipse.core.runtime.IProgressMonitor monitor) |
private void |
updateRemoteIndex(IRepository repository,
boolean force,
org.eclipse.core.runtime.IProgressMonitor monitor) |
protected void |
writeIndexDetails() |
private static final org.slf4j.Logger log
public static final int MIN_CLASS_QUERY_LENGTH
private org.apache.maven.index.NexusIndexer indexer
private org.apache.maven.index.ArtifactContextProducer artifactContextProducer
private final java.lang.Object indexerLock
private final java.lang.Object contextProducerLock
private final IMaven maven
private final IMavenProjectRegistry projectManager
private final IRepositoryRegistry repositoryRegistry
private final java.util.List<org.apache.maven.index.context.IndexCreator> fullCreators
private final java.util.List<org.apache.maven.index.context.IndexCreator> minCreators
private final java.io.File baseIndexDir
private final java.util.List<IndexListener> indexListeners
private NexusIndex localIndex
private final NexusIndex workspaceIndex
private final IndexUpdaterJob updaterJob
private java.util.Properties indexDetails
private java.util.Set<java.lang.String> updatingIndexes
private final org.apache.maven.index.updater.IndexUpdater indexUpdater
private static final EquinoxLocker locker
private final java.util.Map<java.lang.String,java.lang.Object> indexLocks
private final org.codehaus.plexus.PlexusContainer container
private static final char[] DIGITS
public NexusIndexManager(org.codehaus.plexus.PlexusContainer container, IMavenProjectRegistry projectManager, IRepositoryRegistry repositoryRegistry, java.io.File stateDir)
private NexusIndex newLocalIndex(IRepository localRepository)
private java.util.List<org.apache.maven.index.context.IndexCreator> getFullCreator() throws org.codehaus.plexus.component.repository.exception.ComponentLookupException
org.codehaus.plexus.component.repository.exception.ComponentLookupException
private java.util.List<org.apache.maven.index.context.IndexCreator> getMinCreator() throws org.codehaus.plexus.component.repository.exception.ComponentLookupException
org.codehaus.plexus.component.repository.exception.ComponentLookupException
public IndexedArtifactFile getIndexedArtifactFile(IRepository repository, ArtifactKey gav) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
public IndexedArtifactFile getIndexedArtifactFile(org.apache.maven.index.ArtifactInfo artifactInfo)
public IndexedArtifactFile identify(java.io.File file) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
protected IndexedArtifactFile identify(IRepository repository, java.io.File file) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
public org.apache.lucene.search.Query constructQuery(org.apache.maven.index.Field field, SearchExpression query)
field
- query
- type
- private org.apache.lucene.search.Query constructQuery(org.apache.maven.index.Field field, java.lang.String query, org.apache.maven.index.SearchType searchType)
public java.util.Map<java.lang.String,IndexedArtifact> search(SearchExpression term, java.lang.String type) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
public java.util.Map<java.lang.String,IndexedArtifact> search(SearchExpression term, java.lang.String type, int classifier) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private void addClassifiersToQuery(org.apache.lucene.search.BooleanQuery.Builder bq, int classifier)
protected java.util.Map<java.lang.String,IndexedArtifact> search(IRepository repository, SearchExpression term, java.lang.String type, int classifier) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
protected java.util.Map<java.lang.String,IndexedArtifact> search(IRepository repository, SearchExpression term, java.lang.String type) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
protected java.util.Map<java.lang.String,IndexedArtifact> search(IRepository repository, org.apache.lucene.search.Query query) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private void addArtifactFile(java.util.Map<java.lang.String,IndexedArtifact> result, IndexedArtifactFile af, java.lang.String className, java.lang.String packageName, java.lang.String packaging)
protected java.lang.String getArtifactFileKey(java.lang.String group, java.lang.String artifact, java.lang.String packageName, java.lang.String className)
private void purgeCurrentIndex(org.apache.maven.index.context.IndexingContext context) throws java.io.IOException
java.io.IOException
private void reindexLocalRepository(IRepository repository, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private void reindexWorkspace(boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
protected void addDocument(IRepository repository, java.io.File file, ArtifactKey key)
private IMavenProjectFacade getProjectByArtifactKey(ArtifactKey artifactKey) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
protected void removeDocument(IRepository repository, java.io.File file, ArtifactKey key, IMavenProjectFacade facade)
private org.apache.maven.index.ArtifactContext getArtifactContext(java.io.File file, org.apache.maven.index.context.IndexingContext context)
private org.apache.maven.index.ArtifactContext getWorkspaceArtifactContext(IMavenProjectFacade facade, org.apache.maven.index.context.IndexingContext context)
protected void scheduleIndexUpdate(IRepository repository, boolean force)
public IndexedArtifactGroup[] getRootIndexedArtifactGroups(IRepository repository) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
public org.apache.maven.index.context.IndexingContext getIndexingContext(IRepository repository)
public org.apache.maven.index.NexusIndexer getIndexer()
public org.apache.maven.index.ArtifactContextProducer getArtifactContextProducer()
public static java.lang.String getDocumentKey(ArtifactKey artifact)
public void mavenProjectChanged(MavenProjectChangedEvent[] events, org.eclipse.core.runtime.IProgressMonitor monitor)
IMavenProjectChangedListener
mavenProjectChanged
in interface IMavenProjectChangedListener
public NexusIndex getWorkspaceIndex()
getWorkspaceIndex
in interface IndexManager
public NexusIndex getLocalIndex()
getLocalIndex
in interface IndexManager
public IIndex getIndex(org.eclipse.core.resources.IProject project)
IndexManager
getIndex
in interface IndexManager
public IIndex getAllIndexes()
IndexManager
getAllIndexes
in interface IndexManager
public NexusIndex getIndex(IRepository repository)
protected java.io.File getIndexDirectoryFile(IRepository repository)
protected org.apache.lucene.store.Directory getIndexDirectory(IRepository repository) throws java.io.IOException
java.io.IOException
public IndexedArtifactGroup resolveGroup(IndexedArtifactGroup group)
public void repositoryAdded(IRepository repository, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
IRepositoryIndexer
repositoryAdded
in interface IRepositoryIndexer
org.eclipse.core.runtime.CoreException
public java.lang.String getIndexDetails(IRepository repository)
public void setIndexDetails(IRepository repository, java.lang.String details, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private void setIndexDetails(IRepository repository, java.lang.String details, java.lang.String defaultDetails, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
protected org.apache.maven.index.context.IndexingContext createIndexingContext(IRepository repository, java.lang.String details) throws java.io.IOException
java.io.IOException
protected java.util.List<org.apache.maven.index.context.IndexCreator> getIndexers(java.lang.String details)
public void repositoryRemoved(IRepository repository, org.eclipse.core.runtime.IProgressMonitor monitor)
IRepositoryIndexer
repositoryRemoved
in interface IRepositoryIndexer
protected void fireIndexAdded(IRepository repository)
protected void fireIndexRemoved(IRepository repository)
protected boolean isUpdatingIndex(IRepository repository)
protected void fireIndexUpdating(IRepository repository)
protected void fireIndexChanged(IRepository repository)
public void removeIndexListener(IndexListener listener)
removeIndexListener
in interface IndexManager
public void addIndexListener(IndexListener listener)
addIndexListener
in interface IndexManager
public void updateIndex(IRepository repository, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private void updateRemoteIndex(IRepository repository, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
protected org.apache.maven.index.updater.IndexUpdateRequest newIndexUpdateRequest(IRepository repository, org.apache.maven.index.context.IndexingContext context, org.eclipse.core.runtime.IProgressMonitor monitor) throws java.io.IOException, org.eclipse.core.runtime.CoreException
java.io.IOException
org.eclipse.core.runtime.CoreException
public void initialize(org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
IRepositoryIndexer
initialize
in interface IRepositoryIndexer
org.eclipse.core.runtime.CoreException
protected void writeIndexDetails() throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private java.io.File getIndexDetailsFile()
public org.eclipse.core.runtime.jobs.Job getIndexUpdateJob()
public java.lang.String getIndexerId()
getIndexerId
in interface IRepositoryIndexer
private java.lang.Object getIndexLock(IRepository repository)
protected org.apache.maven.index.ArtifactInfo identify(java.io.File artifact, java.util.Collection<org.apache.maven.index.context.IndexingContext> contexts) throws java.io.IOException
java.io.IOException
private static java.lang.String encode(byte[] digest)
public org.apache.maven.index.updater.IndexUpdater getIndexUpdate()
public org.apache.maven.archetype.source.ArchetypeDataSource getArchetypeCatalog()