Class JavaModel
- All Implemented Interfaces:
IBufferChangedListener,IJavaElement,IJavaModel,IOpenable,IParent,org.eclipse.core.runtime.IAdaptable
IJavaModel. The Java Model maintains a cache of active
IJavaProjects in a workspace. A Java Model is specific to a workspace.
To retrieve a workspace's model, use the
#getJavaModel() method.- See Also:
-
Field Summary
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaElement
JEM_ANNOTATION, JEM_CLASSFILE, JEM_COMPILATIONUNIT, JEM_COUNT, JEM_DELIMITER_ESCAPE, JEM_ESCAPE, JEM_FIELD, JEM_IMPORTDECLARATION, JEM_INITIALIZER, JEM_JAVAPROJECT, JEM_LAMBDA_EXPRESSION, JEM_LAMBDA_METHOD, JEM_LOCALVARIABLE, JEM_METHOD, JEM_MODULAR_CLASSFILE, JEM_MODULE, JEM_PACKAGEDECLARATION, JEM_PACKAGEFRAGMENT, JEM_PACKAGEFRAGMENTROOT, JEM_STRING, JEM_TYPE, JEM_TYPE_PARAMETER, NO_ELEMENTS, NO_INFO, NO_STRINGSFields inherited from interface org.aspectj.org.eclipse.jdt.core.IJavaElement
ANNOTATION, CLASS_FILE, COMPILATION_UNIT, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVA_MODEL, JAVA_MODULE, JAVA_PROJECT, LOCAL_VARIABLE, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE, TYPE_PARAMETER -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedConstructs a new Java Model on the given workspace. -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanbuildStructure(OpenableElementInfo info, org.eclipse.core.runtime.IProgressMonitor pm, Map newElements, org.eclipse.core.resources.IResource underlyingResource) Builds this element's structure and properties in the given info object, based on this element's current contents (reuse buffer contents if this element has an open buffer, or resource contents if this element does not have an open buffer).booleancontains(org.eclipse.core.resources.IResource resource) Returns whether this Java model contains anIJavaElementwhose resource is the given resource or a non-Java resource which is the given resource.voidcopy(IJavaElement[] elements, IJavaElement[] containers, IJavaElement[] siblings, String[] renamings, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) Copies the given elements to the specified container(s).protected JavaModelInfoReturns a new element info for this element.voiddelete(IJavaElement[] elements, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) Deletes the given elements, forcing the operation if necessary and specified.booleanReturns true if this handle represents the same Java element as the given handle.intReturns this element's kind encoded as an integer.static ObjectgetExternalTarget(org.eclipse.core.runtime.IPath path, boolean checkResourceExistence) static FileHelper method - returns theFileitem iftargetis a file (i.e., the target returnstruetoFile.isFile().getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) protected voidprotected charReturns thecharthat marks the start of this handles contribution to a memento.Returns the Java model.getJavaProject(String projectName) Returns the Java project with the given name.getJavaProject(org.eclipse.core.resources.IResource resource) Returns the active Java project associated with the specified resource, ornullif no Java project yet exists for the resource.Returns the Java projects in this Java model, or an empty array if there are none.Object[]Returns an array of non-Java resources (that is, non-Java projects) in the workspace.org.eclipse.core.runtime.IPathgetPath()Returns the path to the innermost resource enclosing this element.static ObjectgetTarget(IClasspathEntry entry, boolean checkResourceExistence) Return same as callinggetTarget(IPath, boolean)forIClasspathEntry.getPath()static ObjectgetTarget(IPackageFragmentRoot root, boolean checkResourceExistence) Return same as callinggetTarget(IPath, boolean)forIJavaElement.getPath()static ObjectgetTarget(org.eclipse.core.runtime.IPath path, boolean checkResourceExistence) Helper method - for the providedIPath, returns: If the path corresponds to an internal file or folder, theIResourcefor that resource If the path corresponds to an external folder linked throughExternalFoldersManager, theIFolderfor that folder If the path corresponds to an external library archive, theFilefor that archive Can returnnullifcheckResourceExistenceistrueand the entity referred to by the path does not exist on the file system Internal items must be referred to using container-relative paths.org.eclipse.core.resources.IResourceReturns the smallest underlying resource that contains this element, ornullif this element is not contained in a resource.org.eclipse.core.resources.IWorkspaceReturns the workbench associated with this object.static org.eclipse.core.resources.IResourcegetWorkspaceTarget(org.eclipse.core.runtime.IPath path) Helper method - returns theIResourcecorresponding to the providedIPath, ornullif no such resource exists.static booleanHelper method - returns whether an object is a file (i.e., it returnstruetoFile.isFile().static booleanstatic booleanvoidmove(IJavaElement[] elements, IJavaElement[] containers, IJavaElement[] siblings, String[] renamings, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) Moves the given elements to the specified container(s).voidrefreshExternalArchives(IJavaElement[] elementsScope, org.eclipse.core.runtime.IProgressMonitor monitor) Triggers an update of the JavaModel with respect to the referenced external archives.voidrename(IJavaElement[] elements, IJavaElement[] destinations, String[] renamings, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) Renames the given elements as specified.org.eclipse.core.resources.IResourceresource(PackageFragmentRoot root) protected voidrunOperation(MultiOperation op, IJavaElement[] elements, IJavaElement[] siblings, String[] renamings, org.eclipse.core.runtime.IProgressMonitor monitor) Configures and runs theMultiOperation.protected voidtoStringInfo(int tab, StringBuilder buffer, Object info, boolean showResolvedInfo) for debugging onlyprotected org.eclipse.core.runtime.IStatusvalidateExistence(org.eclipse.core.resources.IResource underlyingResource) Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.Openable
bufferChanged, canBeRemovedFromCache, canBufferBeRemovedFromCache, closeBuffer, closing, codeComplete, codeSelect, exists, findRecommendedLineSeparator, generateInfos, getBuffer, getBufferFactory, getBufferManager, getCorrespondingResource, getOpenable, getPackageFragmentRoot, getResource, hasBuffer, hasUnsavedChanges, ignoreErrorStatus, isConsistent, isOpen, isSourceElement, isStructureKnown, makeConsistent, open, openAncestors, openBuffer, resource, resourceExists, saveMethods inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaElement
appendEscapedDelimiter, calculateHashCode, close, escapeMementoName, findNode, getAncestor, getAttachedJavadoc, getChildren, getChildrenOfType, getClassFile, getCompilationUnit, getElementInfo, getElementInfo, getElementName, getHandleFromMemento, getHandleIdentifier, getHandleMemento, getJavadocBaseLocation, getJavaProject, getLibraryJavadocLocation, getOpenableParent, getParent, getPrimaryElement, getPrimaryElement, getSchedulingRule, getSourceElementAt, getSourceMapper, getURLContents, hasChildren, hashCode, isAncestorOf, isReadOnly, newDoesNotExistStatus, newJavaModelException, newNotPresentException, openWhenClosed, readableName, resetHashCode, resolved, tabString, toDebugString, toString, toString, toStringAncestors, toStringChildren, toStringInfo, toStringName, toStringWithAncestors, toStringWithAncestors, unresolved, validateAndCacheMethods inherited from class org.eclipse.core.runtime.PlatformObject
getAdapterMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapterMethods inherited from interface org.aspectj.org.eclipse.jdt.core.IJavaElement
exists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getElementName, getHandleIdentifier, getJavaProject, getOpenable, getParent, getPrimaryElement, getResource, getSchedulingRule, isReadOnly, isStructureKnownMethods inherited from interface org.aspectj.org.eclipse.jdt.core.IOpenable
close, findRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, saveMethods inherited from interface org.aspectj.org.eclipse.jdt.core.IParent
getChildren, hasChildren
-
Constructor Details
-
JavaModel
-
-
Method Details
-
buildStructure
protected boolean buildStructure(OpenableElementInfo info, org.eclipse.core.runtime.IProgressMonitor pm, Map newElements, org.eclipse.core.resources.IResource underlyingResource) Description copied from class:OpenableBuilds this element's structure and properties in the given info object, based on this element's current contents (reuse buffer contents if this element has an open buffer, or resource contents if this element does not have an open buffer). Children are placed in the given newElements table (note, this element has already been placed in the newElements table). Returns true if successful, or false if an error is encountered while determining the structure of this element.- Specified by:
buildStructurein classOpenable
-
contains
public boolean contains(org.eclipse.core.resources.IResource resource) Description copied from interface:IJavaModelReturns whether this Java model contains anIJavaElementwhose resource is the given resource or a non-Java resource which is the given resource.Note: no existency check is performed on the argument resource. If it is not accessible (see
IResource.isAccessible()) yet but would be located in Java model range, then it will returntrue.If the resource is accessible, it can be reached by navigating the Java model down using the
getChildren()and/orgetNonJavaResources()methods.- Specified by:
containsin interfaceIJavaModel- Parameters:
resource- the resource to check- Returns:
- true if the resource is accessible through the Java model
-
copy
public void copy(IJavaElement[] elements, IJavaElement[] containers, IJavaElement[] siblings, String[] renamings, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaModelCopies the given elements to the specified container(s). If one container is specified, all elements are copied to that container. If more than one container is specified, the number of elements and containers must match, and each element is copied to its associated container.Optionally, each copy can positioned before a sibling element. If
nullis specified for a given sibling, the copy is inserted as the last child of its associated container.Optionally, each copy can be renamed. If
nullis specified for the new name, the copy is not renamed.Optionally, any existing child in the destination container with the same name can be replaced by specifying
truefor force. Otherwise an exception is thrown in the event that a name collision occurs.- Specified by:
copyin interfaceIJavaModel- Parameters:
elements- the elements to copycontainers- the container, or list of containerssiblings- the list of siblings element any of which may benull; ornullrenamings- the list of new names any of which may benull; ornullforce-trueif any existing child in a target container with the target name should be replaced, andfalseto throw an exception in the event of a name collisionmonitor- a progress monitor- Throws:
JavaModelException- if an element could not be copied. Reasons include:- There is no element to process (NO_ELEMENTS_TO_PROCESS). The given elements is null or empty
- A specified element, container, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
- A
CoreExceptionoccurred while updating an underlying resource - A container is of an incompatible type (
INVALID_DESTINATION) - A sibling is not a child of it associated container (
INVALID_SIBLING) - A new name is invalid (
INVALID_NAME) - A child in its associated container already exists with the same
name and
replacehas been specified asfalse(NAME_COLLISION) - A container or element is read-only (
READ_ONLY)
- See Also:
-
createElementInfo
Returns a new element info for this element.- Overrides:
createElementInfoin classOpenable
-
delete
public void delete(IJavaElement[] elements, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaModelDeletes the given elements, forcing the operation if necessary and specified.- Specified by:
deletein interfaceIJavaModel- Parameters:
elements- the elements to deleteforce- a flag controlling whether underlying resources that are not in sync with the local file system will be toleratedmonitor- a progress monitor- Throws:
JavaModelException- if an element could not be deleted. Reasons include:- There is no element to process (NO_ELEMENTS_TO_PROCESS). The given elements is null or empty
- A specified element does not exist (ELEMENT_DOES_NOT_EXIST)
- A
CoreExceptionoccurred while updating an underlying resource - An element is read-only (
READ_ONLY)
- See Also:
-
equals
Description copied from class:JavaElementReturns true if this handle represents the same Java element as the given handle. By default, two handles represent the same element if they are identical or if they represent the same type of element, have equal names, parents, and occurrence counts.If a subclass has other requirements for equality, this method must be overridden.
- Overrides:
equalsin classJavaElement- See Also:
-
getElementType
public int getElementType()Description copied from interface:IJavaElementReturns this element's kind encoded as an integer. This is a handle-only method.- Specified by:
getElementTypein interfaceIJavaElement- Returns:
- the kind of element; one of the constants declared in
IJavaElement - See Also:
-
getHandleFromMemento
public IJavaElement getHandleFromMemento(String token, MementoTokenizer memento, WorkingCopyOwner owner) - Specified by:
getHandleFromMementoin classJavaElement
-
getHandleMemento
- Overrides:
getHandleMementoin classJavaElement- See Also:
-
getHandleMementoDelimiter
protected char getHandleMementoDelimiter()Returns thecharthat marks the start of this handles contribution to a memento.- Specified by:
getHandleMementoDelimiterin classJavaElement
-
getJavaProject
Description copied from interface:IJavaModelReturns the Java project with the given name. The given name must be a valid path segment as defined byIPath.isValidSegment(String). This is a handle-only method. The project may or may not exist.- Specified by:
getJavaProjectin interfaceIJavaModel- Parameters:
projectName- the name of the Java project- Returns:
- the Java project with the given name
- See Also:
-
getJavaModel
Description copied from interface:IJavaElementReturns the Java model. This is a handle-only method.- Specified by:
getJavaModelin interfaceIJavaElement- Overrides:
getJavaModelin classJavaElement- Returns:
- the Java model
- See Also:
-
getJavaProject
Returns the active Java project associated with the specified resource, ornullif no Java project yet exists for the resource.- Throws:
IllegalArgumentException- if the given resource is not one of an IProject, IFolder, or IFile.
-
getJavaProjects
Description copied from interface:IJavaModelReturns the Java projects in this Java model, or an empty array if there are none.- Specified by:
getJavaProjectsin interfaceIJavaModel- Returns:
- the Java projects in this Java model, or an empty array if there are none
- Throws:
JavaModelException- if this request fails.- See Also:
-
getNonJavaResources
Description copied from interface:IJavaModelReturns an array of non-Java resources (that is, non-Java projects) in the workspace.Non-Java projects include all projects that are closed (even if they have the Java nature).
- Specified by:
getNonJavaResourcesin interfaceIJavaModel- Returns:
- an array of non-Java projects (
IProjects) contained in the workspace. - Throws:
JavaModelException- if this element does not exist or if an exception occurs while accessing its corresponding resource- See Also:
-
getPath
public org.eclipse.core.runtime.IPath getPath()Description copied from interface:IJavaElementReturns 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 or to the folder in the file system. This is a handle-only method.- Specified by:
getPathin interfaceIJavaElement- Returns:
- the path to the innermost resource enclosing this element
-
resource
-
getUnderlyingResource
public org.eclipse.core.resources.IResource getUnderlyingResource()Description copied from interface:IJavaElementReturns the smallest underlying resource that contains this element, ornullif this element is not contained in a resource.- Specified by:
getUnderlyingResourcein interfaceIJavaElement- Overrides:
getUnderlyingResourcein classOpenable- Returns:
- the underlying resource, or
nullif none - See Also:
-
getWorkspace
public org.eclipse.core.resources.IWorkspace getWorkspace()Returns the workbench associated with this object.- Specified by:
getWorkspacein interfaceIJavaModel- Returns:
- the workspace associated with this Java model
-
move
public void move(IJavaElement[] elements, IJavaElement[] containers, IJavaElement[] siblings, String[] renamings, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaModelMoves the given elements to the specified container(s). If one container is specified, all elements are moved to that container. If more than one container is specified, the number of elements and containers must match, and each element is moved to its associated container.Optionally, each element can positioned before a sibling element. If
nullis specified for sibling, the element is inserted as the last child of its associated container.Optionally, each element can be renamed. If
nullis specified for the new name, the element is not renamed.Optionally, any existing child in the destination container with the same name can be replaced by specifying
truefor force. Otherwise an exception is thrown in the event that a name collision occurs.- Specified by:
movein interfaceIJavaModel- Parameters:
elements- the elements to movecontainers- the container, or list of containerssiblings- the list of siblings element any of which may benull; ornullrenamings- the list of new names any of which may benull; ornullforce-trueif any existing child in a target container with the target name should be replaced, andfalseto throw an exception in the event of a name collisionmonitor- a progress monitor- Throws:
JavaModelException- if an element could not be moved. Reasons include:- There is no element to process (NO_ELEMENTS_TO_PROCESS). The given elements is null or empty
- A specified element, container, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
- A
CoreExceptionoccurred while updating an underlying resource - A container is of an incompatible type (
INVALID_DESTINATION) - A sibling is not a child of it associated container (
INVALID_SIBLING) - A new name is invalid (
INVALID_NAME) - A child in its associated container already exists with the same
name and
replacehas been specified asfalse(NAME_COLLISION) - A container or element is read-only (
READ_ONLY)
- See Also:
-
refreshExternalArchives
public void refreshExternalArchives(IJavaElement[] elementsScope, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaModelTriggers an update of the JavaModel with respect to the referenced external archives. This operation will issue a JavaModel delta describing the discovered changes, in term of Java element package fragment roots added, removed or changed. Note that a collection of elements can be passed so as to narrow the set of archives to refresh (passingnullalong is equivalent to refreshing the entire mode). The elements can be:- package fragment roots corresponding to external archives
- Java projects, which referenced external archives will be refreshed
- Java model, all referenced external archives will be refreshed.
In case an archive is used by multiple projects, the delta issued will account for all of them. This means that even if a project was not part of the elements scope, it may still be notified of changes if it is referencing a library comprised in the scope.
Since 3.7, a project refresh automatically triggers a refresh of external archives. Hence, this method doesn't need to be explicitly called after a project refresh.
- Specified by:
refreshExternalArchivesin interfaceIJavaModel- Parameters:
elementsScope- - a collection of elements defining the scope of the refreshmonitor- - a progress monitor used to report progress- Throws:
JavaModelException- in one of the corresponding situation:- an exception occurs while accessing project resources
- See Also:
-
rename
public void rename(IJavaElement[] elements, IJavaElement[] destinations, String[] renamings, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Description copied from interface:IJavaModelRenames the given elements as specified. If one container is specified, all elements are renamed within that container. If more than one container is specified, the number of elements and containers must match, and each element is renamed within its associated container.- Specified by:
renamein interfaceIJavaModel- Parameters:
elements- the elements to renamedestinations- the container, or list of containersrenamings- the list of new namesforce-trueif an existing child in a target container with the target name should be replaced, andfalseto throw an exception in the event of a name collisionmonitor- a progress monitor- Throws:
JavaModelException- if an element could not be renamed. Reasons include:- There is no element to process (NO_ELEMENTS_TO_PROCESS). The given elements is null or empty
- A specified element does not exist (ELEMENT_DOES_NOT_EXIST)
- A
CoreExceptionoccurred while updating an underlying resource - A new name is invalid (
INVALID_NAME) - A child already exists with the same name and
replacehas been specified asfalse(NAME_COLLISION) - An element is read-only (
READ_ONLY)
- See Also:
-
runOperation
protected void runOperation(MultiOperation op, IJavaElement[] elements, IJavaElement[] siblings, String[] renamings, org.eclipse.core.runtime.IProgressMonitor monitor) throws JavaModelException Configures and runs theMultiOperation.- Throws:
JavaModelException
-
toStringInfo
for debugging only- Overrides:
toStringInfoin classJavaElement- Parameters:
showResolvedInfo- TODO
-
getTarget
Helper method - for the providedIPath, returns:- If the path corresponds to an internal file or folder, the
IResourcefor that resource - If the path corresponds to an external folder linked through
ExternalFoldersManager, theIFolderfor that folder - If the path corresponds to an external library archive, the
Filefor that archive - Can return
nullifcheckResourceExistenceistrueand the entity referred to by the path does not exist on the file system
- If the path corresponds to an internal file or folder, the
-
getTarget
Return same as callinggetTarget(IPath, boolean)forIClasspathEntry.getPath() -
getTarget
Return same as callinggetTarget(IPath, boolean)forIJavaElement.getPath() -
getWorkspaceTarget
public static org.eclipse.core.resources.IResource getWorkspaceTarget(org.eclipse.core.runtime.IPath path) Helper method - returns theIResourcecorresponding to the providedIPath, ornullif no such resource exists. -
getExternalTarget
public static Object getExternalTarget(org.eclipse.core.runtime.IPath path, boolean checkResourceExistence) Helper method - returns either the linkedIFolderor theFilecorresponding to the providedIPath. IfcheckResourceExistenceisfalse, then the IFolder or File object is always returned, otherwisenullis returned if it does not exist on the file system. -
isFile
Helper method - returns whether an object is a file (i.e., it returnstruetoFile.isFile(). -
isJimage
-
isJmod
-
getFile
Helper method - returns theFileitem iftargetis a file (i.e., the target returnstruetoFile.isFile(). Otherwise returnsnull. -
validateExistence
protected org.eclipse.core.runtime.IStatus validateExistence(org.eclipse.core.resources.IResource underlyingResource) - Specified by:
validateExistencein classOpenable
-