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.ComponentLookupExceptionprivate java.util.List<org.apache.maven.index.context.IndexCreator> getMinCreator()
throws org.codehaus.plexus.component.repository.exception.ComponentLookupException
org.codehaus.plexus.component.repository.exception.ComponentLookupExceptionpublic IndexedArtifactFile getIndexedArtifactFile(IRepository repository, ArtifactKey gav) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreExceptionpublic 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.CoreExceptionprotected IndexedArtifactFile identify(IRepository repository, java.io.File file) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreExceptionpublic 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.CoreExceptionpublic 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.CoreExceptionprivate 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.CoreExceptionprotected 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.CoreExceptionprotected 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.CoreExceptionprivate 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.IOExceptionprivate void reindexLocalRepository(IRepository repository, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreExceptionprivate void reindexWorkspace(boolean force,
org.eclipse.core.runtime.IProgressMonitor monitor)
throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreExceptionprotected 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.CoreExceptionprotected 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.CoreExceptionpublic 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)
IMavenProjectChangedListenermavenProjectChanged in interface IMavenProjectChangedListenerpublic NexusIndex getWorkspaceIndex()
getWorkspaceIndex in interface IndexManagerpublic NexusIndex getLocalIndex()
getLocalIndex in interface IndexManagerpublic IIndex getIndex(org.eclipse.core.resources.IProject project)
IndexManagergetIndex in interface IndexManagerpublic IIndex getAllIndexes()
IndexManagergetAllIndexes in interface IndexManagerpublic 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.IOExceptionpublic IndexedArtifactGroup resolveGroup(IndexedArtifactGroup group)
public void repositoryAdded(IRepository repository, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
IRepositoryIndexerrepositoryAdded in interface IRepositoryIndexerorg.eclipse.core.runtime.CoreExceptionpublic 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.CoreExceptionprivate 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.CoreExceptionprotected org.apache.maven.index.context.IndexingContext createIndexingContext(IRepository repository, java.lang.String details) throws java.io.IOException
java.io.IOExceptionprotected 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)
IRepositoryIndexerrepositoryRemoved in interface IRepositoryIndexerprotected 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 IndexManagerpublic void addIndexListener(IndexListener listener)
addIndexListener in interface IndexManagerpublic void updateIndex(IRepository repository, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreExceptionprivate 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.IOExceptionorg.eclipse.core.runtime.CoreExceptionpublic void initialize(org.eclipse.core.runtime.IProgressMonitor monitor)
throws org.eclipse.core.runtime.CoreException
IRepositoryIndexerinitialize in interface IRepositoryIndexerorg.eclipse.core.runtime.CoreExceptionprotected void writeIndexDetails()
throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreExceptionprivate java.io.File getIndexDetailsFile()
public org.eclipse.core.runtime.jobs.Job getIndexUpdateJob()
public java.lang.String getIndexerId()
getIndexerId in interface IRepositoryIndexerprivate 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.IOExceptionprivate static java.lang.String encode(byte[] digest)
public org.apache.maven.index.updater.IndexUpdater getIndexUpdate()
public org.apache.maven.archetype.source.ArchetypeDataSource getArchetypeCatalog()