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
FieldsModifier and TypeFieldDescriptionprotected static final ArrayListprotected final IClasspathAttribute[]Reflects the extra attributes of the classpath entry declaring this root.protected final org.eclipse.core.runtime.IPathThe 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, resourceFields 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_STRINGSFields 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_PARAMETERFields 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
ConstructorsConstructorDescriptionJarPackageFragmentRoot(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 intprotected booleancomputeChildren(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.JarPackageFragmentRootInfoReturns a new element info for this element.protected intdetermineKind(org.eclipse.core.resources.IResource underlyingResource) A Jar is always K_BINARY.booleanReturns 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.intgetKind()Returns this package fragment root's kind encoded as an integer.Convenience lookup, though currently only JarPackageFragmentRoot is searched for a manifest.Returns theIModuleDescriptionthat 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.IResourceReturns the smallest underlying resource that contains this element, ornullif this element is not contained in a resource.protected voidinitRawPackageInfo(HashtableOfArrayToObject rawPackageInfo, String entryName, boolean isDirectory, String compliance) org.eclipse.core.runtime.IPathbooleanReturns whether this package fragment root's underlying resource is a binary archive (a JAR or zip file).booleanReturns whether this package fragment root is external to the workbench (that is, a local file), and has no underlying resource.booleanJars and jar entries are all read onlyorg.eclipse.core.resources.IResourceresource(PackageFragmentRoot root) protected booleanresourceExists(org.eclipse.core.resources.IResource underlyingResource) Returns whether the corresponding resource or associated file existsprotected voidtoStringAncestors(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, verifyAttachSourceMethods 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, saveMethods 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, validateAndCacheMethods inherited from class org.eclipse.core.runtime.PlatformObject
getAdapterMethods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.core.runtime.IAdaptable
getAdapterMethods inherited from interface org.aspectj.org.eclipse.jdt.core.IJavaElement
exists, getAncestor, getAttachedJavadoc, getCorrespondingResource, getHandleIdentifier, getJavaModel, getJavaProject, getOpenable, getParent, getPrimaryElement, getResource, getSchedulingRule, isStructureKnownMethods inherited from interface org.aspectj.org.eclipse.jdt.core.IOpenable
close, findRecommendedLineSeparator, getBuffer, hasUnsavedChanges, isConsistent, isOpen, makeConsistent, open, saveMethods 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 inJavaElement.hashCode()andequals(Object)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:
computeChildrenin 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:
createElementInfoin classPackageFragmentRoot
-
determineKind
protected int determineKind(org.eclipse.core.resources.IResource underlyingResource) A Jar is always K_BINARY.- Overrides:
determineKindin 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:
equalsin classPackageFragmentRoot- See Also:
-
calculateHashCode
protected int calculateHashCode()- Overrides:
calculateHashCodein classPackageFragmentRoot
-
getElementName
Description copied from interface:IJavaElementReturns the name of this element. This is a handle-only method.- Specified by:
getElementNamein interfaceIJavaElement- Overrides:
getElementNamein 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:IPackageFragmentRootReturns 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.classfiles, but not both. If the underlying folder or archive contains other kinds of files, they are ignored. In particular,.classfiles are ignored under a source package fragment root, and source files are ignored under a binary package fragment root.- Specified by:
getKindin interfaceIPackageFragmentRoot- Overrides:
getKindin 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:
getNonJavaResourcesin interfaceIPackageFragmentRoot- Overrides:
getNonJavaResourcesin classPackageFragmentRoot- Returns:
- an array of non-Java resources (
IFiles,IFolders, orIStorages 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:
getPackageFragmentin classPackageFragmentRoot
-
getPackageFragment
- Overrides:
getPackageFragmentin classPackageFragmentRoot
-
getClassFilePath
Description copied from class:PackageFragmentRootReturns 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:
getClassFilePathin classPackageFragmentRoot- Returns:
- the relative path for the class file within the archive
-
getModuleDescription
Description copied from interface:IPackageFragmentRootReturns theIModuleDescriptionthat this package fragment root contains. Returnsnullif 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:
getModuleDescriptionin interfaceIPackageFragmentRoot- Overrides:
getModuleDescriptionin classPackageFragmentRoot- Returns:
- the
IModuleDescriptionthis root contains.
-
internalPath
public org.eclipse.core.runtime.IPath internalPath()- Overrides:
internalPathin classPackageFragmentRoot
-
resource
- Overrides:
resourcein classPackageFragmentRoot
-
getUnderlyingResource
Description copied from interface:IJavaElementReturns the smallest underlying resource that contains this element, ornullif this element is not contained in a resource.- Specified by:
getUnderlyingResourcein interfaceIJavaElement- Overrides:
getUnderlyingResourcein classPackageFragmentRoot- Returns:
- the underlying resource, or
nullif 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:IPackageFragmentRootReturns 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:
isArchivein interfaceIPackageFragmentRoot- Overrides:
isArchivein 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:IPackageFragmentRootReturns 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:
isExternalin interfaceIPackageFragmentRoot- Overrides:
isExternalin 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:
isReadOnlyin interfaceIJavaElement- Overrides:
isReadOnlyin classJavaElement- Returns:
trueif 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:
resourceExistsin classOpenable
-
toStringAncestors
Description copied from class:JavaElementDebugging purposes- Overrides:
toStringAncestorsin classJavaElement
-
getIndexPath
-
getManifest
Description copied from class:PackageFragmentRootConvenience lookup, though currently only JarPackageFragmentRoot is searched for a manifest.- Overrides:
getManifestin classPackageFragmentRoot
-