org.eclipse.jdt.internal.core
Class JavaProject

java.lang.Object
  extended by org.eclipse.core.runtime.PlatformObject
      extended by org.eclipse.jdt.internal.core.JavaElement
          extended by org.eclipse.jdt.internal.core.Openable
              extended by org.eclipse.jdt.internal.core.JavaProject
All Implemented Interfaces:
IProjectNature, org.eclipse.core.runtime.IAdaptable, IBufferChangedListener, IJavaElement, IJavaProject, IOpenable, IParent, SuffixConstants
Direct Known Subclasses:
ExternalJavaProject

public class JavaProject
extends Openable
implements IJavaProject, IProjectNature, SuffixConstants

Handle for a Java Project.

A Java Project internally maintains a devpath that corresponds to the project's classpath. The classpath may include source folders from the current project; jars in the current project, other projects, and the local file system; and binary folders (output location) of other projects. The Java Model presents source elements corresponding to output .class files in other projects, and thus uses the devpath rather than the classpath (which is really a compilation path). The devpath mimics the classpath, except has source folder entries in place of output locations in external projects.

Each JavaProject has a NameLookup facility that locates elements on by name, based on the devpath.

See Also:
IJavaProject

Field Summary
static java.lang.String CLASSPATH_FILENAME
          Name of file containing project classpath
static java.lang.String DEFAULT_PREFERENCES_DIRNAME
          Name of directory containing preferences file
static IClasspathEntry[] INVALID_CLASSPATH
          Value of the project's raw classpath if the .classpath file contains invalid entries.
static java.lang.String JAVA_CORE_PREFS_FILE
          Extension for file containing custom project preferences
 
Fields inherited from class org.eclipse.jdt.internal.core.JavaElement
JEM_ANNOTATION, JEM_CLASSFILE, JEM_COMPILATIONUNIT, JEM_COUNT, JEM_ESCAPE, JEM_FIELD, JEM_IMPORTDECLARATION, JEM_INITIALIZER, JEM_JAVAPROJECT, JEM_LOCALVARIABLE, JEM_METHOD, JEM_PACKAGEDECLARATION, JEM_PACKAGEFRAGMENT, JEM_PACKAGEFRAGMENTROOT, JEM_TYPE, JEM_TYPE_PARAMETER
 
Fields inherited from interface org.eclipse.jdt.core.IJavaElement
ANNOTATION, CLASS_FILE, COMPILATION_UNIT, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVA_MODEL, JAVA_PROJECT, LOCAL_VARIABLE, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE, TYPE_PARAMETER
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.util.SuffixConstants
EXTENSION_class, EXTENSION_CLASS, EXTENSION_java, EXTENSION_JAVA, SUFFIX_class, SUFFIX_CLASS, SUFFIX_java, SUFFIX_JAVA, SUFFIX_STRING_class, SUFFIX_STRING_CLASS, SUFFIX_STRING_java, SUFFIX_STRING_JAVA
 
Constructor Summary
JavaProject()
          Constructor needed for IProject.getNature() and IProject.addNature().
JavaProject(IProject project, JavaElement parent)
           
 
Method Summary
static boolean areClasspathsEqual(IClasspathEntry[] firstClasspath, IClasspathEntry[] secondClasspath, org.eclipse.core.runtime.IPath firstOutputLocation, org.eclipse.core.runtime.IPath secondOutputLocation)
           
static org.eclipse.core.runtime.IPath canonicalizedPath(org.eclipse.core.runtime.IPath externalPath)
          Returns a canonicalized path from the given external path.
 IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry resolvedEntry)
          Computes the package fragment roots identified by the given entry.
 IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, boolean retrieveExportedRoots, java.util.Map rootToResolvedEntries)
          Returns (local/all) the package fragment roots identified by the given project's classpath.
 void computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath, ObjectVector accumulatedRoots, java.util.HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, java.util.Map rootToResolvedEntries)
          Returns (local/all) the package fragment roots identified by the given project's classpath.
 void computePackageFragmentRoots(IClasspathEntry resolvedEntry, ObjectVector accumulatedRoots, java.util.HashSet rootIDs, IClasspathEntry referringEntry, boolean retrieveExportedRoots, java.util.Map rootToResolvedEntries)
          Returns the package fragment roots identified by the given entry.
 java.lang.String computeSharedPropertyFileName(org.eclipse.core.runtime.QualifiedName qName)
          Compute the file name to use for a given shared property
 void configure()
          Configure the project with Java nature.
 boolean contains(IResource resource)
           
 void createClasspathProblemMarker(IJavaModelStatus status)
          Record a new marker denoting a classpath problem
 IClasspathEntry[] decodeClasspath(java.lang.String xmlClasspath, java.util.Map unknownElements)
           
 IClasspathEntry decodeClasspathEntry(java.lang.String encodedEntry)
          Decodes the classpath entry that has been encoded in the given string in the context of this project.
 void deconfigure()
          /** Removes the Java nature from the project.
 java.lang.String encodeClasspathEntry(IClasspathEntry classpathEntry)
          Encodes the given classpath entry into a string in the context of this project.
 boolean equals(java.lang.Object o)
          Returns true if this handle represents the same Java project as the given handle.
 IJavaElement findElement(org.eclipse.core.runtime.IPath path)
          Returns the IJavaElement corresponding to the given classpath-relative path, or null if no such IJavaElement is found.
 IJavaElement findElement(org.eclipse.core.runtime.IPath path, WorkingCopyOwner owner)
          Returns the IJavaElement corresponding to the given classpath-relative path, or null if no such IJavaElement is found.
 IJavaElement findElement(java.lang.String bindingKey, WorkingCopyOwner owner)
          Finds the Java element corresponding to the given binding key if any, else returns null.
 IPackageFragment findPackageFragment(org.eclipse.core.runtime.IPath path)
          Returns the first existing package fragment on this project's classpath whose path matches the given (absolute) path, or null if none exist.
 IJavaElement findPackageFragment(java.lang.String packageName)
           
 IPackageFragmentRoot findPackageFragmentRoot(org.eclipse.core.runtime.IPath path)
          Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, or null if one does not exist.
 IPackageFragmentRoot findPackageFragmentRoot0(org.eclipse.core.runtime.IPath path)
           
 IPackageFragmentRoot[] findPackageFragmentRoots(IClasspathEntry entry)
          Returns the existing package fragment roots identified by the given entry.
 IType findType(java.lang.String fullyQualifiedName)
          Returns the first type found following this project's classpath with the given fully qualified name or null if none is found.
 IType findType(java.lang.String fullyQualifiedName, org.eclipse.core.runtime.IProgressMonitor progressMonitor)
          Same functionality as IJavaProject.findType(String) but also look for secondary types if given name does not match a compilation unit name.
 IType findType(java.lang.String packageName, java.lang.String typeQualifiedName)
          Returns the first type found following this project's classpath with the given package name and type qualified name or null if none is found.
 IType findType(java.lang.String packageName, java.lang.String typeQualifiedName, org.eclipse.core.runtime.IProgressMonitor progressMonitor)
          Same functionality as IJavaProject.findType(String, String) but also look for secondary types if given name does not match a compilation unit name.
 IType findType(java.lang.String packageName, java.lang.String typeQualifiedName, WorkingCopyOwner owner)
          Returns the first type found following this project's classpath with the given package name and type qualified name or null if none is found.
 IType findType(java.lang.String packageName, java.lang.String typeQualifiedName, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor progressMonitor)
          Same functionality as IJavaProject.findType(String, String, WorkingCopyOwner) but also look for secondary types if given name does not match a compilation unit name.
 IType findType(java.lang.String fullyQualifiedName, WorkingCopyOwner owner)
          Returns the first type found following this project's classpath with the given fully qualified name or null if none is found.
 IType findType(java.lang.String fullyQualifiedName, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor progressMonitor)
          Same functionality as IJavaProject.findType(String, WorkingCopyOwner) but also look for secondary types if given name does not match a compilation unit name.
 org.eclipse.core.runtime.IPath[] getAccessRestrictions(java.lang.String optionName)
          Returns the set of patterns corresponding to this project visibility given rules
 IPackageFragmentRoot[] getAllPackageFragmentRoots()
          Returns all of the existing package fragment roots that exist on the classpath, in the order they are defined by the classpath.
 IPackageFragmentRoot[] getAllPackageFragmentRoots(java.util.Map rootToResolvedEntries)
           
 IClasspathEntry getClasspathEntryFor(org.eclipse.core.runtime.IPath path)
          Returns the classpath entry that refers to the given path or null if there is no reference to the path.
 IMarker getCycleMarker()
           
 org.eclipse.core.runtime.preferences.IEclipsePreferences getEclipsePreferences()
          Returns the project custom preference pool.
 java.lang.String getElementName()
          Returns the name of this element.
 int getElementType()
          Returns this element's kind encoded as an integer.
 IClasspathEntry[] getExpandedClasspath()
          This is a helper method returning the expanded classpath for the project, as a list of classpath entries, where all classpath variable entries have been resolved and substituted with their final target entries.
 IPackageFragmentRoot getFolderPackageFragmentRoot(org.eclipse.core.runtime.IPath path)
          The path is known to match a source/library folder entry.
 IJavaElement getHandleFromMemento(java.lang.String token, MementoTokenizer memento, WorkingCopyOwner owner)
           
 java.lang.Object[] getNonJavaResources()
          Returns an array of non-java resources contained in the receiver.
 java.lang.String getOption(java.lang.String optionName, boolean inheritJavaCoreOptions)
          Helper method for returning one option value only.
 java.util.Map getOptions(boolean inheritJavaCoreOptions)
          Returns the table of the current custom options for this project.
 org.eclipse.core.runtime.IPath getOutputLocation()
          Returns the default output location for this project as a workspace- relative absolute path.
 IPackageFragmentRoot getPackageFragmentRoot(org.eclipse.core.runtime.IPath path)
           
 IPackageFragmentRoot getPackageFragmentRoot(IResource resource)
          Returns a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a ZIP archive (e.g.
 IPackageFragmentRoot getPackageFragmentRoot(java.lang.String externalLibraryPath)
          Returns a package fragment root for an external library (a ZIP archive - e.g.
 IPackageFragmentRoot getPackageFragmentRoot0(org.eclipse.core.runtime.IPath externalLibraryPath)
           
 IPackageFragmentRoot[] getPackageFragmentRoots()
          Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath.
 IPackageFragmentRoot[] getPackageFragmentRoots(IClasspathEntry entry)
          Deprecated.  
 IPackageFragment[] getPackageFragments()
          Returns all package fragments in all package fragment roots contained in this project.
 IPackageFragment[] getPackageFragmentsInRoots(IPackageFragmentRoot[] roots)
          Returns all the package fragments found in the specified package fragment roots.
 org.eclipse.core.runtime.IPath getPath()
          Returns the path to the innermost resource enclosing this element.
 JavaModelManager.PerProjectInfo getPerProjectInfo()
           
 org.eclipse.core.runtime.Preferences getPreferences()
          Deprecated. WARNING: this method do nothing from now and will be removed soon! If you use it, switch as soon as possible to new preferences API by using getEclipsePreferences() to avoid future compilation error...
 IProject getProject()
          Returns the IProject on which this IJavaProject was created.
 org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache getProjectCache()
           
 IClasspathEntry[] getRawClasspath()
          Returns the raw classpath for the project, as a list of classpath entries.
 java.lang.String[] getRequiredProjectNames()
          Returns the names of the projects that are directly required by this project.
 IClasspathEntry[] getResolvedClasspath()
           
 IClasspathEntry[] getResolvedClasspath(boolean ignoreUnresolvedEntry)
          This is a helper method returning the resolved classpath for the project as a list of simple (non-variable, non-container) classpath entries.
 java.lang.String getSharedProperty(java.lang.String key)
          Retrieve a shared property on a project.
 SourceMapper getSourceMapper()
          Returns the SourceMapper facility for this element, or null if this element does not have a SourceMapper.
 IResource getUnderlyingResource()
          Returns the smallest underlying resource that contains this element, or null if this element is not contained in a resource.
 boolean hasBuildState()
          Returns whether this project has been built at least once and thus whether it has a build state.
 boolean hasClasspathCycle(IClasspathEntry[] preferredClasspath)
          Returns whether setting this project's classpath to the given classpath entries would result in a cycle.
 boolean hasCycleMarker()
           
 int hashCode()
          Returns the hash code for this Java element.
static boolean hasJavaNature(IProject project)
          Returns true if the given project is accessible and it has a java nature, otherwise false.
 boolean hasSource()
          Answers true if the project potentially contains any source.
 boolean isOnClasspath(IJavaElement element)
          Returns whether the given element is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.
 boolean isOnClasspath(IResource resource)
          Returns whether the given resource is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.
 IEvaluationContext newEvaluationContext()
          Creates a new evaluation context.
 NameLookup newNameLookup(ICompilationUnit[] workingCopies)
           
 NameLookup newNameLookup(WorkingCopyOwner owner)
           
 SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies)
           
 SearchableEnvironment newSearchableNameEnvironment(WorkingCopyOwner owner)
           
 ITypeHierarchy newTypeHierarchy(IRegion region, org.eclipse.core.runtime.IProgressMonitor monitor)
          Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.
 ITypeHierarchy newTypeHierarchy(IRegion region, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor)
          Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region and considering types in the working copies with the given owner.
 ITypeHierarchy newTypeHierarchy(IType type, IRegion region, org.eclipse.core.runtime.IProgressMonitor monitor)
          Creates and returns a type hierarchy for the given type considering subtypes in the specified region.
 ITypeHierarchy newTypeHierarchy(IType type, IRegion region, WorkingCopyOwner owner, org.eclipse.core.runtime.IProgressMonitor monitor)
          Creates and returns a type hierarchy for the given type considering subtypes in the specified region and considering types in the working copies with the given owner.
 java.lang.String[] projectPrerequisites(IClasspathEntry[] entries)
           
 IClasspathEntry[] readFileEntriesWithException(java.util.Map unknownElements)
           
 org.eclipse.core.runtime.IPath readOutputLocation()
          Returns the default output location for the project as defined by its .classpath file from disk, or null if unable to read the file.
 IClasspathEntry[] readRawClasspath()
          Returns the raw classpath for the project as defined by its .classpath file from disk, or null if unable to read the file.
 void resetCaches()
           
 IClasspathEntry[] resolveClasspath(IClasspathEntry[] rawClasspath)
           
 void resolveClasspath(JavaModelManager.PerProjectInfo perProjectInfo)
           
 IResource resource(PackageFragmentRoot root)
           
 java.lang.String rootID()
          Answers an ID which is used to distinguish project/entries during package fragment root computations
 void setOption(java.lang.String optionName, java.lang.String optionValue)
          Helper method for setting one option value only.
 void setOptions(java.util.Map newOptions)
          Sets the project custom options.
 void setOutputLocation(org.eclipse.core.runtime.IPath path, org.eclipse.core.runtime.IProgressMonitor monitor)
          Sets the default output location of this project to the location described by the given workspace-relative absolute path.
 void setProject(IProject project)
          Sets the underlying kernel project of this Java project, and fills in its parent and name.
 void setRawClasspath(IClasspathEntry[] entries, boolean canModifyResources, org.eclipse.core.runtime.IProgressMonitor monitor)
          Sets the classpath of this project using a list of classpath entries.
 void setRawClasspath(IClasspathEntry[] newRawClasspath, org.eclipse.core.runtime.IPath newOutputLocation, boolean canModifyResources, org.eclipse.core.runtime.IProgressMonitor monitor)
          Sets both the classpath of this project and its default output location at once.
 void setRawClasspath(IClasspathEntry[] entries, org.eclipse.core.runtime.IPath outputLocation, org.eclipse.core.runtime.IProgressMonitor monitor)
          Sets the both the classpath of this project and its default output location at once.
 void setRawClasspath(IClasspathEntry[] entries, org.eclipse.core.runtime.IProgressMonitor monitor)
          Sets the classpath of this project using a list of classpath entries.
 void setSharedProperty(java.lang.String key, java.lang.String value)
          Record a shared persistent property onto a project.
 void updateCycleParticipants(java.util.ArrayList prereqChain, java.util.HashSet cycleParticipants, IWorkspaceRoot workspaceRoot, java.util.HashSet traversed, java.util.Map preferredClasspaths)
          If a cycle is detected, then cycleParticipants contains all the paths of projects involved in this cycle (directly and indirectly), no cycle if the set is empty (and started empty)
static void validateCycles(java.util.Map preferredClasspaths)
           
 boolean writeFileEntries(IClasspathEntry[] newClasspath, org.eclipse.core.runtime.IPath newOutputLocation)
          Writes the classpath in a sharable format (VCM-wise) only when necessary, that is, if it is semantically different from the existing one in file.
 
Methods inherited from class org.eclipse.jdt.internal.core.Openable
bufferChanged, canBeRemovedFromCache, canBufferBeRemovedFromCache, exists, findRecommendedLineSeparator, getBuffer, getBufferFactory, getCorrespondingResource, getOpenable, getPackageFragmentRoot, getResource, hasUnsavedChanges, isConsistent, isOpen, isStructureKnown, makeConsistent, open, resource, save
 
Methods inherited from class org.eclipse.jdt.internal.core.JavaElement
close, findNode, getAncestor, getAttachedJavadoc, getChildren, getChildrenOfType, getClassFile, getCompilationUnit, getElementInfo, getElementInfo, getHandleFromMemento, getHandleIdentifier, getHandleMemento, getJavaModel, getJavaProject, getOpenableParent, getParent, getPrimaryElement, getPrimaryElement, getSchedulingRule, hasChildren, isAncestorOf, isReadOnly, newJavaModelException, newNotPresentException, readableName, resolved, toDebugString, toString, toStringInfo, toStringWithAncestors, toStringWithAncestors, unresolved
 
Methods inherited from class org.eclipse.core.runtime.PlatformObject
getAdapter
 
Methods inherited from class java.lang.Object
getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.eclipse.jdt.core.IParent
getChildren, hasChildren
 
Methods inherited from interface org.eclipse.jdt.core.IJavaElement
exists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPrimaryElement, getResource, getSchedulingRule, isReadOnly, isStructureKnown
 
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
 
Methods inherited from interface org.eclipse.jdt.core.IOpenable
close, findRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, save
 

Field Detail

CLASSPATH_FILENAME

public static final java.lang.String CLASSPATH_FILENAME
Name of file containing project classpath

See Also:
Constant Field Values

INVALID_CLASSPATH

public static final IClasspathEntry[] INVALID_CLASSPATH
Value of the project's raw classpath if the .classpath file contains invalid entries.


DEFAULT_PREFERENCES_DIRNAME

public static final java.lang.String DEFAULT_PREFERENCES_DIRNAME
Name of directory containing preferences file

See Also:
Constant Field Values

JAVA_CORE_PREFS_FILE

public static final java.lang.String JAVA_CORE_PREFS_FILE
Extension for file containing custom project preferences

See Also:
Constant Field Values
Constructor Detail

JavaProject

public JavaProject()
Constructor needed for IProject.getNature() and IProject.addNature().

See Also:
setProject(IProject)

JavaProject

public JavaProject(IProject project,
                   JavaElement parent)
Method Detail

areClasspathsEqual

public static boolean areClasspathsEqual(IClasspathEntry[] firstClasspath,
                                         IClasspathEntry[] secondClasspath,
                                         org.eclipse.core.runtime.IPath firstOutputLocation,
                                         org.eclipse.core.runtime.IPath secondOutputLocation)

canonicalizedPath

public static org.eclipse.core.runtime.IPath canonicalizedPath(org.eclipse.core.runtime.IPath externalPath)
Returns a canonicalized path from the given external path. Note that the return path contains the same number of segments and it contains a device only if the given path contained one.

Parameters:
externalPath - IPath
Returns:
IPath
See Also:
for the definition of a canonicalized path

hasJavaNature

public static boolean hasJavaNature(IProject project)
Returns true if the given project is accessible and it has a java nature, otherwise false.

Parameters:
project - IProject
Returns:
boolean

validateCycles

public static void validateCycles(java.util.Map preferredClasspaths)
                           throws JavaModelException
Throws:
JavaModelException

computePackageFragmentRoots

public IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry resolvedEntry)
Computes the package fragment roots identified by the given entry. Only works with resolved entry

Parameters:
resolvedEntry - IClasspathEntry
Returns:
IPackageFragmentRoot[]

computePackageFragmentRoots

public void computePackageFragmentRoots(IClasspathEntry resolvedEntry,
                                        ObjectVector accumulatedRoots,
                                        java.util.HashSet rootIDs,
                                        IClasspathEntry referringEntry,
                                        boolean retrieveExportedRoots,
                                        java.util.Map rootToResolvedEntries)
                                 throws JavaModelException
Returns the package fragment roots identified by the given entry. In case it refers to a project, it will follow its classpath so as to find exported roots as well. Only works with resolved entry

Parameters:
resolvedEntry - IClasspathEntry
accumulatedRoots - ObjectVector
rootIDs - HashSet
referringEntry - the CP entry (project) referring to this entry, or null if initial project
retrieveExportedRoots - boolean
Throws:
JavaModelException

computePackageFragmentRoots

public IPackageFragmentRoot[] computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath,
                                                          boolean retrieveExportedRoots,
                                                          java.util.Map rootToResolvedEntries)
                                                   throws JavaModelException
Returns (local/all) the package fragment roots identified by the given project's classpath. Note: this follows project classpath references to find required project contributions, eliminating duplicates silently. Only works with resolved entries

Parameters:
resolvedClasspath - IClasspathEntry[]
retrieveExportedRoots - boolean
Returns:
IPackageFragmentRoot[]
Throws:
JavaModelException

computePackageFragmentRoots

public void computePackageFragmentRoots(IClasspathEntry[] resolvedClasspath,
                                        ObjectVector accumulatedRoots,
                                        java.util.HashSet rootIDs,
                                        IClasspathEntry referringEntry,
                                        boolean retrieveExportedRoots,
                                        java.util.Map rootToResolvedEntries)
                                 throws JavaModelException
Returns (local/all) the package fragment roots identified by the given project's classpath. Note: this follows project classpath references to find required project contributions, eliminating duplicates silently. Only works with resolved entries

Parameters:
resolvedClasspath - IClasspathEntry[]
accumulatedRoots - ObjectVector
rootIDs - HashSet
referringEntry - project entry referring to this CP or null if initial project
retrieveExportedRoots - boolean
Throws:
JavaModelException

computeSharedPropertyFileName

public java.lang.String computeSharedPropertyFileName(org.eclipse.core.runtime.QualifiedName qName)
Compute the file name to use for a given shared property

Parameters:
qName - QualifiedName
Returns:
String

configure

public void configure()
               throws org.eclipse.core.runtime.CoreException
Configure the project with Java nature.

Specified by:
configure in interface IProjectNature
Throws:
org.eclipse.core.runtime.CoreException - if this method fails.

contains

public boolean contains(IResource resource)

createClasspathProblemMarker

public void createClasspathProblemMarker(IJavaModelStatus status)
Record a new marker denoting a classpath problem


decodeClasspath

public IClasspathEntry[] decodeClasspath(java.lang.String xmlClasspath,
                                         java.util.Map unknownElements)
                                  throws java.io.IOException,
                                         org.eclipse.core.runtime.AssertionFailedException
Throws:
java.io.IOException
org.eclipse.core.runtime.AssertionFailedException

decodeClasspathEntry

public IClasspathEntry decodeClasspathEntry(java.lang.String encodedEntry)
Description copied from interface: IJavaProject
Decodes the classpath entry that has been encoded in the given string in the context of this project. Returns null if the encoded entry is malformed.

Specified by:
decodeClasspathEntry in interface IJavaProject
Parameters:
encodedEntry - the encoded classpath entry
Returns:
the decoded classpath entry, or null if unable to decode it

deconfigure

public void deconfigure()
                 throws org.eclipse.core.runtime.CoreException
/** Removes the Java nature from the project.

Specified by:
deconfigure in interface IProjectNature
Throws:
org.eclipse.core.runtime.CoreException - if this method fails.

encodeClasspathEntry

public java.lang.String encodeClasspathEntry(IClasspathEntry classpathEntry)
Description copied from interface: IJavaProject
Encodes the given classpath entry into a string in the context of this project.

Specified by:
encodeClasspathEntry in interface IJavaProject
Parameters:
classpathEntry - the classpath entry to encode
Returns:
the encoded classpath entry

equals

public boolean equals(java.lang.Object o)
Returns true if this handle represents the same Java project as the given handle. Two handles represent the same project if they are identical or if they represent a project with the same underlying resource and occurrence counts.

Overrides:
equals in class JavaElement
See Also:
JavaElement.equals(Object)

findElement

public IJavaElement findElement(org.eclipse.core.runtime.IPath path)
                         throws JavaModelException
Description copied from interface: IJavaProject
Returns the IJavaElement corresponding to the given classpath-relative path, or null if no such IJavaElement is found. The result is one of an ICompilationUnit, IClassFile, or IPackageFragment.

When looking for a package fragment, there might be several potential matches; only one of them is returned.

For example, the path "java/lang/Object.java", would result in the ICompilationUnit or IClassFile corresponding to "java.lang.Object". The path "java/lang" would result in the IPackageFragment for "java.lang".

Specified by:
findElement in interface IJavaProject
Parameters:
path - the given classpath-relative path
Returns:
the IJavaElement corresponding to the given classpath-relative path, or null if no such IJavaElement is found
Throws:
JavaModelException - if the given path is null or absolute
See Also:
IJavaProject.findElement(IPath)

findElement

public IJavaElement findElement(org.eclipse.core.runtime.IPath path,
                                WorkingCopyOwner owner)
                         throws JavaModelException
Description copied from interface: IJavaProject
Returns the IJavaElement corresponding to the given classpath-relative path, or null if no such IJavaElement is found. The result is one of an ICompilationUnit, IClassFile, or IPackageFragment. If it is an ICompilationUnit, its owner is the given owner.

When looking for a package fragment, there might be several potential matches; only one of them is returned.

For example, the path "java/lang/Object.java", would result in the ICompilationUnit or IClassFile corresponding to "java.lang.Object". The path "java/lang" would result in the IPackageFragment for "java.lang".

Specified by:
findElement in interface IJavaProject
Parameters:
path - the given classpath-relative path
owner - the owner of the returned compilation unit, ignored if it is not a compilation unit.
Returns:
the IJavaElement corresponding to the given classpath-relative path, or null if no such IJavaElement is found
Throws:
JavaModelException - if the given path is null or absolute
See Also:
IJavaProject.findElement(IPath, WorkingCopyOwner)

findPackageFragment

public IJavaElement findPackageFragment(java.lang.String packageName)
                                 throws JavaModelException
Throws:
JavaModelException

findElement

public IJavaElement findElement(java.lang.String bindingKey,
                                WorkingCopyOwner owner)
                         throws JavaModelException
Description copied from interface: IJavaProject
Finds the Java element corresponding to the given binding key if any, else returns null. Elements are looked up using this project's classpath. The first element corresponding to the given key on this project's classpath is returned.

Possible elements are:

Note: if two methods correspond to the binding key because their parameter types' simple names are the same, then the first one is returned. For example, if a class defines two methods foo(p1.Y, String) and foo(p2.Y, String), in both cases the parameter type's simple names are {"Y", "String"}. Thus foo(p1.Y, String) is returned.

Specified by:
findElement in interface IJavaProject
Parameters:
bindingKey - the given binding key
owner - the owner of the returned element's compilation unit, or null if the default working copy owner must be used
Returns:
the Java element corresponding to the given key, or null if no such Java element is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource

findPackageFragment

public IPackageFragment findPackageFragment(org.eclipse.core.runtime.IPath path)
                                     throws JavaModelException
Description copied from interface: IJavaProject
Returns the first existing package fragment on this project's classpath whose path matches the given (absolute) path, or null if none exist. The path can be: - internal to the workbench: "/Project/src" - external to the workbench: "c:/jdk/classes.zip/java/lang"

Specified by:
findPackageFragment in interface IJavaProject
Parameters:
path - the given absolute path
Returns:
the first existing package fragment on this project's classpath whose path matches the given (absolute) path, or null if none exist
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

findPackageFragmentRoot

public IPackageFragmentRoot findPackageFragmentRoot(org.eclipse.core.runtime.IPath path)
                                             throws JavaModelException
Description copied from interface: IJavaProject
Returns the existing package fragment root on this project's classpath whose path matches the given (absolute) path, or null if one does not exist. The path can be: - internal to the workbench: "/Compiler/src" - external to the workbench: "c:/jdk/classes.zip"

Specified by:
findPackageFragmentRoot in interface IJavaProject
Parameters:
path - the given absolute path
Returns:
the existing package fragment root on this project's classpath whose path matches the given (absolute) path, or null if one does not exist
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

findPackageFragmentRoot0

public IPackageFragmentRoot findPackageFragmentRoot0(org.eclipse.core.runtime.IPath path)
                                              throws JavaModelException
Throws:
JavaModelException

findPackageFragmentRoots

public IPackageFragmentRoot[] findPackageFragmentRoots(IClasspathEntry entry)
Description copied from interface: IJavaProject
Returns the existing package fragment roots identified by the given entry. Note that a classpath entry that refers to another project may have more than one root (if that project has more than on root containing source), and classpath entries within the current project identify a single root.

If the classpath entry denotes a variable, it will be resolved and return the roots of the target entry (empty if not resolvable).

If the classpath entry denotes a container, it will be resolved and return the roots corresponding to the set of container entries (empty if not resolvable).

Specified by:
findPackageFragmentRoots in interface IJavaProject
Parameters:
entry - the given entry
Returns:
the existing package fragment roots identified by the given entry
See Also:
IJavaProject

findType

public IType findType(java.lang.String fullyQualifiedName)
               throws JavaModelException
Description copied from interface: IJavaProject
Returns the first type found following this project's classpath with the given fully qualified name or null if none is found. The fully qualified name is a dot-separated name. For example, a class B defined as a member type of a class A in package x.y should have a the fully qualified name "x.y.A.B". Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding compilation unit name. As a consequence, secondary types cannot be found using this functionality. To find secondary types use IJavaProject.findType(String, IProgressMonitor) instead.

Specified by:
findType in interface IJavaProject
Parameters:
fullyQualifiedName - the given fully qualified name
Returns:
the first type found following this project's classpath with the given fully qualified name or null if none is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.findType(String)

findType

public IType findType(java.lang.String fullyQualifiedName,
                      org.eclipse.core.runtime.IProgressMonitor progressMonitor)
               throws JavaModelException
Description copied from interface: IJavaProject
Same functionality as IJavaProject.findType(String) but also look for secondary types if given name does not match a compilation unit name.

Specified by:
findType in interface IJavaProject
Parameters:
fullyQualifiedName - the given fully qualified name
progressMonitor - the progress monitor to report progress to, or null if no progress monitor is provided
Returns:
the first type found following this project's classpath with the given fully qualified name or null if none is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.findType(String, IProgressMonitor)

findType

public IType findType(java.lang.String packageName,
                      java.lang.String typeQualifiedName)
               throws JavaModelException
Description copied from interface: IJavaProject
Returns the first type found following this project's classpath with the given package name and type qualified name or null if none is found. The package name is a dot-separated name. The type qualified name is also a dot-separated name. For example, a class B defined as a member type of a class A should have the type qualified name "A.B". Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding compilation unit name. As a consequence, secondary types cannot be found using this functionality. To find secondary types use IJavaProject.findType(String, String, IProgressMonitor) instead.

Specified by:
findType in interface IJavaProject
Parameters:
packageName - the given package name
typeQualifiedName - the given type qualified name
Returns:
the first type found following this project's classpath with the given package name and type qualified name or null if none is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.findType(String, String)

findType

public IType findType(java.lang.String packageName,
                      java.lang.String typeQualifiedName,
                      org.eclipse.core.runtime.IProgressMonitor progressMonitor)
               throws JavaModelException
Description copied from interface: IJavaProject
Same functionality as IJavaProject.findType(String, String) but also look for secondary types if given name does not match a compilation unit name.

Specified by:
findType in interface IJavaProject
Parameters:
packageName - the given package name
typeQualifiedName - the given type qualified name
progressMonitor - the progress monitor to report progress to, or null if no progress monitor is provided
Returns:
the first type found following this project's classpath with the given fully qualified name or null if none is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.findType(String, String, IProgressMonitor)

findType

public IType findType(java.lang.String packageName,
                      java.lang.String typeQualifiedName,
                      WorkingCopyOwner owner)
               throws JavaModelException
Description copied from interface: IJavaProject
Returns the first type found following this project's classpath with the given package name and type qualified name or null if none is found. The package name is a dot-separated name. The type qualified name is also a dot-separated name. For example, a class B defined as a member type of a class A should have the type qualified name "A.B". If the returned type is part of a compilation unit, its owner is the given owner. Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding compilation unit name. As a consequence, secondary types cannot be found using this functionality. To find secondary types use IJavaProject.findType(String, String, WorkingCopyOwner, IProgressMonitor) instead.

Specified by:
findType in interface IJavaProject
Parameters:
packageName - the given package name
typeQualifiedName - the given type qualified name
owner - the owner of the returned type's compilation unit
Returns:
the first type found following this project's classpath with the given package name and type qualified name or null if none is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.findType(String, String, WorkingCopyOwner)

findType

public IType findType(java.lang.String packageName,
                      java.lang.String typeQualifiedName,
                      WorkingCopyOwner owner,
                      org.eclipse.core.runtime.IProgressMonitor progressMonitor)
               throws JavaModelException
Description copied from interface: IJavaProject
Same functionality as IJavaProject.findType(String, String, WorkingCopyOwner) but also look for secondary types if given name does not match a compilation unit name.

Specified by:
findType in interface IJavaProject
Parameters:
packageName - the given package name
typeQualifiedName - the given type qualified name
owner - the owner of the returned type's compilation unit
progressMonitor - the progress monitor to report progress to, or null if no progress monitor is provided
Returns:
the first type found following this project's classpath with the given fully qualified name or null if none is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.findType(String, String, WorkingCopyOwner, IProgressMonitor)

findType

public IType findType(java.lang.String fullyQualifiedName,
                      WorkingCopyOwner owner)
               throws JavaModelException
Description copied from interface: IJavaProject
Returns the first type found following this project's classpath with the given fully qualified name or null if none is found. The fully qualified name is a dot-separated name. For example, a class B defined as a member type of a class A in package x.y should have a the fully qualified name "x.y.A.B". If the returned type is part of a compilation unit, its owner is the given owner. Note that in order to be found, a type name (or its toplevel enclosing type name) must match its corresponding compilation unit name. As a consequence, secondary types cannot be found using this functionality. To find secondary types use IJavaProject.findType(String, WorkingCopyOwner, IProgressMonitor) instead.

Specified by:
findType in interface IJavaProject
Parameters:
fullyQualifiedName - the given fully qualified name
owner - the owner of the returned type's compilation unit
Returns:
the first type found following this project's classpath with the given fully qualified name or null if none is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.findType(String, WorkingCopyOwner)

findType

public IType findType(java.lang.String fullyQualifiedName,
                      WorkingCopyOwner owner,
                      org.eclipse.core.runtime.IProgressMonitor progressMonitor)
               throws JavaModelException
Description copied from interface: IJavaProject
Same functionality as IJavaProject.findType(String, WorkingCopyOwner) but also look for secondary types if given name does not match a compilation unit name.

Specified by:
findType in interface IJavaProject
Parameters:
fullyQualifiedName - the given fully qualified name
owner - the owner of the returned type's compilation unit
progressMonitor - the progress monitor to report progress to, or null if no progress monitor is provided
Returns:
the first type found following this project's classpath with the given fully qualified name or null if none is found
Throws:
JavaModelException - if this project does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.findType(String, WorkingCopyOwner, IProgressMonitor)

getAccessRestrictions

public org.eclipse.core.runtime.IPath[] getAccessRestrictions(java.lang.String optionName)
Returns the set of patterns corresponding to this project visibility given rules

Returns:
an array of IPath or null if none

getAllPackageFragmentRoots

public IPackageFragmentRoot[] getAllPackageFragmentRoots()
                                                  throws JavaModelException
Description copied from interface: IJavaProject
Returns all of the existing package fragment roots that exist on the classpath, in the order they are defined by the classpath.

Specified by:
getAllPackageFragmentRoots in interface IJavaProject
Returns:
all of the existing package fragment roots that exist on the classpath
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

getAllPackageFragmentRoots

public IPackageFragmentRoot[] getAllPackageFragmentRoots(java.util.Map rootToResolvedEntries)
                                                  throws JavaModelException
Throws:
JavaModelException

getClasspathEntryFor

public IClasspathEntry getClasspathEntryFor(org.eclipse.core.runtime.IPath path)
                                     throws JavaModelException
Returns the classpath entry that refers to the given path or null if there is no reference to the path.

Parameters:
path - IPath
Returns:
IClasspathEntry
Throws:
JavaModelException

getCycleMarker

public IMarker getCycleMarker()

getEclipsePreferences

public org.eclipse.core.runtime.preferences.IEclipsePreferences getEclipsePreferences()
Returns the project custom preference pool. Project preferences may include custom encoding.

Returns:
IEclipsePreferences or null if the project does not have a java nature.

getElementName

public java.lang.String getElementName()
Description copied from interface: IJavaElement
Returns the name of this element. This is a handle-only method.

Specified by:
getElementName in interface IJavaElement
Overrides:
getElementName in class JavaElement
Returns:
the element name
See Also:
IAdaptable

getElementType

public int getElementType()
Description copied from interface: IJavaElement
Returns this element's kind encoded as an integer. This is a handle-only method.

Specified by:
getElementType in interface IJavaElement
Returns:
the kind of element; one of the constants declared in IJavaElement
See Also:
IJavaElement

getExpandedClasspath

public IClasspathEntry[] getExpandedClasspath()
                                       throws JavaModelException
This is a helper method returning the expanded classpath for the project, as a list of classpath entries, where all classpath variable entries have been resolved and substituted with their final target entries. All project exports have been appended to project entries.

Returns:
IClasspathEntry[]
Throws:
JavaModelException

getFolderPackageFragmentRoot

public IPackageFragmentRoot getFolderPackageFragmentRoot(org.eclipse.core.runtime.IPath path)
The path is known to match a source/library folder entry.

Parameters:
path - IPath
Returns:
IPackageFragmentRoot

getHandleFromMemento

public IJavaElement getHandleFromMemento(java.lang.String token,
                                         MementoTokenizer memento,
                                         WorkingCopyOwner owner)
Specified by:
getHandleFromMemento in class JavaElement

getNonJavaResources

public java.lang.Object[] getNonJavaResources()
                                       throws JavaModelException
Returns an array of non-java resources contained in the receiver.

Specified by:
getNonJavaResources in interface IJavaProject
Returns:
an array of non-Java resources (IFiles and/or IFolders) directly contained in this project
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource

getOption

public java.lang.String getOption(java.lang.String optionName,
                                  boolean inheritJavaCoreOptions)
Description copied from interface: IJavaProject
Helper method for returning one option value only. Equivalent to (String)this.getOptions(inheritJavaCoreOptions).get(optionName) Note that it may answer null if this option does not exist, or if there is no custom value for it.

For a complete description of the configurable options, see JavaCore#getDefaultOptions.

Specified by:
getOption in interface IJavaProject
Parameters:
optionName - the name of an option
inheritJavaCoreOptions - - boolean indicating whether JavaCore options should be inherited as well
Returns:
the String value of a given option
See Also:
IJavaProject.getOption(String, boolean)

getOptions

public java.util.Map getOptions(boolean inheritJavaCoreOptions)
Description copied from interface: IJavaProject
Returns the table of the current custom options for this project. Projects remember their custom options, in other words, only the options different from the the JavaCore global options for the workspace. A boolean argument allows to directly merge the project options with global ones from JavaCore.

For a complete description of the configurable options, see JavaCore#getDefaultOptions.

Specified by:
getOptions in interface IJavaProject
Parameters:
inheritJavaCoreOptions - - boolean indicating whether JavaCore options should be inherited as well
Returns:
table of current settings of all options (key type: String; value type: String)
See Also:
IJavaProject.getOptions(boolean)

getOutputLocation

public org.eclipse.core.runtime.IPath getOutputLocation()
                                                 throws JavaModelException
Description copied from interface: IJavaProject
Returns the default output location for this project as a workspace- relative absolute path.

The default output location is where class files are ordinarily generated (and resource files, copied). Each source classpath entry can also specify an output location for the generated class files (and copied resource files) corresponding to compilation units under that source folder. This makes it possible to arrange generated class files for different source folders in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

Specified by:
getOutputLocation in interface IJavaProject
Returns:
the workspace-relative absolute path of the default output folder
Throws:
JavaModelException - if this element does not exist
See Also:
IJavaProject

getPackageFragmentRoot

public IPackageFragmentRoot getPackageFragmentRoot(org.eclipse.core.runtime.IPath path)
Parameters:
path - IPath
Returns:
A handle to the package fragment root identified by the given path. This method is handle-only and the element may or may not exist. Returns null if unable to generate a handle from the path (for example, an absolute path that has less than 1 segment. The path may be relative or absolute.

getPackageFragmentRoot

public IPackageFragmentRoot getPackageFragmentRoot(IResource resource)
Description copied from interface: IJavaProject
Returns a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a ZIP archive (e.g. a .jar, a .zip file, etc.) This is a handle-only method. The underlying resource may or may not exist.

Specified by:
getPackageFragmentRoot in interface IJavaProject
Parameters:
resource - the given resource
Returns:
a package fragment root for the given resource, which must either be a folder representing the top of a package hierarchy, or a ZIP archive (e.g. a .jar, a .zip file, etc.)
See Also:
IJavaProject

getPackageFragmentRoot

public IPackageFragmentRoot getPackageFragmentRoot(java.lang.String externalLibraryPath)
Description copied from interface: IJavaProject
Returns a package fragment root for an external library (a ZIP archive - e.g. a .jar, a .zip file, etc. - or - since 3.4 - a class folder) at the specified file system path. This is a handle-only method. The underlying java.io.File may or may not exist. No resource is associated with this local library package fragment root.

Specified by:
getPackageFragmentRoot in interface IJavaProject
Parameters:
externalLibraryPath - the library's file system path
Returns:
a package fragment root for the external library at the specified file system path
See Also:
IJavaProject

getPackageFragmentRoot0

public IPackageFragmentRoot getPackageFragmentRoot0(org.eclipse.core.runtime.IPath externalLibraryPath)

getPackageFragmentRoots

public IPackageFragmentRoot[] getPackageFragmentRoots()
                                               throws JavaModelException
Description copied from interface: IJavaProject
Returns all of the package fragment roots contained in this project, identified on this project's resolved classpath. The result does not include package fragment roots in other projects referenced on this project's classpath.

NOTE: This is equivalent to getChildren().

Specified by:
getPackageFragmentRoots in interface IJavaProject
Returns:
all of the package fragment roots contained in this project, identified on this project's resolved classpath
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

getPackageFragmentRoots

public IPackageFragmentRoot[] getPackageFragmentRoots(IClasspathEntry entry)
Deprecated. 

Description copied from interface: IJavaProject
Returns the existing package fragment roots identified by the given entry. Note that a classpath entry that refers to another project may have more than one root (if that project has more than on root containing source), and classpath entries within the current project identify a single root.

If the classpath entry denotes a variable, it will be resolved and return the roots of the target entry (empty if not resolvable).

If the classpath entry denotes a container, it will be resolved and return the roots corresponding to the set of container entries (empty if not resolvable).

Specified by:
getPackageFragmentRoots in interface IJavaProject
Parameters:
entry - the given entry
Returns:
the existing package fragment roots identified by the given entry
See Also:
IJavaProject

getPackageFragments

public IPackageFragment[] getPackageFragments()
                                       throws JavaModelException
Description copied from interface: IJavaProject
Returns all package fragments in all package fragment roots contained in this project. This is a convenience method. Note that the package fragment roots corresponds to the resolved classpath of the project.

Specified by:
getPackageFragments in interface IJavaProject
Returns:
all package fragments in all package fragment roots contained in this project
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

getPackageFragmentsInRoots

public IPackageFragment[] getPackageFragmentsInRoots(IPackageFragmentRoot[] roots)
Returns all the package fragments found in the specified package fragment roots.

Parameters:
roots - IPackageFragmentRoot[]
Returns:
IPackageFragment[]

getPath

public org.eclipse.core.runtime.IPath getPath()
Description copied from interface: IJavaElement
Returns the path to the innermost resource enclosing this element. If this element is not included in an external library, the path returned is the full, absolute path to the underlying resource, relative to the workbench. If this element is included in an external library, the path returned is the absolute path to the archive in the file system. This is a handle-only method.

Specified by:
getPath in interface IJavaElement
Returns:
the path to the innermost resource enclosing this element
See Also:
IJavaElement

getPerProjectInfo

public JavaModelManager.PerProjectInfo getPerProjectInfo()
                                                  throws JavaModelException
Throws:
JavaModelException

getPreferences

public org.eclipse.core.runtime.Preferences getPreferences()
Deprecated. WARNING: this method do nothing from now and will be removed soon! If you use it, switch as soon as possible to new preferences API by using getEclipsePreferences() to avoid future compilation error...

Returns the project custom preference pool. Project preferences may include custom encoding.

Returns:
Preferences
See Also:
bug 59258 TODO (frederic) remove for 3.1...

getProject

public IProject getProject()
Description copied from interface: IJavaProject
Returns the IProject on which this IJavaProject was created. This is handle-only method.

Specified by:
getProject in interface IProjectNature
Specified by:
getProject in interface IJavaProject
Returns:
the IProject on which this IJavaProject was created
See Also:
IJavaProject.getProject()

getProjectCache

public org.eclipse.jdt.internal.core.JavaProjectElementInfo.ProjectCache getProjectCache()
                                                                                  throws JavaModelException
Throws:
JavaModelException

getRawClasspath

public IClasspathEntry[] getRawClasspath()
                                  throws JavaModelException
Description copied from interface: IJavaProject
Returns the raw classpath for the project, as a list of classpath entries. This corresponds to the exact set of entries which were assigned using setRawClasspath, in particular such a classpath may contain classpath variable and classpath container entries. Classpath variable and classpath container entries can be resolved using the helper method getResolvedClasspath; classpath variable entries also can be resolved individually using JavaCore#getClasspathVariable).

Both classpath containers and classpath variables provides a level of indirection that can make the .classpath file stable across workspaces. As an example, classpath variables allow a classpath to no longer refer directly to external JARs located in some user specific location. The classpath can simply refer to some variables defining the proper locations of these external JARs. Similarly, classpath containers allows classpath entries to be computed dynamically by the plug-in that defines that kind of classpath container.

Note that in case the project isn't yet opened, the classpath will be read directly from the associated .classpath file.

Specified by:
getRawClasspath in interface IJavaProject
Returns:
the raw classpath for the project, as a list of classpath entries
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

getRequiredProjectNames

public java.lang.String[] getRequiredProjectNames()
                                           throws JavaModelException
Description copied from interface: IJavaProject
Returns the names of the projects that are directly required by this project. A project is required if it is in its classpath.

The project names are returned in the order they appear on the classpath.

Specified by:
getRequiredProjectNames in interface IJavaProject
Returns:
the names of the projects that are directly required by this project in classpath order
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject.getRequiredProjectNames()

getResolvedClasspath

public IClasspathEntry[] getResolvedClasspath()
                                       throws JavaModelException
Throws:
JavaModelException

getResolvedClasspath

public IClasspathEntry[] getResolvedClasspath(boolean ignoreUnresolvedEntry)
                                       throws JavaModelException
Description copied from interface: IJavaProject
This is a helper method returning the resolved classpath for the project as a list of simple (non-variable, non-container) classpath entries. All classpath variable and classpath container entries in the project's raw classpath will be replaced by the simple classpath entries they resolve to.

The resulting resolved classpath is accurate for the given point in time. If the project's raw classpath is later modified, or if classpath variables are changed, the resolved classpath can become out of date. Because of this, hanging on resolved classpath is not recommended.

Specified by:
getResolvedClasspath in interface IJavaProject
Parameters:
ignoreUnresolvedEntry - indicates how to handle unresolvable variables and containers; true indicates that missing variables and unresolvable classpath containers should be silently ignored, and that the resulting list should consist only of the entries that could be successfully resolved; false indicates that a JavaModelException should be thrown for the first unresolved variable or container
Returns:
the resolved classpath for the project as a list of simple classpath entries, where all classpath variable and container entries have been resolved and substituted with their final target entries
Throws:
JavaModelException - in one of the corresponding situation:
  • this element does not exist
  • an exception occurs while accessing its corresponding resource
  • a classpath variable or classpath container was not resolvable and ignoreUnresolvedEntry is false.
See Also:
IJavaProject

resource

public IResource resource(PackageFragmentRoot root)
See Also:
IJavaElement

getSharedProperty

public java.lang.String getSharedProperty(java.lang.String key)
                                   throws org.eclipse.core.runtime.CoreException
Retrieve a shared property on a project. If the property is not defined, answers null. Note that it is orthogonal to IResource persistent properties, and client code has to decide which form of storage to use appropriately. Shared properties produce real resource files which can be shared through a VCM onto a server. Persistent properties are not shareable.

Parameters:
key - String
Returns:
String
Throws:
org.eclipse.core.runtime.CoreException
See Also:
setSharedProperty(String, String)

getSourceMapper

public SourceMapper getSourceMapper()
Description copied from class: JavaElement
Returns the SourceMapper facility for this element, or null if this element does not have a SourceMapper.

Overrides:
getSourceMapper in class JavaElement
See Also:
JavaElement

getUnderlyingResource

public IResource getUnderlyingResource()
                                throws JavaModelException
Description copied from interface: IJavaElement
Returns the smallest underlying resource that contains this element, or null if this element is not contained in a resource.

Specified by:
getUnderlyingResource in interface IJavaElement
Overrides:
getUnderlyingResource in class Openable
Returns:
the underlying resource, or null if none
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its underlying resource
See Also:
IJavaElement

hasBuildState

public boolean hasBuildState()
Description copied from interface: IJavaProject
Returns whether this project has been built at least once and thus whether it has a build state.

Specified by:
hasBuildState in interface IJavaProject
Returns:
true if this project has been built at least once, false otherwise
See Also:
IJavaProject

hasClasspathCycle

public boolean hasClasspathCycle(IClasspathEntry[] preferredClasspath)
Description copied from interface: IJavaProject
Returns whether setting this project's classpath to the given classpath entries would result in a cycle. If the set of entries contains some variables, those are resolved in order to determine cycles.

Specified by:
hasClasspathCycle in interface IJavaProject
Parameters:
preferredClasspath - the given classpath entries
Returns:
true if the given classpath entries would result in a cycle, false otherwise
See Also:
IJavaProject

hasCycleMarker

public boolean hasCycleMarker()

hashCode

public int hashCode()
Description copied from class: JavaElement
Returns the hash code for this Java element. By default, the hash code for an element is a combination of its name and parent's hash code. Elements with other requirements must override this method.

Overrides:
hashCode in class JavaElement

hasSource

public boolean hasSource()
Answers true if the project potentially contains any source. A project which has no source is immutable.

Returns:
boolean

isOnClasspath

public boolean isOnClasspath(IJavaElement element)
Description copied from interface: IJavaProject
Returns whether the given element is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.

Specified by:
isOnClasspath in interface IJavaProject
Parameters:
element - the given element
Returns:
true if the given element is on the classpath of this project, false otherwise
See Also:
IClasspathEntry.getInclusionPatterns(), IClasspathEntry.getExclusionPatterns()

isOnClasspath

public boolean isOnClasspath(IResource resource)
Description copied from interface: IJavaProject
Returns whether the given resource is on the classpath of this project, that is, referenced from a classpath entry and not explicitly excluded using an exclusion pattern.

Specified by:
isOnClasspath in interface IJavaProject
Parameters:
resource - the given resource
Returns:
true if the given resource is on the classpath of this project, false otherwise
See Also:
IClasspathEntry.getInclusionPatterns(), IClasspathEntry.getExclusionPatterns()

newEvaluationContext

public IEvaluationContext newEvaluationContext()
Description copied from interface: IJavaProject
Creates a new evaluation context.

Specified by:
newEvaluationContext in interface IJavaProject
Returns:
a new evaluation context.
See Also:
IJavaProject.newEvaluationContext()

newNameLookup

public NameLookup newNameLookup(ICompilationUnit[] workingCopies)
                         throws JavaModelException
Throws:
JavaModelException

newNameLookup

public NameLookup newNameLookup(WorkingCopyOwner owner)
                         throws JavaModelException
Throws:
JavaModelException

newSearchableNameEnvironment

public SearchableEnvironment newSearchableNameEnvironment(ICompilationUnit[] workingCopies)
                                                   throws JavaModelException
Throws:
JavaModelException

newSearchableNameEnvironment

public SearchableEnvironment newSearchableNameEnvironment(WorkingCopyOwner owner)
                                                   throws JavaModelException
Throws:
JavaModelException

newTypeHierarchy

public ITypeHierarchy newTypeHierarchy(IRegion region,
                                       org.eclipse.core.runtime.IProgressMonitor monitor)
                                throws JavaModelException
Description copied from interface: IJavaProject
Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region.

Specified by:
newTypeHierarchy in interface IJavaProject
Parameters:
region - the given region
monitor - the given progress monitor
Returns:
a type hierarchy for all types in the given region, considering subtypes within that region
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

newTypeHierarchy

public ITypeHierarchy newTypeHierarchy(IRegion region,
                                       WorkingCopyOwner owner,
                                       org.eclipse.core.runtime.IProgressMonitor monitor)
                                throws JavaModelException
Description copied from interface: IJavaProject
Creates and returns a type hierarchy for all types in the given region, considering subtypes within that region and considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

Specified by:
newTypeHierarchy in interface IJavaProject
Parameters:
region - the given region
owner - the owner of working copies that take precedence over their original compilation units
monitor - the given progress monitor
Returns:
a type hierarchy for all types in the given region, considering subtypes within that region
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

newTypeHierarchy

public ITypeHierarchy newTypeHierarchy(IType type,
                                       IRegion region,
                                       org.eclipse.core.runtime.IProgressMonitor monitor)
                                throws JavaModelException
Description copied from interface: IJavaProject
Creates and returns a type hierarchy for the given type considering subtypes in the specified region.

Specified by:
newTypeHierarchy in interface IJavaProject
Parameters:
type - the given type
region - the given region
monitor - the given monitor
Returns:
a type hierarchy for the given type considering subtypes in the specified region
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

newTypeHierarchy

public ITypeHierarchy newTypeHierarchy(IType type,
                                       IRegion region,
                                       WorkingCopyOwner owner,
                                       org.eclipse.core.runtime.IProgressMonitor monitor)
                                throws JavaModelException
Description copied from interface: IJavaProject
Creates and returns a type hierarchy for the given type considering subtypes in the specified region and considering types in the working copies with the given owner. In other words, the owner's working copies will take precedence over their original compilation units in the workspace.

Note that if a working copy is empty, it will be as if the original compilation unit had been deleted.

Specified by:
newTypeHierarchy in interface IJavaProject
Parameters:
type - the given type
region - the given region
owner - the owner of working copies that take precedence over their original compilation units
monitor - the given monitor
Returns:
a type hierarchy for the given type considering subtypes in the specified region
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IJavaProject

projectPrerequisites

public java.lang.String[] projectPrerequisites(IClasspathEntry[] entries)
                                        throws JavaModelException
Throws:
JavaModelException

readFileEntriesWithException

public IClasspathEntry[] readFileEntriesWithException(java.util.Map unknownElements)
                                               throws org.eclipse.core.runtime.CoreException,
                                                      java.io.IOException,
                                                      org.eclipse.core.runtime.AssertionFailedException
Throws:
org.eclipse.core.runtime.CoreException
java.io.IOException
org.eclipse.core.runtime.AssertionFailedException

readOutputLocation

public org.eclipse.core.runtime.IPath readOutputLocation()
Description copied from interface: IJavaProject
Returns the default output location for the project as defined by its .classpath file from disk, or null if unable to read the file.

This output location may differ from the in-memory one returned by getOutputLocation, in case the automatic reconciliation mechanism has not been performed yet. Usually, any change to the .classpath file is automatically noticed and reconciled at the next resource change notification event. However, if the file is modified within an operation, where this change needs to be taken into account before the operation ends, then the output location from disk can be read using this method, and further assigned to the project using setRawClasspath(...).

The default output location is where class files are ordinarily generated (and resource files, copied). Each source classpath entry can also specify an output location for the generated class files (and copied resource files) corresponding to compilation units under that source folder. This makes it possible to arrange generated class files for different source folders in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

In order to manually force a project classpath refresh, one can simply assign the project classpath using the result of this method, as follows: proj.setRawClasspath(proj.readRawClasspath(), proj.readOutputLocation(), monitor) (note that the readRawClasspath/readOutputLocation methods could return null).

Specified by:
readOutputLocation in interface IJavaProject
Returns:
the workspace-relative absolute path of the default output folder
See Also:
IJavaProject

readRawClasspath

public IClasspathEntry[] readRawClasspath()
Description copied from interface: IJavaProject
Returns the raw classpath for the project as defined by its .classpath file from disk, or null if unable to read the file.

This classpath may differ from the in-memory classpath returned by getRawClasspath, in case the automatic reconciliation mechanism has not been performed yet. Usually, any change to the .classpath file is automatically noticed and reconciled at the next resource change notification event. However, if the file is modified within an operation, where this change needs to be taken into account before the operation ends, then the classpath from disk can be read using this method, and further assigned to the project using setRawClasspath(...).

Classpath variable and classpath container entries can be resolved using the helper method getResolvedClasspath; classpath variable entries also can be resolved individually using JavaCore#getClasspathVariable).

Note that no check is performed whether the project has the Java nature set, allowing an existing .classpath file to be considered independantly (unlike getRawClasspath which requires the Java nature to be associated with the project).

In order to manually force a project classpath refresh, one can simply assign the project classpath using the result of this method, as follows: proj.setRawClasspath(proj.readRawClasspath(), proj.readOutputLocation(), monitor) (note that the readRawClasspath/readOutputLocation methods could return null).

Specified by:
readRawClasspath in interface IJavaProject
Returns:
the raw classpath from disk for the project, as a list of classpath entries
See Also:
IJavaProject

resetCaches

public void resetCaches()

resolveClasspath

public IClasspathEntry[] resolveClasspath(IClasspathEntry[] rawClasspath)
                                   throws JavaModelException
Throws:
JavaModelException

resolveClasspath

public void resolveClasspath(JavaModelManager.PerProjectInfo perProjectInfo)
                      throws JavaModelException
Throws:
JavaModelException

rootID

public java.lang.String rootID()
Answers an ID which is used to distinguish project/entries during package fragment root computations

Returns:
String

writeFileEntries

public boolean writeFileEntries(IClasspathEntry[] newClasspath,
                                org.eclipse.core.runtime.IPath newOutputLocation)
                         throws JavaModelException
Writes the classpath in a sharable format (VCM-wise) only when necessary, that is, if it is semantically different from the existing one in file. Will never write an identical one.

Parameters:
newClasspath - IClasspathEntry[]
newOutputLocation - IPath
Returns:
boolean Return whether the .classpath file was modified.
Throws:
JavaModelException

setOption

public void setOption(java.lang.String optionName,
                      java.lang.String optionValue)
Description copied from interface: IJavaProject
Helper method for setting one option value only.

Equivalent to:

        Map options = this.getOptions(false);
        map.put(optionName, optionValue);
        this.setOptions(map)
  

For a complete description of the configurable options, see JavaCore#getDefaultOptions.

Specified by:
setOption in interface IJavaProject
Parameters:
optionName - the name of an option
optionValue - the value of the option to set. If null, then the option is removed from project preferences.
See Also:
IJavaProject.setOption(java.lang.String, java.lang.String)

setOptions

public void setOptions(java.util.Map newOptions)
Description copied from interface: IJavaProject
Sets the project custom options. All and only the options explicitly included in the given table are remembered; all previous option settings are forgotten, including ones not explicitly mentioned.

For a complete description of the configurable options, see JavaCore#getDefaultOptions.

Specified by:
setOptions in interface IJavaProject
Parameters:
newOptions - the new options (key type: String; value type: String), or null to flush all custom options (clients will automatically get the global JavaCore options).
See Also:
IJavaProject.setOptions(Map)

setOutputLocation

public void setOutputLocation(org.eclipse.core.runtime.IPath path,
                              org.eclipse.core.runtime.IProgressMonitor monitor)
                       throws JavaModelException
Description copied from interface: IJavaProject
Sets the default output location of this project to the location described by the given workspace-relative absolute path.

The default output location is where class files are ordinarily generated (and resource files, copied). Each source classpath entries can also specify an output location for the generated class files (and copied resource files) corresponding to compilation units under that source folder. This makes it possible to arrange that generated class files for different source folders to end up in different output folders, and not necessarily the default output folder. This means that the generated class files for the project may end up scattered across several folders, rather than all in the default output folder (which is more standard).

Specified by:
setOutputLocation in interface IJavaProject
Parameters:
path - the workspace-relative absolute path of the default output folder
monitor - the progress monitor
Throws:
JavaModelException - if the classpath could not be set. Reasons include:
  • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
  • The path refers to a location not contained in this project (PATH_OUTSIDE_PROJECT)
  • The path is not an absolute path (RELATIVE_PATH)
  • The path is nested inside a package fragment root of this project (INVALID_PATH)
  • The output location is being modified during resource change event notification (CORE_EXCEPTION)
See Also:
IJavaProject

setProject

public void setProject(IProject project)
Sets the underlying kernel project of this Java project, and fills in its parent and name. Called by IProject.getNature().

Specified by:
setProject in interface IProjectNature
Parameters:
project - the project to which this nature applies
See Also:
IProjectNature.setProject(IProject)

setRawClasspath

public void setRawClasspath(IClasspathEntry[] entries,
                            boolean canModifyResources,
                            org.eclipse.core.runtime.IProgressMonitor monitor)
                     throws JavaModelException
Description copied from interface: IJavaProject
Sets the classpath of this project using a list of classpath entries. In particular such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (JavaCore.getClasspathVariable(String)), or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).

A classpath variable provides an indirection level for better sharing a classpath. As an example, it allows a classpath to no longer refer directly to external JARs located in some user specific location. The classpath can simply refer to some variables defining the proper locations of these external JARs.

If it is specified that this operation cannot modify resources, the .classpath file will not be written to disk and no error marker will be generated. To synchronize the .classpath with the in-memory classpath, one can use setRawClasspath(readRawClasspath(), true, monitor).

Setting the classpath to null specifies a default classpath (the project root). Setting the classpath to an empty array specifies an empty classpath.

If a cycle is detected while setting this classpath (and if resources can be modified), an error marker will be added to the project closing the cycle. To avoid this problem, use IJavaProject.hasClasspathCycle(IClasspathEntry[]) before setting the classpath.

This operation acquires a lock on the workspace's root.

Specified by:
setRawClasspath in interface IJavaProject
Parameters:
entries - a list of classpath entries
canModifyResources - whether resources should be written to disk if needed
monitor - the given progress monitor
Throws:
JavaModelException - if the classpath could not be set. Reasons include:
See Also:
IJavaProject.setRawClasspath(IClasspathEntry[],boolean,IProgressMonitor)

setRawClasspath

public void setRawClasspath(IClasspathEntry[] newRawClasspath,
                            org.eclipse.core.runtime.IPath newOutputLocation,
                            boolean canModifyResources,
                            org.eclipse.core.runtime.IProgressMonitor monitor)
                     throws JavaModelException
Description copied from interface: IJavaProject
Sets both the classpath of this project and its default output location at once. The classpath is defined using a list of classpath entries. In particular such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (JavaCore.getClasspathVariable(String)), or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).

A classpath variable provides an indirection level for better sharing a classpath. As an example, it allows a classpath to no longer refer directly to external JARs located in some user specific location. The classpath can simply refer to some variables defining the proper locations of these external JARs.

If it is specified that this operation cannot modify resources, the .classpath file will not be written to disk and no error marker will be generated. To synchronize the .classpath with the in-memory classpath, one can use setRawClasspath(readRawClasspath(), true, monitor).

Setting the classpath to null specifies a default classpath (the project root). Setting the classpath to an empty array specifies an empty classpath.

If a cycle is detected while setting this classpath (and if resources can be modified), an error marker will be added to the project closing the cycle. To avoid this problem, use IJavaProject.hasClasspathCycle(IClasspathEntry[]) before setting the classpath.

This operation acquires a lock on the workspace's root.

Specified by:
setRawClasspath in interface IJavaProject
Parameters:
newRawClasspath - a list of classpath entries
newOutputLocation - the default output location
canModifyResources - whether resources should be written to disk if needed
monitor - the given progress monitor
Throws:
JavaModelException - if the classpath could not be set. Reasons include:
See Also:
IJavaProject.setRawClasspath(IClasspathEntry[],IPath,boolean,IProgressMonitor)

setRawClasspath

public void setRawClasspath(IClasspathEntry[] entries,
                            org.eclipse.core.runtime.IPath outputLocation,
                            org.eclipse.core.runtime.IProgressMonitor monitor)
                     throws JavaModelException
Description copied from interface: IJavaProject
Sets the both the classpath of this project and its default output location at once. The classpath is defined using a list of classpath entries. In particular, such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (see (JavaCore.getClasspathVariable(String)), or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).

A classpath variable provides an indirection level for better sharing a classpath. As an example, it allows a classpath to no longer refer directly to external JARs located in some user specific location. The classpath can simply refer to some variables defining the proper locations of these external JARs.

Setting the classpath to null specifies a default classpath (the project root). Setting the classpath to an empty array specifies an empty classpath.

If a cycle is detected while setting this classpath, an error marker will be added to the project closing the cycle. To avoid this problem, use IJavaProject.hasClasspathCycle(IClasspathEntry[]) before setting the classpath.

This operation acquires a lock on the workspace's root.

Specified by:
setRawClasspath in interface IJavaProject
Parameters:
entries - a list of classpath entries
outputLocation - the default output location
monitor - the progress monitor
Throws:
JavaModelException - if the classpath could not be set. Reasons include:
  • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
  • Two or more entries specify source roots with the same or overlapping paths (NAME_COLLISION)
  • A entry of kind CPE_PROJECT refers to this project (INVALID_PATH)
  • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
  • The output location path refers to a location not contained in this project (PATH_OUTSIDE_PROJECT)
  • The output location path is not an absolute path (RELATIVE_PATH)
  • The output location path is nested inside a package fragment root of this project (INVALID_PATH)
  • The classpath is being modified during resource change event notification (CORE_EXCEPTION)
See Also:
IJavaProject.setRawClasspath(IClasspathEntry[],IPath,IProgressMonitor)

setRawClasspath

public void setRawClasspath(IClasspathEntry[] entries,
                            org.eclipse.core.runtime.IProgressMonitor monitor)
                     throws JavaModelException
Description copied from interface: IJavaProject
Sets the classpath of this project using a list of classpath entries. In particular such a classpath may contain classpath variable entries. Classpath variable entries can be resolved individually (JavaCore.getClasspathVariable(String)), or the full classpath can be resolved at once using the helper method IJavaProject.getResolvedClasspath(boolean).

A classpath variable provides an indirection level for better sharing a classpath. As an example, it allows a classpath to no longer refer directly to external JARs located in some user specific location. The classpath can simply refer to some variables defining the proper locations of these external JARs.

Setting the classpath to null specifies a default classpath (the project root). Setting the classpath to an empty array specifies an empty classpath.

If a cycle is detected while setting this classpath, an error marker will be added to the project closing the cycle. To avoid this problem, use IJavaProject.hasClasspathCycle(IClasspathEntry[]) before setting the classpath.

This operation acquires a lock on the workspace's root.

Specified by:
setRawClasspath in interface IJavaProject
Parameters:
entries - a list of classpath entries
monitor - the given progress monitor
Throws:
JavaModelException - if the classpath could not be set. Reasons include:
See Also:
IJavaProject

setSharedProperty

public void setSharedProperty(java.lang.String key,
                              java.lang.String value)
                       throws org.eclipse.core.runtime.CoreException
Record a shared persistent property onto a project. Note that it is orthogonal to IResource persistent properties, and client code has to decide which form of storage to use appropriately. Shared properties produce real resource files which can be shared through a VCM onto a server. Persistent properties are not shareable. shared properties end up in resource files, and thus cannot be modified during delta notifications (a CoreException would then be thrown).

Parameters:
key - String
value - String
Throws:
org.eclipse.core.runtime.CoreException
See Also:
getSharedProperty(String key)

updateCycleParticipants

public void updateCycleParticipants(java.util.ArrayList prereqChain,
                                    java.util.HashSet cycleParticipants,
                                    IWorkspaceRoot workspaceRoot,
                                    java.util.HashSet traversed,
                                    java.util.Map preferredClasspaths)
If a cycle is detected, then cycleParticipants contains all the paths of projects involved in this cycle (directly and indirectly), no cycle if the set is empty (and started empty)

Parameters:
prereqChain - ArrayList
cycleParticipants - HashSet
workspaceRoot - IWorkspaceRoot
traversed - HashSet
preferredClasspaths - Map