Eclipse JDT
2.0

org.eclipse.jdt.core
Interface IJavaModel

All Superinterfaces:
IAdaptable, IJavaElement, IOpenable, IParent

public interface IJavaModel
extends IJavaElement, IOpenable, IParent

Represent the root Java element corresponding to the workspace. Since there is only one such root element, it is commonly referred to as the Java model element. The Java model element needs to be opened before it can be navigated or manipulated. The Java model element has no parent (it is the root of the Java element hierarchy). Its children are IJavaProjects.

This interface provides methods for performing copy, move, rename, and delete operations on multiple Java elements.

This interface is not intended to be implemented by clients. An instance of one of these handles can be created via JavaCore.create(workspace.getRoot()).

See Also:
JavaCore.create(org.eclipse.core.resources.IWorkspaceRoot)

Field Summary
 
Fields inherited from interface org.eclipse.jdt.core.IJavaElement
CLASS_FILE, COMPILATION_UNIT, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVA_MODEL, JAVA_PROJECT, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE
 
Method Summary
 void copy(IJavaElement[] elements, IJavaElement[] containers, IJavaElement[] siblings, String[] renamings, boolean replace, IProgressMonitor monitor)
          Copies the given elements to the specified container(s).
 void delete(IJavaElement[] elements, boolean force, IProgressMonitor monitor)
          Deletes the given elements, forcing the operation if necessary and specified.
 IJavaProject getJavaProject(String name)
          Returns the Java project with the given name.
 IJavaProject[] getJavaProjects()
          Returns the Java projects in this Java model, or an empty array if there are none.
 IWorkspace getWorkspace()
          Returns the workspace associated with this Java model.
 void move(IJavaElement[] elements, IJavaElement[] containers, IJavaElement[] siblings, String[] renamings, boolean replace, IProgressMonitor monitor)
          Moves the given elements to the specified container(s).
 void refreshExternalArchives(IJavaElement[] elementsScope, IProgressMonitor monitor)
          Triggers an update of the JavaModel with respect to the referenced external archives.
 void rename(IJavaElement[] elements, IJavaElement[] destinations, String[] names, boolean replace, IProgressMonitor monitor)
          Renames the given elements as specified.
 
Methods inherited from interface org.eclipse.jdt.core.IJavaElement
exists, getAncestor, getCorrespondingResource, getElementName, getElementType, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPath, getResource, getUnderlyingResource, isReadOnly, isStructureKnown
 
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
 
Methods inherited from interface org.eclipse.jdt.core.IOpenable
close, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, save
 
Methods inherited from interface org.eclipse.jdt.core.IParent
getChildren, hasChildren
 

Method Detail

copy

public void copy(IJavaElement[] elements,
                 IJavaElement[] containers,
                 IJavaElement[] siblings,
                 String[] renamings,
                 boolean replace,
                 IProgressMonitor monitor)
          throws JavaModelException
Copies 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 null is specified for a given sibling, the copy is inserted as the last child of its associated container.

Optionally, each copy can be renamed. If null is 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 true for force. Otherwise an exception is thrown in the event that a name collision occurs.

Parameters:
elements - the elements to copy
containers - the container, or list of containers
siblings - the list of siblings element any of which may be null; or null
renamings - the list of new names any of which may be null; or null
replace - true if any existing child in a target container with the target name should be replaced, and false to throw an exception in the event of a name collision
monitor - a progress monitor
Throws:
JavaModelException - if an element could not be copied. Reasons include:
  • A specified element, container, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred 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 replace has been specified as false (NAME_COLLISION)
  • A container or element is read-only (READ_ONLY)

delete

public void delete(IJavaElement[] elements,
                   boolean force,
                   IProgressMonitor monitor)
            throws JavaModelException
Deletes the given elements, forcing the operation if necessary and specified.

Parameters:
elements - the elements to delete
force - a flag controlling whether underlying resources that are not in sync with the local file system will be tolerated
monitor - a progress monitor
Throws:
JavaModelException - if an element could not be deleted. Reasons include:
  • A specified element does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while updating an underlying resource
  • An element is read-only (READ_ONLY)

getJavaProject

public IJavaProject getJavaProject(String name)
Returns the Java project with the given name. This is a handle-only method. The project may or may not exist.

Returns:
the Java project with the given name

getJavaProjects

public IJavaProject[] getJavaProjects()
                               throws JavaModelException
Returns the Java projects in this Java model, or an empty array if there are none.

Returns:
the Java projects in this Java model, or an empty array if there are none
Throws:
JavaModelException - if this request fails.

getWorkspace

public IWorkspace getWorkspace()
Returns the workspace associated with this Java model.

Returns:
the workspace associated with this Java model

move

public void move(IJavaElement[] elements,
                 IJavaElement[] containers,
                 IJavaElement[] siblings,
                 String[] renamings,
                 boolean replace,
                 IProgressMonitor monitor)
          throws JavaModelException
Moves 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 null is specified for sibling, the element is inserted as the last child of its associated container.

Optionally, each element can be renamed. If null is 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 true for force. Otherwise an exception is thrown in the event that a name collision occurs.

Parameters:
elements - the elements to move
containers - the container, or list of containers
siblings - the list of siblings element any of which may be null; or null
renamings - the list of new names any of which may be null; or null
replace - true if any existing child in a target container with the target name should be replaced, and false to throw an exception in the event of a name collision
monitor - a progress monitor
Throws:
JavaModelException - if an element could not be moved. Reasons include:
  • A specified element, container, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred 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 replace has been specified as false (NAME_COLLISION)
  • A container or element is read-only (READ_ONLY)
IllegalArgumentException - any element or container is null

refreshExternalArchives

public void refreshExternalArchives(IJavaElement[] elementsScope,
                                    IProgressMonitor monitor)
                             throws JavaModelException
Triggers 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 (passing null along is equivalent to refreshing the entire mode). The elements can be:

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.

Parameters:
elementsScope - - a collection of elements defining the scope of the refresh
monitor - - a progress monitor used to report progress
Throws:
JavaModelException - in one of the corresponding situation:
  • an exception occurs while accessing project resources
Since:
2.0
See Also:
IJavaElementDelta

rename

public void rename(IJavaElement[] elements,
                   IJavaElement[] destinations,
                   String[] names,
                   boolean replace,
                   IProgressMonitor monitor)
            throws JavaModelException
Renames 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.

Parameters:
elements - the elements to rename
destinations - the container, or list of containers
names - the list of new names
replace - true if an existing child in a target container with the target name should be replaced, and false to throw an exception in the event of a name collision
monitor - a progress monitor
Throws:
JavaModelException - if an element could not be renamed. Reasons include:
  • A specified element does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while updating an underlying resource
  • A new name is invalid (INVALID_NAME)
  • A child already exists with the same name and replace has been specified as false (NAME_COLLISION)
  • An element is read-only (READ_ONLY)

Eclipse JDT
2.0

Copyright (c) IBM Corp. and others 2000, 2002. All Rights Reserved.