org.eclipse.jdt.internal.core
Class PackageFragment

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.PackageFragment
All Implemented Interfaces:
org.eclipse.core.runtime.IAdaptable, IBufferChangedListener, IJavaElement, IOpenable, IPackageFragment, IParent, ISourceManipulation, SuffixConstants

public class PackageFragment
extends Openable
implements IPackageFragment, SuffixConstants

See Also:
IPackageFragment

Field Summary
 java.lang.String[] names
           
 
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.IPackageFragment
DEFAULT_PACKAGE_NAME
 
Fields inherited from interface org.eclipse.jdt.core.IJavaElement
ANNOTATION, CLASS_FILE, COMPILATION_UNIT, FIELD, IMPORT_CONTAINER, IMPORT_DECLARATION, INITIALIZER, JAVA_MODEL, JAVA_PROJECT, LOCAL_VARIABLE, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE, TYPE_PARAMETER
 
Fields inherited from interface org.eclipse.jdt.internal.compiler.util.SuffixConstants
EXTENSION_class, EXTENSION_CLASS, EXTENSION_java, EXTENSION_JAVA, SUFFIX_class, SUFFIX_CLASS, SUFFIX_java, SUFFIX_JAVA, SUFFIX_STRING_class, SUFFIX_STRING_CLASS, SUFFIX_STRING_java, SUFFIX_STRING_JAVA
 
Method Summary
 boolean containsJavaResources()
          Returns true if this fragment contains at least one java resource.
 void copy(IJavaElement container, IJavaElement sibling, java.lang.String rename, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
          Copies this element to the given container.
 ICompilationUnit createCompilationUnit(java.lang.String cuName, java.lang.String contents, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
          Creates and returns a compilation unit in this package fragment with the specified name and contents.
 void delete(boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
          Deletes this element, forcing if specified and necessary.
 boolean equals(java.lang.Object o)
          Returns true if this handle represents the same Java element as the given handle.
 boolean exists()
          Returns whether this Java element exists in the model.
 java.lang.String getAttachedJavadoc(org.eclipse.core.runtime.IProgressMonitor monitor)
          Returns the Javadoc as an html source if this element has an attached javadoc, null otherwise.
 IClassFile getClassFile(java.lang.String classFileName)
          Returns the class file with the specified name in this package (for example, "Object.class").
 IClassFile[] getClassFiles()
          Returns a the collection of class files in this - a folder package fragment which has a root that has its kind set to IPackageFragmentRoot.K_Source does not recognize class files.
 ICompilationUnit getCompilationUnit(java.lang.String cuName)
          Returns the compilation unit with the specified name in this package (for example, "Object.java").
 ICompilationUnit[] getCompilationUnits()
          Returns all of the compilation units in this package fragment.
 ICompilationUnit[] getCompilationUnits(WorkingCopyOwner owner)
          Returns all of the compilation units in this package fragment that are in working copy mode and that have the given owner.
 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's root kind encoded as an integer.
 java.lang.Object[] getNonJavaResources()
          Returns an array of non-java resources contained in the receiver.
 org.eclipse.core.runtime.IPath getPath()
          Returns the path to the innermost resource enclosing this element.
 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.
 boolean hasSubpackages()
          Returns whether this package fragment's name is a prefix of other package fragments in this package fragment's root.
 boolean isDefaultPackage()
          Returns whether this package fragment is a default package.
 void move(IJavaElement container, IJavaElement sibling, java.lang.String rename, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
          Moves this element to the given container.
 void rename(java.lang.String newName, boolean force, org.eclipse.core.runtime.IProgressMonitor monitor)
          Renames this element to the given name.
 IResource resource(PackageFragmentRoot root)
           
 
Methods inherited from class org.eclipse.jdt.internal.core.Openable
bufferChanged, canBeRemovedFromCache, canBufferBeRemovedFromCache, findRecommendedLineSeparator, getBuffer, getBufferFactory, getCorrespondingResource, getOpenable, getPackageFragmentRoot, getResource, hasUnsavedChanges, isConsistent, isOpen, isStructureKnown, makeConsistent, open, resource, save
 
Methods inherited from class org.eclipse.jdt.internal.core.JavaElement
close, findNode, getAncestor, getChildren, getChildrenOfType, getClassFile, getCompilationUnit, getElementInfo, getElementInfo, getHandleFromMemento, getHandleIdentifier, getHandleMemento, getJavaModel, getJavaProject, getOpenableParent, getParent, getPrimaryElement, getPrimaryElement, getSchedulingRule, getSourceMapper, 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
getAncestor, 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

names

public java.lang.String[] names
Method Detail

containsJavaResources

public boolean containsJavaResources()
                              throws JavaModelException
Returns true if this fragment contains at least one java resource. Returns false otherwise.

Specified by:
containsJavaResources in interface IPackageFragment
Returns:
true if this fragment contains at least one Java resource, false otherwise
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.

copy

public void copy(IJavaElement container,
                 IJavaElement sibling,
                 java.lang.String rename,
                 boolean force,
                 org.eclipse.core.runtime.IProgressMonitor monitor)
          throws JavaModelException
Description copied from interface: ISourceManipulation
Copies this element to the given container.

Specified by:
copy in interface ISourceManipulation
Parameters:
container - the container
sibling - the sibling element before which the copy should be inserted, or null if the copy should be inserted as the last child of the container
rename - the new name for the element, or null if the copy retains the name of this element
force - true if any existing child in the 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 this element could not be copied. Reasons include:
  • This Java element, container element, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while updating an underlying resource
  • The container is of an incompatible type (INVALID_DESTINATION)
  • The sibling is not a child of the given container (INVALID_SIBLING)
  • The new name is invalid (INVALID_NAME)
  • A child in the container already exists with the same name (NAME_COLLISION) and replace has been specified as false
  • The container or this element is read-only (READ_ONLY)
See Also:
ISourceManipulation

createCompilationUnit

public ICompilationUnit createCompilationUnit(java.lang.String cuName,
                                              java.lang.String contents,
                                              boolean force,
                                              org.eclipse.core.runtime.IProgressMonitor monitor)
                                       throws JavaModelException
Description copied from interface: IPackageFragment
Creates and returns a compilation unit in this package fragment with the specified name and contents. No verification is performed on the contents.

It is possible that a compilation unit with the same name already exists in this package fragment. The value of the force parameter effects the resolution of such a conflict:

Specified by:
createCompilationUnit in interface IPackageFragment
Parameters:
cuName - the given name
contents - the given contents
force - specify how to handle conflict is the same name already exists
monitor - the given progress monitor
Returns:
a compilation unit in this package fragment with the specified name and contents
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
  • The name is not a valid compilation unit name (INVALID_NAME)
  • The contents are null (INVALID_CONTENTS)
See Also:
IPackageFragment

delete

public void delete(boolean force,
                   org.eclipse.core.runtime.IProgressMonitor monitor)
            throws JavaModelException
Description copied from interface: ISourceManipulation
Deletes this element, forcing if specified and necessary.

Specified by:
delete in interface ISourceManipulation
Parameters:
force - a flag controlling whether underlying resources that are not in sync with the local file system will be tolerated (same as the force flag in IResource operations).
monitor - a progress monitor
Throws:
JavaModelException - if this element could not be deleted. Reasons include:
  • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while updating an underlying resource (CORE_EXCEPTION)
  • This element is read-only (READ_ONLY)
See Also:
ISourceManipulation

equals

public boolean equals(java.lang.Object o)
Description copied from class: JavaElement
Returns 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:
equals in class JavaElement
See Also:
Object.equals(java.lang.Object)

exists

public boolean exists()
Description copied from interface: IJavaElement
Returns whether this Java element exists in the model.

Java elements are handle objects that may or may not be backed by an actual element. Java elements that are backed by an actual element are said to "exist", and this method returns true. For Java elements that are not working copies, it is always the case that if the element exists, then its parent also exists (provided it has one) and includes the element as one of its children. It is therefore possible to navigated to any existing Java element from the root of the Java model along a chain of existing Java elements. On the other hand, working copies are said to exist until they are destroyed (with IWorkingCopy.destroy). Unlike regular Java elements, a working copy never shows up among the children of its parent element (which may or may not exist).

Specified by:
exists in interface IJavaElement
Overrides:
exists in class Openable
Returns:
true if this element exists in the Java model, and false if this element does not exist
See Also:
IJavaElement

getClassFile

public IClassFile getClassFile(java.lang.String classFileName)
Description copied from interface: IPackageFragment
Returns the class file with the specified name in this package (for example, "Object.class"). The ".class" suffix is required. This is a handle-only method. The class file may or may not be present.

Specified by:
getClassFile in interface IPackageFragment
Parameters:
classFileName - the given name
Returns:
the class file with the specified name in this package
Throws:
java.lang.IllegalArgumentException - if the name does not end with ".class"
See Also:
IPackageFragment.getClassFile(String)

getClassFiles

public IClassFile[] getClassFiles()
                           throws JavaModelException
Returns a the collection of class files in this - a folder package fragment which has a root that has its kind set to IPackageFragmentRoot.K_Source does not recognize class files.

Specified by:
getClassFiles in interface IPackageFragment
Returns:
all of the class files in this package fragment
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
See Also:
IPackageFragment.getClassFiles()

getCompilationUnit

public ICompilationUnit getCompilationUnit(java.lang.String cuName)
Description copied from interface: IPackageFragment
Returns the compilation unit with the specified name in this package (for example, "Object.java"). The name has to be a valid compilation unit name. This is a handle-only method. The compilation unit may or may not be present.

Specified by:
getCompilationUnit in interface IPackageFragment
Parameters:
cuName - the given name
Returns:
the compilation unit with the specified name in this package
Throws:
java.lang.IllegalArgumentException - if the name does not end with ".java"
See Also:
IPackageFragment.getCompilationUnit(String)

getCompilationUnits

public ICompilationUnit[] getCompilationUnits()
                                       throws JavaModelException
Description copied from interface: IPackageFragment
Returns all of the compilation units in this package fragment.

Note: it is possible that a package fragment contains only class files (in other words, its kind is K_BINARY), in which case this method returns an empty collection.

Specified by:
getCompilationUnits in interface IPackageFragment
Returns:
all of the compilation units in this package fragment
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
See Also:
IPackageFragment.getCompilationUnits()

getCompilationUnits

public ICompilationUnit[] getCompilationUnits(WorkingCopyOwner owner)
Description copied from interface: IPackageFragment
Returns all of the compilation units in this package fragment that are in working copy mode and that have the given owner.

Only existing working copies are returned. So a compilation unit handle that has no corresponding resource on disk will be included if and only if is in working copy mode.

Note: it is possible that a package fragment contains only class files (in other words, its kind is K_BINARY), in which case this method returns an empty collection.

Specified by:
getCompilationUnits in interface IPackageFragment
Parameters:
owner - the owner of the returned compilation units
Returns:
all of the compilation units in this package fragment
See Also:
IPackageFragment.getCompilationUnits(WorkingCopyOwner)

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
Specified by:
getElementName in interface IPackageFragment
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: IPackageFragment
Returns this package fragment's root kind encoded as an integer. A package fragment can contain source files (i.e. files with one of the Java-like extensions), or .class files. This is a convenience method.

Specified by:
getKind in interface IPackageFragment
Returns:
this package fragment's root 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:
IPackageFragment.getKind()

getNonJavaResources

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

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

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.getPath()

resource

public IResource resource(PackageFragmentRoot root)
See Also:
JavaElement.resource()

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.getUnderlyingResource()

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

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

hasSubpackages

public boolean hasSubpackages()
                       throws JavaModelException
Description copied from interface: IPackageFragment
Returns whether this package fragment's name is a prefix of other package fragments in this package fragment's root.

Specified by:
hasSubpackages in interface IPackageFragment
Returns:
true if this package fragment's name is a prefix of other package fragments in this package fragment's root, false otherwise
Throws:
JavaModelException - if this element does not exist or if an exception occurs while accessing its corresponding resource.
See Also:
IPackageFragment.hasSubpackages()

isDefaultPackage

public boolean isDefaultPackage()
Description copied from interface: IPackageFragment
Returns whether this package fragment is a default package. This is a handle-only method.

Specified by:
isDefaultPackage in interface IPackageFragment
Returns:
true if this package fragment is a default package
See Also:
IPackageFragment.isDefaultPackage()

move

public void move(IJavaElement container,
                 IJavaElement sibling,
                 java.lang.String rename,
                 boolean force,
                 org.eclipse.core.runtime.IProgressMonitor monitor)
          throws JavaModelException
Description copied from interface: ISourceManipulation
Moves this element to the given container.

Specified by:
move in interface ISourceManipulation
Parameters:
container - the container
sibling - the sibling element before which the element should be inserted, or null if the element should be inserted as the last child of the container
rename - the new name for the element, or null if the element retains its name
force - true if any existing child in the 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 this element could not be moved. Reasons include:
  • This Java element, container element, or sibling does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while updating an underlying resource
  • The container is of an incompatible type (INVALID_DESTINATION)
  • The sibling is not a child of the given container (INVALID_SIBLING)
  • The new name is invalid (INVALID_NAME)
  • A child in the container already exists with the same name (NAME_COLLISION) and replace has been specified as false
  • The container or this element is read-only (READ_ONLY)
See Also:
ISourceManipulation.move(IJavaElement, IJavaElement, String, boolean, IProgressMonitor)

rename

public void rename(java.lang.String newName,
                   boolean force,
                   org.eclipse.core.runtime.IProgressMonitor monitor)
            throws JavaModelException
Description copied from interface: ISourceManipulation
Renames this element to the given name.

Specified by:
rename in interface ISourceManipulation
Parameters:
newName - the new name for the element
force - true if any existing element 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 this element could not be renamed. Reasons include:
  • This Java element does not exist (ELEMENT_DOES_NOT_EXIST)
  • A CoreException occurred while updating an underlying resource
  • The new name is invalid (INVALID_NAME)
  • A child in the container already exists with the same name (NAME_COLLISION) and replace has been specified as false
  • This element is read-only (READ_ONLY)
See Also:
ISourceManipulation.rename(String, boolean, IProgressMonitor)

getAttachedJavadoc

public java.lang.String getAttachedJavadoc(org.eclipse.core.runtime.IProgressMonitor monitor)
                                    throws JavaModelException
Description copied from interface: IJavaElement

Returns the Javadoc as an html source if this element has an attached javadoc, null otherwise.

This should be used only for binary elements. Source elements will always return null.

The encoding used to read the javadoc is the one defined by the content type of the file. If none is defined, then the project's encoding of this java element is used. If the project's encoding cannot be retrieved, then the platform encoding is used.

In case of the javadoc doesn't exist for this element, null is returned.

The html is extracted from the attached javadoc and provided as is. No transformation or validation is done.

Specified by:
getAttachedJavadoc in interface IJavaElement
Overrides:
getAttachedJavadoc in class JavaElement
Parameters:
monitor - the given progress monitor
Returns:
the extracted javadoc from the attached javadoc, null if none
Throws:
JavaModelException - if:
  • this element does not exist
  • retrieving the attached javadoc fails (timed-out, invalid URL, ...)
  • the format of the javadoc doesn't match expected standards (different anchors,...)
See Also:
IClasspathAttribute.JAVADOC_LOCATION_ATTRIBUTE_NAME