org.aspectj.org.eclipse.jdt.internal.core
Class PackageFragmentRoot

java.lang.Object
  extended by PlatformObject
      extended by org.aspectj.org.eclipse.jdt.internal.core.JavaElement
          extended by org.aspectj.org.eclipse.jdt.internal.core.Openable
              extended by org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot
All Implemented Interfaces:
IBufferChangedListener, IJavaElement, IOpenable, IPackageFragmentRoot, IParent
Direct Known Subclasses:
ExternalPackageFragmentRoot, JarPackageFragmentRoot

public class PackageFragmentRoot
extends Openable
implements IPackageFragmentRoot

See Also:
IPackageFragmentRoot

Field Summary
protected static char ATTACHMENT_PROPERTY_DELIMITER
          The delimiter between the source path and root path in the attachment server property.
static java.lang.String NO_SOURCE_ATTACHMENT
           
protected  IResource resource
          The resource associated with this root (null for external jar)
 
Fields inherited from class org.aspectj.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, NO_ELEMENTS, NO_INFO, parent
 
Fields inherited from interface org.aspectj.org.eclipse.jdt.core.IPackageFragmentRoot
DEFAULT_PACKAGEROOT_PATH, DESTINATION_PROJECT_CLASSPATH, K_BINARY, K_SOURCE, NO_RESOURCE_MODIFICATION, ORIGINATING_PROJECT_CLASSPATH, OTHER_REFERRING_PROJECTS_CLASSPATH, REPLACE
 
Fields inherited from interface org.aspectj.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
 
Constructor Summary
protected PackageFragmentRoot(IResource resource, JavaProject project)
          Constructs a package fragment root which is the root of the java package directory hierarchy.
 
Method Summary
 void attachSource(IPath sourcePath, IPath rootPath, IProgressMonitor monitor)
          Attaches the source archive identified by the given absolute path to this binary package fragment root.
protected  boolean buildStructure(OpenableElementInfo info, IProgressMonitor pm, java.util.Map newElements, 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).
protected  boolean computeChildren(OpenableElementInfo info, IResource underlyingResource)
          Compute the package fragment children of this package fragment root.
protected  void computeFolderChildren(IContainer folder, boolean isIncluded, java.lang.String[] pkgName, java.util.ArrayList vChildren, char[][] inclusionPatterns, char[][] exclusionPatterns)
          Starting at this folder, create package fragments and add the fragments that are not exclused to the collection of children.
 void copy(IPath destination, int updateResourceFlags, int updateModelFlags, IClasspathEntry sibling, IProgressMonitor monitor)
          Copies the resource of this package fragment root to the destination path as specified by IResource.copy(IPath, int, IProgressMonitor) but excluding nested source folders.
protected  java.lang.Object createElementInfo()
          Returns a new element info for this element.
 IPackageFragment createPackageFragment(java.lang.String pkgName, boolean force, IProgressMonitor monitor)
          Creates and returns a package fragment in this root with the given dot-separated package name.
 void delete(int updateResourceFlags, int updateModelFlags, IProgressMonitor monitor)
          Deletes the resource of this package fragment root as specified by IResource.delete(int, IProgressMonitor) but excluding nested source folders.
protected  int determineKind(IResource underlyingResource)
          Returns the root's kind - K_SOURCE or K_BINARY, defaults to K_SOURCE if it is not on the classpath.
 boolean equals(java.lang.Object o)
          Compares two objects for equality; for PackageFragmentRoots, equality is having the same parent, same resources, and occurrence count.
 char[][] fullExclusionPatternChars()
           
 char[][] fullInclusionPatternChars()
           
 java.lang.String getElementName()
          Returns the name of this element.
 int getElementType()
          Returns this element's kind encoded as an integer.
 IJavaElement getHandleFromMemento(java.lang.String token, MementoTokenizer memento, WorkingCopyOwner owner)
           
protected  void getHandleMemento(java.lang.StringBuffer buff)
           
protected  char getHandleMementoDelimiter()
          Returns the char that marks the start of this handles contribution to a memento.
 int getKind()
          Returns this package fragment root's kind encoded as an integer.
 java.lang.Object[] getNonJavaResources()
          Returns an array of non-java resources contained in the receiver.
 IPackageFragment getPackageFragment(java.lang.String packageName)
          Returns the package fragment with the given package name.
 PackageFragment getPackageFragment(java.lang.String[] pkgName)
           
protected  java.lang.String getPackageName(IFolder folder)
          Returns the package name for the given folder (which is a decendent of this root).
 IPath getPath()
          Returns the path to the innermost resource enclosing this element.
 IClasspathEntry getRawClasspathEntry()
          Returns the first raw classpath entry that corresponds to this package fragment root.
 IClasspathEntry getResolvedClasspathEntry()
          Returns the first resolved classpath entry that corresponds to this package fragment root.
 IPath getSourceAttachmentPath()
          Returns the absolute path to the source archive attached to this package fragment root's binary archive.
 IPath getSourceAttachmentRootPath()
          Returns the path within this package fragment root's source archive.
 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 hasChildren()
          Returns whether this element has one or more immediate children.
 int hashCode()
          Returns the hash code for this Java element.
 IPath internalPath()
           
 boolean isArchive()
          Returns whether this package fragment root's underlying resource is a binary archive (a JAR or zip file).
 boolean isExternal()
          Returns whether this package fragment root is external to the workbench (that is, a local file), and has no underlying resource.
 void move(IPath destination, int updateResourceFlags, int updateModelFlags, IClasspathEntry sibling, IProgressMonitor monitor)
          Moves the resource of this package fragment root to the destination path as specified by IResource.move(IPath,int,IProgressMonitor) but excluding nested source folders.
 IResource resource()
           
 IResource resource(PackageFragmentRoot root)
           
 void setSourceMapper(SourceMapper mapper)
          For use by AttachSourceOperation only.
protected  void toStringInfo(int tab, java.lang.StringBuffer buffer, java.lang.Object info, boolean showResolvedInfo)
          Debugging purposes
protected  IStatus validateExistence(IResource underlyingResource)
           
protected  IStatus validateOnClasspath()
           
protected  void verifyAttachSource(IPath sourcePath)
          Possible failures: ELEMENT_NOT_PRESENT - the root supplied to the operation does not exist INVALID_ELEMENT_TYPES - the root is not of kind K_BINARY RELATIVE_PATH - the path supplied to this operation must be an absolute path
 
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, isConsistent, isOpen, isSourceElement, isStructureKnown, makeConsistent, open, openAncestors, openBuffer, resourceExists, save
 
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaElement
close, escapeMementoName, findNode, getAncestor, getAttachedJavadoc, getChildren, getChildrenOfType, getClassFile, getCompilationUnit, getElementInfo, getElementInfo, getHandleFromMemento, getHandleIdentifier, getHandleMemento, getJavadocBaseLocation, getJavaModel, getJavaProject, getLibraryJavadocLocation, getOpenableParent, getParent, getPrimaryElement, getPrimaryElement, getSchedulingRule, getSourceElementAt, getURLContents, isAncestorOf, isReadOnly, newDoesNotExistStatus, newJavaModelException, newNotPresentException, openWhenClosed, readableName, resolved, tabString, toDebugString, toString, toString, toStringAncestors, toStringChildren, toStringInfo, toStringName, toStringWithAncestors, toStringWithAncestors, unresolved
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IParent
getChildren
 
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IJavaElement
exists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPrimaryElement, getResource, getSchedulingRule, isReadOnly, isStructureKnown
 
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IOpenable
close, findRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, save
 

Field Detail

ATTACHMENT_PROPERTY_DELIMITER

protected static final char ATTACHMENT_PROPERTY_DELIMITER
The delimiter between the source path and root path in the attachment server property.

See Also:
Constant Field Values

NO_SOURCE_ATTACHMENT

public static final java.lang.String NO_SOURCE_ATTACHMENT
See Also:
Constant Field Values

resource

protected IResource resource
The resource associated with this root (null for external jar)

Constructor Detail

PackageFragmentRoot

protected PackageFragmentRoot(IResource resource,
                              JavaProject project)
Constructs a package fragment root which is the root of the java package directory hierarchy.

Method Detail

attachSource

public void attachSource(IPath sourcePath,
                         IPath rootPath,
                         IProgressMonitor monitor)
                  throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Attaches the source archive identified by the given absolute path to this binary package fragment root. rootPath specifies the location of the root within the archive or folder (empty specifies the default root and null specifies the root path should be detected). Once a source archive or folder is attached to the package fragment root, the getSource and getSourceRange methods become operational for binary types/members. To detach a source archive or folder from a package fragment root, specify null as the source path.

Specified by:
attachSource in interface IPackageFragmentRoot
Parameters:
sourcePath - the given absolute path to the source archive or folder
rootPath - specifies the location of the root within the archive (empty specifies the default root and null specifies automatic detection of the root path)
monitor - the given progress monitor
Throws:
JavaModelException - if this operation fails. Reasons include:
  • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while updating a server property
  • This package fragment root is not of kind binary (INVALID_ELEMENT_TYPES)
  • The path provided is not absolute (RELATIVE_PATH)
See Also:
IPackageFragmentRoot

buildStructure

protected boolean buildStructure(OpenableElementInfo info,
                                 IProgressMonitor pm,
                                 java.util.Map newElements,
                                 IResource underlyingResource)
                          throws JavaModelException
Description copied from class: Openable
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). 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:
buildStructure in class Openable
Throws:
JavaModelException
See Also:
Openable

delete

public void delete(int updateResourceFlags,
                   int updateModelFlags,
                   IProgressMonitor monitor)
            throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Deletes the resource of this package fragment root as specified by IResource.delete(int, IProgressMonitor) but excluding nested source folders.

If NO_RESOURCE_MODIFICATION is specified in updateModelFlags or if this package fragment root is external, this operation doesn't delete the resource. updateResourceFlags is then ignored.

If ORIGINATING_PROJECT_CLASSPATH is specified in updateModelFlags, update the raw classpath of this package fragment root's project by removing the corresponding classpath entry.

If OTHER_REFERRING_PROJECTS_CLASSPATH is specified in updateModelFlags, update the raw classpaths of all other Java projects referring to this root's resource by removing the corresponding classpath entries.

If no flags is specified in updateModelFlags (using IResource.NONE), the default behavior applies: the resource is deleted (if this package fragment root is not external) and no classpaths are updated.

Specified by:
delete in interface IPackageFragmentRoot
Parameters:
updateResourceFlags - bit-wise or of update resource flag constants (IResource.FORCE and IResource.KEEP_HISTORY)
updateModelFlags - bit-wise or of update resource flag constants (ORIGINATING_PROJECT_CLASSPATH, OTHER_REFERRING_PROJECTS_CLASSPATH and NO_RESOURCE_MODIFICATION)
monitor - a progress monitor
Throws:
JavaModelException - if this root could not be deleted. Reasons include:
  • This root does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while deleting the resource or updating a classpath
See Also:
org.eclipse.core.resources.IResource#delete(boolean, IProgressMonitor)

computeChildren

protected boolean computeChildren(OpenableElementInfo info,
                                  IResource underlyingResource)
                           throws JavaModelException
Compute the package fragment children of this package fragment root.

Throws:
JavaModelException - The resource associated with this package fragment root does not exist

computeFolderChildren

protected void computeFolderChildren(IContainer folder,
                                     boolean isIncluded,
                                     java.lang.String[] pkgName,
                                     java.util.ArrayList vChildren,
                                     char[][] inclusionPatterns,
                                     char[][] exclusionPatterns)
                              throws JavaModelException
Starting at this folder, create package fragments and add the fragments that are not exclused to the collection of children.

Throws:
JavaModelException - The resource associated with this package fragment does not exist

copy

public void copy(IPath destination,
                 int updateResourceFlags,
                 int updateModelFlags,
                 IClasspathEntry sibling,
                 IProgressMonitor monitor)
          throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Copies the resource of this package fragment root to the destination path as specified by IResource.copy(IPath, int, IProgressMonitor) but excluding nested source folders.

If NO_RESOURCE_MODIFICATION is specified in updateModelFlags or if this package fragment root is external, this operation doesn't copy the resource. updateResourceFlags is then ignored.

If DESTINATION_PROJECT_CLASSPATH is specified in updateModelFlags, updates the classpath of the destination's project (if it is a Java project). If a non-null sibling is specified, a copy of this root's classpath entry is inserted before the sibling on the destination project's raw classpath. If null is specified, the classpath entry is added at the end of the raw classpath.

If REPLACE is specified in updateModelFlags, overwrites the resource at the destination path if any. If the same classpath entry already exists on the destination project's raw classpath, then the sibling is ignored and the new classpath entry replaces the existing one.

If no flags is specified in updateModelFlags (using IResource.NONE), the default behavior applies: the resource is copied (if this package fragment root is not external) and the classpath is not updated.

Specified by:
copy in interface IPackageFragmentRoot
Parameters:
destination - the destination path
updateResourceFlags - bit-wise or of update resource flag constants (IResource.FORCE and IResource.SHALLOW)
updateModelFlags - bit-wise or of update resource flag constants (DESTINATION_PROJECT_CLASSPATH and NO_RESOURCE_MODIFICATION)
sibling - the classpath entry before which a copy of the classpath entry should be inserted or null if the classpath entry should be inserted at the end
monitor - a progress monitor
Throws:
JavaModelException - if this root could not be copied. Reasons include:
  • This root does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while copying the resource or updating a classpath
  • The destination is not inside an existing project and updateModelFlags has been specified as DESTINATION_PROJECT_CLASSPATH (INVALID_DESTINATION)
  • The sibling is not a classpath entry on the destination project's raw classpath (INVALID_SIBLING)
  • The same classpath entry already exists on the destination project's classpath (NAME_COLLISION) and updateModelFlags has not been specified as REPLACE
See Also:
org.eclipse.core.resources.IResource#copy(IPath, boolean, IProgressMonitor)

createElementInfo

protected java.lang.Object createElementInfo()
Returns a new element info for this element.

Overrides:
createElementInfo in class Openable

createPackageFragment

public IPackageFragment createPackageFragment(java.lang.String pkgName,
                                              boolean force,
                                              IProgressMonitor monitor)
                                       throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Creates and returns a package fragment in this root with the given dot-separated package name. An empty string specifies the default package. This has the side effect of creating all package fragments that are a prefix of the new package fragment which do not exist yet. If the package fragment already exists, this has no effect. For a description of the force flag, see IFolder.create.

Specified by:
createPackageFragment in interface IPackageFragmentRoot
Parameters:
pkgName - the given dot-separated package name
force - a flag controlling how to deal with resources that are not in sync with the local file system
monitor - the given progress monitor
Returns:
a package fragment in this root with the given dot-separated package name
Throws:
JavaModelException - if the element could not be created. Reasons include:
  • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while creating an underlying resource
  • This package fragment root is read only (READ_ONLY)
  • The name is not a valid package name (INVALID_NAME)
See Also:
IPackageFragmentRoot

determineKind

protected int determineKind(IResource underlyingResource)
                     throws JavaModelException
Returns the root's kind - K_SOURCE or K_BINARY, defaults to K_SOURCE if it is not on the classpath.

Throws:
JavaModelException - if the project and root do not exist.

equals

public boolean equals(java.lang.Object o)
Compares two objects for equality; for PackageFragmentRoots, equality is having the same parent, same resources, and occurrence count.

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

fullExclusionPatternChars

public char[][] fullExclusionPatternChars()

fullInclusionPatternChars

public char[][] fullInclusionPatternChars()

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

getHandleMementoDelimiter

protected char getHandleMementoDelimiter()
Description copied from class: JavaElement
Returns the char that marks the start of this handles contribution to a memento.

Specified by:
getHandleMementoDelimiter in class JavaElement
See Also:
JavaElement.getHandleMemento()

getHandleFromMemento

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

getHandleMemento

protected void getHandleMemento(java.lang.StringBuffer buff)
Overrides:
getHandleMemento in class JavaElement
See Also:
JavaElement.getHandleMemento(StringBuffer)

getKind

public int getKind()
            throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Returns this package fragment root's kind encoded as an integer. A package fragment root can contain source files (i.e. files with one of the Java-like extensions, or .class files, but not both. If the underlying folder or archive contains other kinds of files, they are ignored. In particular, .class files are ignored under a source package fragment root, and source files are ignored under a binary package fragment root.

Specified by:
getKind in interface IPackageFragmentRoot
Returns:
this package fragment root's kind encoded as an integer
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
See Also:
IPackageFragmentRoot

getNonJavaResources

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

Specified by:
getNonJavaResources in interface IPackageFragmentRoot
Returns:
an array of non-Java resources (IFiles, IFolders, or IStorages if the package fragment root is in archive) contained in this package fragment root
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
See Also:
IClasspathEntry.getInclusionPatterns(), IClasspathEntry.getExclusionPatterns()

getPackageFragment

public IPackageFragment getPackageFragment(java.lang.String packageName)
Description copied from interface: IPackageFragmentRoot
Returns the package fragment with the given package name. An empty string indicates the default package. This is a handle-only operation. The package fragment may or may not exist.

Specified by:
getPackageFragment in interface IPackageFragmentRoot
Parameters:
packageName - the given package name
Returns:
the package fragment with the given package name
See Also:
IPackageFragmentRoot

getPackageFragment

public PackageFragment getPackageFragment(java.lang.String[] pkgName)

getPackageName

protected java.lang.String getPackageName(IFolder folder)
Returns the package name for the given folder (which is a decendent of this root).


getPath

public 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 or to the folder 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

internalPath

public IPath internalPath()

getRawClasspathEntry

public IClasspathEntry getRawClasspathEntry()
                                     throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Returns the first raw classpath entry that corresponds to this package fragment root. A raw classpath entry corresponds to a package fragment root if once resolved this entry's path is equal to the root's path.

Specified by:
getRawClasspathEntry in interface IPackageFragmentRoot
Returns:
the first raw classpath entry that corresponds to this package fragment root
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.

getResolvedClasspathEntry

public IClasspathEntry getResolvedClasspathEntry()
                                          throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Returns the first resolved classpath entry that corresponds to this package fragment root. A resolved classpath entry is said to correspond to a root if the path of the resolved entry is equal to the root's path.

Specified by:
getResolvedClasspathEntry in interface IPackageFragmentRoot
Returns:
the first resolved classpath entry that corresponds to this package fragment root
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.

resource

public IResource resource()
Overrides:
resource in class Openable

resource

public IResource resource(PackageFragmentRoot root)
Specified by:
resource in class Openable

getSourceAttachmentPath

public IPath getSourceAttachmentPath()
                              throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Returns the absolute path to the source archive attached to this package fragment root's binary archive.

Specified by:
getSourceAttachmentPath in interface IPackageFragmentRoot
Returns:
the absolute path to the corresponding source archive, or null if this package fragment root's binary archive has no corresponding source archive, or if this package fragment root is not a binary archive
Throws:
JavaModelException - if this operation fails
See Also:
IPackageFragmentRoot

setSourceMapper

public void setSourceMapper(SourceMapper mapper)
                     throws JavaModelException
For use by AttachSourceOperation only. Sets the source mapper associated with this root.

Throws:
JavaModelException

getSourceAttachmentRootPath

public IPath getSourceAttachmentRootPath()
                                  throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Returns the path within this package fragment root's source archive. An empty path indicates that packages are located at the root of the source archive.

Specified by:
getSourceAttachmentRootPath in interface IPackageFragmentRoot
Returns:
the path within the corresponding source archive, or null if this package fragment root's binary archive has no corresponding source archive, or if this package fragment root is not a binary archive
Throws:
JavaModelException - if this operation fails
See Also:
IPackageFragmentRoot

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

hasChildren

public boolean hasChildren()
                    throws JavaModelException
Description copied from interface: IParent
Returns whether this element has one or more immediate children. This is a convenience method, and may be more efficient than testing whether getChildren is an empty array.

Specified by:
hasChildren in interface IParent
Overrides:
hasChildren in class JavaElement
Returns:
true if the immediate children of this element, false otherwise
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource
See Also:
IParent

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

isArchive

public boolean isArchive()
Description copied from interface: IPackageFragmentRoot
Returns whether this package fragment root's underlying resource is a binary archive (a JAR or zip file).

This is a handle-only method.

Specified by:
isArchive in interface IPackageFragmentRoot
Returns:
true if this package fragment root's underlying resource is a binary archive, false otherwise
See Also:
IPackageFragmentRoot

isExternal

public boolean isExternal()
Description copied from interface: IPackageFragmentRoot
Returns whether this package fragment root is external to the workbench (that is, a local file), and has no underlying resource.

This is a handle-only method.

Specified by:
isExternal in interface IPackageFragmentRoot
Returns:
true if this package fragment root is external to the workbench (that is, a local file), and has no underlying resource, false otherwise
See Also:
IPackageFragmentRoot

validateOnClasspath

protected IStatus validateOnClasspath()

move

public void move(IPath destination,
                 int updateResourceFlags,
                 int updateModelFlags,
                 IClasspathEntry sibling,
                 IProgressMonitor monitor)
          throws JavaModelException
Description copied from interface: IPackageFragmentRoot
Moves the resource of this package fragment root to the destination path as specified by IResource.move(IPath,int,IProgressMonitor) but excluding nested source folders.

If NO_RESOURCE_MODIFICATION is specified in updateModelFlags or if this package fragment root is external, this operation doesn't move the resource. updateResourceFlags is then ignored.

If DESTINATION_PROJECT_CLASSPATH is specified in updateModelFlags, updates the classpath of the destination's project (if it is a Java project). If a non-null sibling is specified, a copy of this root's classpath entry is inserted before the sibling on the destination project's raw classpath. If null is specified, the classpath entry is added at the end of the raw classpath.

If ORIGINATING_PROJECT_CLASSPATH is specified in updateModelFlags, update the raw classpath of this package fragment root's project by removing the corresponding classpath entry.

If OTHER_REFERRING_PROJECTS_CLASSPATH is specified in updateModelFlags, update the raw classpaths of all other Java projects referring to this root's resource by removing the corresponding classpath entries.

If REPLACE is specified in updateModelFlags, overwrites the resource at the destination path if any. If the same classpath entry already exists on the destination project's raw classpath, then the sibling is ignored and the new classpath entry replaces the existing one.

If no flags is specified in updateModelFlags (using IResource.NONE), the default behavior applies: the resource is moved (if this package fragment root is not external) and no classpaths are updated.

Specified by:
move in interface IPackageFragmentRoot
Parameters:
destination - the destination path
updateResourceFlags - bit-wise or of update flag constants (IResource.FORCE, IResource.KEEP_HISTORY and IResource.SHALLOW)
updateModelFlags - bit-wise or of update resource flag constants (DESTINATION_PROJECT_CLASSPATH, ORIGINATING_PROJECT_CLASSPATH, OTHER_REFERRING_PROJECTS_CLASSPATH and NO_RESOURCE_MODIFICATION)
sibling - the classpath entry before which a copy of the classpath entry should be inserted or null if the classpath entry should be inserted at the end
monitor - a progress monitor
Throws:
JavaModelException - if this root could not be moved. Reasons include:
  • This root does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while copying the resource or updating a classpath
  • The destination is not inside an existing project and updateModelFlags has been specified as DESTINATION_PROJECT_CLASSPATH (INVALID_DESTINATION)
  • The sibling is not a classpath entry on the destination project's raw classpath (INVALID_SIBLING)
  • The same classpath entry already exists on the destination project's classpath (NAME_COLLISION) and updateModelFlags has not been specified as REPLACE
See Also:
org.eclipse.core.resources.IResource#move(IPath, boolean, IProgressMonitor)

toStringInfo

protected void toStringInfo(int tab,
                            java.lang.StringBuffer buffer,
                            java.lang.Object info,
                            boolean showResolvedInfo)
Description copied from class: JavaElement
Debugging purposes

Overrides:
toStringInfo in class JavaElement
showResolvedInfo - TODO

validateExistence

protected IStatus validateExistence(IResource underlyingResource)
Specified by:
validateExistence in class Openable

verifyAttachSource

protected void verifyAttachSource(IPath sourcePath)
                           throws JavaModelException
Possible failures:

Throws:
JavaModelException