org.eclipse.jdt.internal.core
Class PackageFragmentRoot

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.PackageFragmentRoot
All Implemented Interfaces:
org.eclipse.core.runtime.IAdaptable, IBufferChangedListener, IJavaElement, IOpenable, IPackageFragmentRoot, IParent
Direct Known Subclasses:
ExternalPackageFragmentRoot, JarPackageFragmentRoot

public class PackageFragmentRoot
extends Openable
implements IPackageFragmentRoot

See Also:
IPackageFragmentRoot

Field Summary
static java.lang.String NO_SOURCE_ATTACHMENT
           
 
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.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.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
 
Method Summary
 void attachSource(org.eclipse.core.runtime.IPath sourcePath, org.eclipse.core.runtime.IPath rootPath, org.eclipse.core.runtime.IProgressMonitor monitor)
          Attaches the source archive identified by the given absolute path to this binary package fragment root.
 void copy(org.eclipse.core.runtime.IPath destination, int updateResourceFlags, int updateModelFlags, IClasspathEntry sibling, org.eclipse.core.runtime.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.
 IPackageFragment createPackageFragment(java.lang.String pkgName, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
          Creates and returns a package fragment in this root with the given dot-separated package name.
 void delete(int updateResourceFlags, int updateModelFlags, org.eclipse.core.runtime.IProgressMonitor monitor)
          Deletes the resource of this package fragment root as specified by IResource.delete(int, IProgressMonitor) but excluding nested source folders.
 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)
           
 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)
           
 org.eclipse.core.runtime.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.
 org.eclipse.core.runtime.IPath getSourceAttachmentPath()
          Returns the absolute path to the source archive attached to this package fragment root's binary archive.
 org.eclipse.core.runtime.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.
 org.eclipse.core.runtime.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(org.eclipse.core.runtime.IPath destination, int updateResourceFlags, int updateModelFlags, IClasspathEntry sibling, org.eclipse.core.runtime.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.
 
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, 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, 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
 
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

NO_SOURCE_ATTACHMENT

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

attachSource

public void attachSource(org.eclipse.core.runtime.IPath sourcePath,
                         org.eclipse.core.runtime.IPath rootPath,
                         org.eclipse.core.runtime.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

delete

public void delete(int updateResourceFlags,
                   int updateModelFlags,
                   org.eclipse.core.runtime.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:
IResource.delete(boolean, IProgressMonitor)

copy

public void copy(org.eclipse.core.runtime.IPath destination,
                 int updateResourceFlags,
                 int updateModelFlags,
                 IClasspathEntry sibling,
                 org.eclipse.core.runtime.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:
IResource.copy(IPath, boolean, IProgressMonitor)

createPackageFragment

public IPackageFragment createPackageFragment(java.lang.String pkgName,
                                              boolean force,
                                              org.eclipse.core.runtime.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

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

getHandleFromMemento

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

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)

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

internalPath

public org.eclipse.core.runtime.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.

resource

public IResource resource()
Overrides:
resource in class Openable

resource

public IResource resource(PackageFragmentRoot root)

getSourceAttachmentPath

public org.eclipse.core.runtime.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 org.eclipse.core.runtime.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

move

public void move(org.eclipse.core.runtime.IPath destination,
                 int updateResourceFlags,
                 int updateModelFlags,
                 IClasspathEntry sibling,
                 org.eclipse.core.runtime.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:
IResource.move(IPath, boolean, IProgressMonitor)