Class JarPackageFragmentRoot
java.lang.Object
org.eclipse.core.runtime.PlatformObject
org.aspectj.org.eclipse.jdt.internal.core.JavaElement
org.aspectj.org.eclipse.jdt.internal.core.Openable
org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot
org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRoot
- All Implemented Interfaces:
IBufferChangedListener
,IJavaElement
,IOpenable
,IPackageFragmentRoot
,IParent
,org.eclipse.core.runtime.IAdaptable
- Direct Known Subclasses:
JModPackageFragmentRoot
,JrtPackageFragmentRoot
A package fragment root that corresponds to a .jar or .zip.
NOTE: The only visible entries from a .jar or .zip package fragment root are .class files.
NOTE: A jar package fragment root may or may not have an associated resource.
- See Also:
-
Field Summary
Modifier and TypeFieldDescriptionprotected static final ArrayList
protected final IClasspathAttribute[]
Reflects the extra attributes of the classpath entry declaring this root.protected final org.eclipse.core.runtime.IPath
The path to the jar file (a workspace relative path if the jar is internal, or an OS path if the jar is external)Fields inherited from class org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot
ATTACHMENT_PROPERTY_DELIMITER, NO_SOURCE_ATTACHMENT, resource
Fields inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaElement
JEM_ANNOTATION, JEM_CLASSFILE, JEM_COMPILATIONUNIT, JEM_COUNT, JEM_DELIMITER_ESCAPE, JEM_ESCAPE, JEM_FIELD, JEM_IMPORTDECLARATION, JEM_INITIALIZER, JEM_JAVAPROJECT, JEM_LAMBDA_EXPRESSION, JEM_LAMBDA_METHOD, JEM_LOCALVARIABLE, JEM_METHOD, JEM_MODULAR_CLASSFILE, JEM_MODULE, JEM_PACKAGEDECLARATION, JEM_PACKAGEFRAGMENT, JEM_PACKAGEFRAGMENTROOT, JEM_STRING, JEM_TYPE, JEM_TYPE_PARAMETER, NO_ELEMENTS, NO_INFO, NO_STRINGS
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_MODULE, JAVA_PROJECT, LOCAL_VARIABLE, METHOD, PACKAGE_DECLARATION, PACKAGE_FRAGMENT, PACKAGE_FRAGMENT_ROOT, TYPE, TYPE_PARAMETER
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
-
Constructor Summary
ConstructorDescriptionJarPackageFragmentRoot
(org.eclipse.core.resources.IResource resource, org.eclipse.core.runtime.IPath externalJarPath, JavaProject project, IClasspathAttribute[] attributes) Constructs a package fragment root which is the root of the Java package directory hierarchy based on a JAR file. -
Method Summary
Modifier and TypeMethodDescriptionprotected int
protected boolean
computeChildren
(OpenableElementInfo info, org.eclipse.core.resources.IResource underlyingResource) Compute the package fragment children of this package fragment root.protected IJavaElement[]
createChildren
(HashtableOfArrayToObject rawPackageInfo) protected org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRootInfo
Returns a new element info for this element.protected int
determineKind
(org.eclipse.core.resources.IResource underlyingResource) A Jar is always K_BINARY.boolean
Returns true if this handle represents the same jar as the given handle.getClassFilePath
(String classname) Returns the relative path within an archive for the given class file name.Returns the name of this element.getJar()
Returns the underlying ZipFile for this Jar package fragment root.int
getKind()
Returns this package fragment root's kind encoded as an integer.Convenience lookup, though currently only JarPackageFragmentRoot is searched for a manifest.Returns theIModuleDescription
that this package fragment root contains.Object[]
Returns an array of non-java resources contained in the receiver.getPackageFragment
(String[] pkgName) getPackageFragment
(String[] pkgName, String mod) org.eclipse.core.resources.IResource
Returns the smallest underlying resource that contains this element, ornull
if this element is not contained in a resource.protected void
initRawPackageInfo
(HashtableOfArrayToObject rawPackageInfo, String entryName, boolean isDirectory, String compliance) org.eclipse.core.runtime.IPath
boolean
Returns whether this package fragment root's underlying resource is a binary archive (a JAR or zip file).boolean
Returns whether this package fragment root is external to the workbench (that is, a local file), and has no underlying resource.boolean
Jars and jar entries are all read onlyorg.eclipse.core.resources.IResource
resource
(PackageFragmentRoot root) protected boolean
resourceExists
(org.eclipse.core.resources.IResource underlyingResource) Returns whether the corresponding resource or associated file existsprotected void
toStringAncestors
(StringBuilder buffer) Debugging purposesMethods inherited from class org.aspectj.org.eclipse.jdt.internal.core.PackageFragmentRoot
attachSource, buildStructure, computeFolderChildren, copy, createPackageFragment, delete, fullExclusionPatternChars, fullInclusionPatternChars, getAutomaticModuleDescription, getElementType, getHandleFromMemento, getHandleMemento, getHandleMementoDelimiter, getPackageFragment, getPackageName, getPath, getRawClasspathEntry, getResolvedClasspathEntry, getSourceAttachmentPath, getSourceAttachmentRootPath, getSourceMapper, hasChildren, hasCompilationUnit, ignoreOptionalProblems, isComplianceJava9OrHigher, move, resource, setSourceMapper, toStringInfo, validateExistence, validateOnClasspath, verifyAttachSource
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.Openable
bufferChanged, canBeRemovedFromCache, canBufferBeRemovedFromCache, closeBuffer, closing, codeComplete, codeSelect, exists, findRecommendedLineSeparator, generateInfos, getBuffer, getBufferFactory, getBufferManager, getCorrespondingResource, getOpenable, getPackageFragmentRoot, getResource, hasBuffer, hasUnsavedChanges, ignoreErrorStatus, isConsistent, isOpen, isSourceElement, isStructureKnown, makeConsistent, open, openAncestors, openBuffer, save
Methods inherited from class org.aspectj.org.eclipse.jdt.internal.core.JavaElement
appendEscapedDelimiter, 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, hashCode, isAncestorOf, newDoesNotExistStatus, newJavaModelException, newNotPresentException, openWhenClosed, readableName, resetHashCode, resolved, tabString, toDebugString, toString, toString, toStringChildren, toStringInfo, toStringName, toStringWithAncestors, toStringWithAncestors, unresolved, validateAndCache
Methods inherited from class org.eclipse.core.runtime.PlatformObject
getAdapter
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapter
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IJavaElement
exists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPrimaryElement, getResource, getSchedulingRule, isStructureKnown
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IOpenable
close, findRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, save
Methods inherited from interface org.aspectj.org.eclipse.jdt.core.IParent
getChildren
-
Field Details
-
EMPTY_LIST
-
jarPath
protected final org.eclipse.core.runtime.IPath jarPathThe path to the jar file (a workspace relative path if the jar is internal, or an OS path if the jar is external) -
extraAttributes
Reflects the extra attributes of the classpath entry declaring this root. Caution, this field is used in hashCode() invalid input: '&' equals() to avoid overzealous sharing. Can be null, if lookup via the corresponding classpath entry failed.
-
-
Constructor Details
-
JarPackageFragmentRoot
public JarPackageFragmentRoot(org.eclipse.core.resources.IResource resource, org.eclipse.core.runtime.IPath externalJarPath, JavaProject project, IClasspathAttribute[] attributes) Constructs a package fragment root which is the root of the Java package directory hierarchy based on a JAR file.
-
-
Method Details
-
computeChildren
protected boolean computeChildren(OpenableElementInfo info, org.eclipse.core.resources.IResource underlyingResource) throws JavaModelException Compute the package fragment children of this package fragment root. These are all of the directory zip entries, and any directories implied by the path of class files contained in the jar of this package fragment root.- Overrides:
computeChildren
in classPackageFragmentRoot
- Throws:
JavaModelException
- The resource associated with this package fragment root does not exist
-
createChildren
-
createElementInfo
protected org.aspectj.org.eclipse.jdt.internal.core.JarPackageFragmentRootInfo createElementInfo()Returns a new element info for this element.- Overrides:
createElementInfo
in classPackageFragmentRoot
-
determineKind
protected int determineKind(org.eclipse.core.resources.IResource underlyingResource) A Jar is always K_BINARY.- Overrides:
determineKind
in classPackageFragmentRoot
-
equals
Returns true if this handle represents the same jar as the given handle. Two jars are equal if they share the same zip file.- Overrides:
equals
in classPackageFragmentRoot
- See Also:
-
calculateHashCode
protected int calculateHashCode()- Overrides:
calculateHashCode
in classPackageFragmentRoot
-
getElementName
Description copied from interface:IJavaElement
Returns the name of this element. This is a handle-only method.- Specified by:
getElementName
in interfaceIJavaElement
- Overrides:
getElementName
in classPackageFragmentRoot
- Returns:
- the element name
- See Also:
-
getJar
Returns the underlying ZipFile for this Jar package fragment root.- Throws:
org.eclipse.core.runtime.CoreException
- if an error occurs accessing the jar
-
getKind
public int getKind()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 theJava-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 interfaceIPackageFragmentRoot
- Overrides:
getKind
in classPackageFragmentRoot
- Returns:
- this package fragment root's kind encoded as an integer
- See Also:
-
getNonJavaResources
Returns an array of non-java resources contained in the receiver.- Specified by:
getNonJavaResources
in interfaceIPackageFragmentRoot
- Overrides:
getNonJavaResources
in classPackageFragmentRoot
- Returns:
- an array of non-Java resources (
IFile
s,IFolder
s, orIStorage
s 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:
-
getPackageFragment
- Overrides:
getPackageFragment
in classPackageFragmentRoot
-
getPackageFragment
- Overrides:
getPackageFragment
in classPackageFragmentRoot
-
getClassFilePath
Description copied from class:PackageFragmentRoot
Returns the relative path within an archive for the given class file name. In certain kind of archives, such as a JMOD file, class files are stored in a nested folder, as opposed to directly under the root. It is the responsibility of such package fragment roots to provide the custom behavior.- Overrides:
getClassFilePath
in classPackageFragmentRoot
- Returns:
- the relative path for the class file within the archive
-
getModuleDescription
Description copied from interface:IPackageFragmentRoot
Returns theIModuleDescription
that this package fragment root contains. Returnsnull
if the root doesn't contain any named module or if the project compiler compliance is 1.8 or lower. If present the module descriptor is found as a child of the package fragment representing the default package. Note that only one of the source package fragment roots in a Java Project can legally contain a module descriptor.- Specified by:
getModuleDescription
in interfaceIPackageFragmentRoot
- Overrides:
getModuleDescription
in classPackageFragmentRoot
- Returns:
- the
IModuleDescription
this root contains.
-
internalPath
public org.eclipse.core.runtime.IPath internalPath()- Overrides:
internalPath
in classPackageFragmentRoot
-
resource
- Overrides:
resource
in classPackageFragmentRoot
-
getUnderlyingResource
Description copied from interface:IJavaElement
Returns the smallest underlying resource that contains this element, ornull
if this element is not contained in a resource.- Specified by:
getUnderlyingResource
in interfaceIJavaElement
- Overrides:
getUnderlyingResource
in classPackageFragmentRoot
- 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:
-
initRawPackageInfo
protected void initRawPackageInfo(HashtableOfArrayToObject rawPackageInfo, String entryName, boolean isDirectory, String compliance) -
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 interfaceIPackageFragmentRoot
- Overrides:
isArchive
in classPackageFragmentRoot
- Returns:
- true if this package fragment root's underlying resource is a binary archive, false otherwise
- See Also:
-
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 interfaceIPackageFragmentRoot
- Overrides:
isExternal
in classPackageFragmentRoot
- 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:
-
isReadOnly
public boolean isReadOnly()Jars and jar entries are all read only- Specified by:
isReadOnly
in interfaceIJavaElement
- Overrides:
isReadOnly
in classJavaElement
- Returns:
true
if this element is read-only- See Also:
-
resourceExists
protected boolean resourceExists(org.eclipse.core.resources.IResource underlyingResource) Returns whether the corresponding resource or associated file exists- Overrides:
resourceExists
in classOpenable
-
toStringAncestors
Description copied from class:JavaElement
Debugging purposes- Overrides:
toStringAncestors
in classJavaElement
-
getIndexPath
-
getManifest
Description copied from class:PackageFragmentRoot
Convenience lookup, though currently only JarPackageFragmentRoot is searched for a manifest.- Overrides:
getManifest
in classPackageFragmentRoot
-