public class BuildPathManager extends java.lang.Object implements IMavenProjectChangedListener, org.eclipse.core.resources.IResourceChangeListener, IClasspathManager
Modifier and Type | Class and Description |
---|---|
(package private) static class |
BuildPathManager.ModuleInfoDetector |
Modifier and Type | Field and Description |
---|---|
(package private) org.osgi.framework.BundleContext |
bundleContext |
static java.lang.String |
CLASSIFIER_JAVADOC |
static java.lang.String |
CLASSIFIER_SOURCES |
static java.lang.String |
CLASSIFIER_TESTS |
static java.lang.String |
CLASSIFIER_TESTSOURCES |
private DefaultClasspathManagerDelegate |
defaultDelegate |
private DownloadSourcesJob |
downloadSourcesJob |
(package private) IndexManager |
indexManager |
private static org.slf4j.Logger |
log |
static java.lang.String |
M2_REPO |
(package private) IMaven |
maven |
(package private) IMavenConfiguration |
mavenConfiguration |
(package private) java.util.Map<java.lang.String,InternalModuleInfo> |
moduleInfosMap |
(package private) IMavenProjectRegistry |
projectManager |
private static java.lang.String |
PROPERTY_JAVADOC_URL |
private static java.lang.String |
PROPERTY_SRC_ENCODING |
private static java.lang.String |
PROPERTY_SRC_PATH |
private static java.lang.String |
PROPERTY_SRC_ROOT |
static org.apache.maven.artifact.resolver.filter.ArtifactFilter |
SCOPE_FILTER_RUNTIME |
static org.apache.maven.artifact.resolver.filter.ArtifactFilter |
SCOPE_FILTER_TEST |
static int |
SOURCE_DOWNLOAD_PRIORITY |
(package private) java.io.File |
stateLocationDir |
ARTIFACT_ID_ATTRIBUTE, CLASSIFIER_ATTRIBUTE, CLASSPATH_DEFAULT, CLASSPATH_RUNTIME, CLASSPATH_TEST, CONTAINER_ID, GROUP_ID_ATTRIBUTE, OPTIONALDEPENDENCY_ATTRIBUTE, POMDERIVED_ATTRIBUTE, SCOPE_ATTRIBUTE, TEST_ATTRIBUTE, VERSION_ATTRIBUTE, WITHOUT_TEST_CODE
Constructor and Description |
---|
BuildPathManager(IMavenProjectRegistry projectManager,
IndexManager indexManager,
org.osgi.framework.BundleContext bundleContext,
java.io.File stateLocationDir) |
Modifier and Type | Method and Description |
---|---|
private void |
addEntries(java.util.Collection<org.eclipse.jdt.core.IClasspathEntry> collection,
org.eclipse.jdt.core.IClasspathEntry[] entries,
org.eclipse.core.runtime.IPath path) |
(package private) void |
attachSourcesAndJavadoc(org.eclipse.jdt.core.IPackageFragmentRoot fragment,
java.io.File sources,
java.io.File javadoc,
org.eclipse.core.runtime.IProgressMonitor monitor) |
private void |
configureAttachedSourcesAndJavadoc(IMavenProjectFacade facade,
java.util.Properties sourceAttachment,
ClasspathDescriptor classpath,
org.eclipse.core.runtime.IProgressMonitor monitor) |
ArtifactKey |
findArtifact(org.eclipse.core.resources.IProject project,
org.eclipse.core.runtime.IPath path) |
private ArtifactKey |
findArtifactByArtifactKey(org.eclipse.jdt.core.IClasspathEntry entry) |
private ArtifactKey |
findArtifactInIndex(org.eclipse.core.resources.IProject project,
org.eclipse.jdt.core.IClasspathEntry entry) |
private java.util.Set<ArtifactKey> |
findArtifacts(org.eclipse.core.resources.IProject project,
org.eclipse.core.runtime.IPath path)
Downloads artifact JavaDocs using background job.
|
private java.util.ArrayList<org.eclipse.jdt.core.IClasspathEntry> |
findClasspathEntries(org.eclipse.core.resources.IProject project,
org.eclipse.core.runtime.IPath path) |
private java.io.File |
getAttachedArtifactFile(ArtifactKey a,
java.lang.String classifier)
Resolves artifact from local repository.
|
(package private) ArtifactKey[] |
getAttachedSourcesAndJavadoc(ArtifactKey a,
java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> repositories,
boolean downloadSources,
boolean downloadJavaDoc)
Returns an array of
ArtifactKey s. |
private org.eclipse.jdt.core.IClasspathEntry[] |
getClasspath(IMavenProjectFacade projectFacade,
int kind,
java.util.Properties sourceAttachment,
boolean uniquePaths,
org.eclipse.core.runtime.IProgressMonitor monitor) |
org.eclipse.jdt.core.IClasspathEntry[] |
getClasspath(org.eclipse.core.resources.IProject project,
int scope,
boolean uniquePaths,
org.eclipse.core.runtime.IProgressMonitor monitor)
Calculates and returns Maven classpath of the project.
|
org.eclipse.jdt.core.IClasspathEntry[] |
getClasspath(org.eclipse.core.resources.IProject project,
int scope,
org.eclipse.core.runtime.IProgressMonitor monitor) |
org.eclipse.jdt.core.IClasspathEntry[] |
getClasspath(org.eclipse.core.resources.IProject project,
org.eclipse.core.runtime.IProgressMonitor monitor) |
java.io.File |
getContainerStateFile(org.eclipse.core.resources.IProject project)
public for unit tests only
|
private IClasspathManagerDelegate |
getDelegate(IMavenProjectFacade projectFacade,
org.eclipse.core.runtime.IProgressMonitor monitor) |
org.eclipse.core.runtime.jobs.Job |
getDownloadSourcesJob()
this is for unit tests only!
|
java.lang.String |
getJavadocLocation(org.eclipse.jdt.core.IClasspathEntry entry)
public for unit tests only
|
private static java.lang.String |
getJavaDocPathInArchive(java.io.File file) |
private java.lang.String |
getJavaDocUrl(ArtifactKey base) |
(package private) static java.lang.String |
getJavaDocUrl(java.io.File file) |
static org.eclipse.jdt.core.IClasspathContainer |
getMaven2ClasspathContainer(org.eclipse.jdt.core.IJavaProject project) |
static org.eclipse.jdt.core.IClasspathEntry |
getMavenContainerEntry(org.eclipse.jdt.core.IJavaProject javaProject) |
org.eclipse.jdt.core.IClasspathContainer |
getSavedContainer(org.eclipse.core.resources.IProject project) |
java.lang.String |
getSourceAttachmentEncoding(org.eclipse.jdt.core.IClasspathEntry entry) |
java.io.File |
getSourceAttachmentPropertiesFile(org.eclipse.core.resources.IProject project)
public for unit tests only
|
private org.eclipse.core.runtime.IPath |
getSourcePath(ArtifactKey a) |
(package private) static java.lang.String |
getSourcesClassifier(java.lang.String baseClassifier) |
private boolean |
isUnavailable(ArtifactKey a,
java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> repositories) |
void |
mavenProjectChanged(MavenProjectChangedEvent[] events,
org.eclipse.core.runtime.IProgressMonitor monitor)
This method is called while holding workspace lock.
|
void |
persistAttachedSourcesAndJavadoc(org.eclipse.jdt.core.IJavaProject project,
org.eclipse.jdt.core.IClasspathContainer containerSuggestion,
org.eclipse.core.runtime.IProgressMonitor monitor)
Extracts and persists custom source/javadoc attachment info
|
void |
resourceChanged(org.eclipse.core.resources.IResourceChangeEvent event) |
private void |
saveContainerState(org.eclipse.core.resources.IProject project,
org.eclipse.jdt.core.IClasspathContainer container) |
void |
scheduleDownload(org.eclipse.jdt.core.IPackageFragmentRoot fragment,
boolean downloadSources,
boolean downloadJavadoc)
Request download of sources and/or javadoc from Maven repositories by a background job (asynchronous execution).
|
void |
scheduleDownload(org.eclipse.core.resources.IProject project,
boolean downloadSources,
boolean downloadJavadoc)
Request download of sources and/or javadoc from Maven repositories by a background job for all classpath entries of
the project (asynchronous execution).
|
private void |
scheduleDownload(org.eclipse.core.resources.IProject project,
org.apache.maven.project.MavenProject mavenProject,
ArtifactKey artifact,
boolean downloadSources,
boolean downloadJavadoc) |
boolean |
setupVariables() |
void |
updateClasspath(org.eclipse.core.resources.IProject project,
org.eclipse.core.runtime.IProgressMonitor monitor)
Calculates Maven classpath of the project using default dependency resolution scope and updates contents of Maven
Dependencies classpath container.
|
boolean |
variablesAreInUse() |
private static final org.slf4j.Logger log
public static final int SOURCE_DOWNLOAD_PRIORITY
public static final java.lang.String M2_REPO
private static final java.lang.String PROPERTY_SRC_ROOT
private static final java.lang.String PROPERTY_SRC_ENCODING
private static final java.lang.String PROPERTY_SRC_PATH
private static final java.lang.String PROPERTY_JAVADOC_URL
public static final java.lang.String CLASSIFIER_SOURCES
public static final java.lang.String CLASSIFIER_JAVADOC
public static final java.lang.String CLASSIFIER_TESTS
public static final java.lang.String CLASSIFIER_TESTSOURCES
public static final org.apache.maven.artifact.resolver.filter.ArtifactFilter SCOPE_FILTER_RUNTIME
public static final org.apache.maven.artifact.resolver.filter.ArtifactFilter SCOPE_FILTER_TEST
final IMavenProjectRegistry projectManager
final IMavenConfiguration mavenConfiguration
final IndexManager indexManager
final org.osgi.framework.BundleContext bundleContext
final IMaven maven
final java.io.File stateLocationDir
final java.util.Map<java.lang.String,InternalModuleInfo> moduleInfosMap
private final DownloadSourcesJob downloadSourcesJob
private final DefaultClasspathManagerDelegate defaultDelegate
public BuildPathManager(IMavenProjectRegistry projectManager, IndexManager indexManager, org.osgi.framework.BundleContext bundleContext, java.io.File stateLocationDir)
public static org.eclipse.jdt.core.IClasspathEntry getMavenContainerEntry(org.eclipse.jdt.core.IJavaProject javaProject)
public static org.eclipse.jdt.core.IClasspathContainer getMaven2ClasspathContainer(org.eclipse.jdt.core.IJavaProject project) throws org.eclipse.jdt.core.JavaModelException
org.eclipse.jdt.core.JavaModelException
public void mavenProjectChanged(MavenProjectChangedEvent[] events, org.eclipse.core.runtime.IProgressMonitor monitor)
IMavenProjectChangedListener
mavenProjectChanged
in interface IMavenProjectChangedListener
public void updateClasspath(org.eclipse.core.resources.IProject project, org.eclipse.core.runtime.IProgressMonitor monitor)
IClasspathManager
updateClasspath
in interface IClasspathManager
private void saveContainerState(org.eclipse.core.resources.IProject project, org.eclipse.jdt.core.IClasspathContainer container)
public org.eclipse.jdt.core.IClasspathContainer getSavedContainer(org.eclipse.core.resources.IProject project) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private org.eclipse.jdt.core.IClasspathEntry[] getClasspath(IMavenProjectFacade projectFacade, int kind, java.util.Properties sourceAttachment, boolean uniquePaths, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private IClasspathManagerDelegate getDelegate(IMavenProjectFacade projectFacade, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private void configureAttachedSourcesAndJavadoc(IMavenProjectFacade facade, java.util.Properties sourceAttachment, ClasspathDescriptor classpath, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private boolean isUnavailable(ArtifactKey a, java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> repositories) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
public org.eclipse.jdt.core.IClasspathEntry[] getClasspath(org.eclipse.core.resources.IProject project, int scope, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
public org.eclipse.jdt.core.IClasspathEntry[] getClasspath(org.eclipse.core.resources.IProject project, int scope, boolean uniquePaths, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
IClasspathManager
getClasspath
in interface IClasspathManager
project
- the project to calculate classpath forscope
- one of CLASPATH_* constants, that specifies Maven dependency resolution scope for the classpathuniquePaths
- enforce (true) or not to enforce (false) uniqueness of classpath entries paths.monitor
- progress monitororg.eclipse.core.runtime.CoreException
public org.eclipse.jdt.core.IClasspathEntry[] getClasspath(org.eclipse.core.resources.IProject project, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private java.util.Set<ArtifactKey> findArtifacts(org.eclipse.core.resources.IProject project, org.eclipse.core.runtime.IPath path) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
public ArtifactKey findArtifact(org.eclipse.core.resources.IProject project, org.eclipse.core.runtime.IPath path) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private ArtifactKey findArtifactByArtifactKey(org.eclipse.jdt.core.IClasspathEntry entry)
private ArtifactKey findArtifactInIndex(org.eclipse.core.resources.IProject project, org.eclipse.jdt.core.IClasspathEntry entry) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
private java.util.ArrayList<org.eclipse.jdt.core.IClasspathEntry> findClasspathEntries(org.eclipse.core.resources.IProject project, org.eclipse.core.runtime.IPath path) throws org.eclipse.jdt.core.JavaModelException
org.eclipse.jdt.core.JavaModelException
private void addEntries(java.util.Collection<org.eclipse.jdt.core.IClasspathEntry> collection, org.eclipse.jdt.core.IClasspathEntry[] entries, org.eclipse.core.runtime.IPath path)
public void persistAttachedSourcesAndJavadoc(org.eclipse.jdt.core.IJavaProject project, org.eclipse.jdt.core.IClasspathContainer containerSuggestion, org.eclipse.core.runtime.IProgressMonitor monitor) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
public java.lang.String getJavadocLocation(org.eclipse.jdt.core.IClasspathEntry entry)
public java.lang.String getSourceAttachmentEncoding(org.eclipse.jdt.core.IClasspathEntry entry)
public java.io.File getSourceAttachmentPropertiesFile(org.eclipse.core.resources.IProject project)
public java.io.File getContainerStateFile(org.eclipse.core.resources.IProject project)
public void resourceChanged(org.eclipse.core.resources.IResourceChangeEvent event)
resourceChanged
in interface org.eclipse.core.resources.IResourceChangeListener
public boolean setupVariables()
public boolean variablesAreInUse()
static java.lang.String getSourcesClassifier(java.lang.String baseClassifier)
private org.eclipse.core.runtime.IPath getSourcePath(ArtifactKey a)
private java.io.File getAttachedArtifactFile(ArtifactKey a, java.lang.String classifier)
private java.lang.String getJavaDocUrl(ArtifactKey base)
static java.lang.String getJavaDocUrl(java.io.File file)
private static java.lang.String getJavaDocPathInArchive(java.io.File file)
public org.eclipse.core.runtime.jobs.Job getDownloadSourcesJob()
public void scheduleDownload(org.eclipse.jdt.core.IPackageFragmentRoot fragment, boolean downloadSources, boolean downloadJavadoc)
IClasspathManager
scheduleDownload
in interface IClasspathManager
public void scheduleDownload(org.eclipse.core.resources.IProject project, boolean downloadSources, boolean downloadJavadoc)
IClasspathManager
scheduleDownload
in interface IClasspathManager
private void scheduleDownload(org.eclipse.core.resources.IProject project, org.apache.maven.project.MavenProject mavenProject, ArtifactKey artifact, boolean downloadSources, boolean downloadJavadoc) throws org.eclipse.core.runtime.CoreException
org.eclipse.core.runtime.CoreException
ArtifactKey[] getAttachedSourcesAndJavadoc(ArtifactKey a, java.util.List<org.apache.maven.artifact.repository.ArtifactRepository> repositories, boolean downloadSources, boolean downloadJavaDoc) throws org.eclipse.core.runtime.CoreException
ArtifactKey
s. ArtifactKey[0], holds the sources ArtifactKey
, if source download
was requested and sources are available. ArtifactKey[1], holds the javadoc ArtifactKey
, if javadoc download
was requested, or requested sources are unavailable, and javadoc is availableorg.eclipse.core.runtime.CoreException
void attachSourcesAndJavadoc(org.eclipse.jdt.core.IPackageFragmentRoot fragment, java.io.File sources, java.io.File javadoc, org.eclipse.core.runtime.IProgressMonitor monitor)