static private File getJarFile(IAdaptable adaptable) { JarPackageFragmentRoot jpfr = (JarPackageFragmentRoot) adaptable; File file = (File)jpfr.getPath().makeAbsolute().toFile(); if (!((File)file).exists()) { File projectFile = new File(jpfr.getJavaProject().getProject().getLocation().toOSString()); file = new File(projectFile.getParent() + file.toString()); } return file; }
/** * @see IJavaElement */ public IResource getUnderlyingResource() throws JavaModelException { if (isExternal()) { if (!exists()) throw newNotPresentException(); return null; } else { return super.getUnderlyingResource(); } } public int hashCode() {
ZipFile jar = null; try { IJavaProject project = getJavaProject(); String sourceLevel = project.getOption(JavaCore.COMPILER_SOURCE, true); String compliance = project.getOption(JavaCore.COMPILER_COMPLIANCE, true); jar = getJar(); initRawPackageInfo(rawPackageInfo, member.getName(), member.isDirectory(), sourceLevel, compliance); String[] pkgName = (String[]) rawPackageInfo.keyTable[i]; if (pkgName == null) continue; children[index++] = getPackageFragment(pkgName); Util.log(IStatus.ERROR, "Invalid ZIP archive: " + toStringWithAncestors()); //$NON-NLS-1$ children = NO_ELEMENTS; } else if (e instanceof JavaModelException) {
JarPackageFragmentRoot root = (JarPackageFragmentRoot)element; IPath jarPath = root.getPath(); switch (delta.getKind()) { case IResourceDelta.ADDED: indexManager.indexLibrary(jarPath, root.getJavaProject().getProject(), root.getIndexPath()); break; case IResourceDelta.CHANGED: indexManager.indexLibrary(jarPath, root.getJavaProject().getProject(), root.getIndexPath()); break; case IResourceDelta.REMOVED:
/** * Returns the underlying ZipFile for this Jar package fragment root. * * @exception CoreException if an error occurs accessing the jar */ public ZipFile getJar() throws CoreException { return JavaModelManager.getJavaModelManager().getZipFile(getPath()); } /**
public IPackageFragmentRoot getPackageFragmentRoot0(IPath externalLibraryPath) { IFolder linkedFolder = JavaModelManager.getExternalManager().getFolder(externalLibraryPath); if (linkedFolder != null) return new ExternalPackageFragmentRoot(linkedFolder, externalLibraryPath, this); return new JarPackageFragmentRoot(externalLibraryPath, this); }
protected byte[] getClassFileContent(JarPackageFragmentRoot root, String className) throws CoreException, IOException { byte[] contents = null; String rootPath = root.getPath().toOSString(); if (org.eclipse.jdt.internal.compiler.util.Util.isJrt(rootPath)) { try { contents = org.eclipse.jdt.internal.compiler.util.JRTUtil.getClassfileContent( new File(rootPath), className, root.getElementName()); } catch (ClassFormatException e) { e.printStackTrace(); } } else { ZipFile zip = root.getJar(); try { ZipEntry ze = zip.getEntry(className); if (ze != null) { contents = org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip); } } finally { JavaModelManager.getJavaModelManager().closeZipFile(zip); } } return contents; }
private IBinaryType getJarBinaryTypeInfo(PackageFragment pkg, boolean fullyInitialize) throws CoreException, IOException, ClassFormatException { JarPackageFragmentRoot root = (JarPackageFragmentRoot) pkg.getParent(); ZipFile zip = null; try { zip = root.getJar(); String entryName = Util.concatWith(pkg.names, getElementName(), '/'); ZipEntry ze = zip.getEntry(entryName); if (ze != null) { byte contents[] = org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip); String fileName = root.getHandleIdentifier() + IDependent.JAR_FILE_ENTRY_SEPARATOR + entryName; return new ClassFileReader(contents, fileName.toCharArray(), fullyInitialize); } } finally { JavaModelManager.getJavaModelManager().closeZipFile(zip); } return null; } public IBuffer getBuffer() throws JavaModelException {
JarPackageFragmentRoot jarRoot = (JarPackageFragmentRoot) element; IPath workspacePath = jarRoot.getPath(); IPath location = JavaIndex.getLocationForElement(jarRoot); try (ZipFile zipFile = new ZipFile(JavaModelManager.getLocalFile(jarRoot.getPath()))) { fileName.length() - SuffixConstants.SUFFIX_STRING_class.length()); char[] fieldDescriptor = JavaNames.binaryNameToFieldDescriptor(binaryName.toCharArray()); String indexPath = jarRoot.getHandleIdentifier() + IDependent.JAR_FILE_ENTRY_SEPARATOR + binaryName; BinaryTypeDescriptor descriptor = new BinaryTypeDescriptor(location.toString().toCharArray(), Package.log("The zip file " + jarRoot.getPath() + " was corrupt", e); //$NON-NLS-1$//$NON-NLS-2$
protected void toStringAncestors(StringBuffer buffer) { if (isExternal()) // don't show project as it is irrelevant for external jar files. // also see https://bugs.eclipse.org/bugs/show_bug.cgi?id=146615 return; super.toStringAncestors(buffer); }
protected ZipFile getZipFile() throws CoreException { if (this.parent instanceof IPackageFragment) { JarPackageFragmentRoot root = (JarPackageFragmentRoot) ((IPackageFragment) this.parent).getParent(); return root.getJar(); } else if (this.parent instanceof JarPackageFragmentRoot) { return ((JarPackageFragmentRoot) this.parent).getJar(); } else return ((JarEntryDirectory) this.parent).getZipFile(); }
ZipFile annotationZip = null; try { zip = root.getJar(); String entryName = Util.concatWith(pkg.names, getElementName(), '/'); ZipEntry ze = zip.getEntry(entryName); if (ze != null) { byte contents[] = org.eclipse.jdt.internal.compiler.util.Util.getZipEntryByteContent(ze, zip); String fileName = root.getHandleIdentifier() + IDependent.JAR_FILE_ENTRY_SEPARATOR + entryName; ClassFileReader reader = new ClassFileReader(contents, fileName.toCharArray(), fullyInitialize); if (root.getKind() == IPackageFragmentRoot.K_BINARY) { JavaProject javaProject = (JavaProject) getAncestor(IJavaElement.JAVA_PROJECT); IClasspathEntry entry = javaProject.getClasspathEntryFor(getPath());
protected IJavaElement[] createChildren(final HashtableOfArrayToObject rawPackageInfo) { IJavaElement[] children; // loop through all of referenced packages, creating package fragments if necessary // and cache the entry names in the rawPackageInfo table children = new IJavaElement[rawPackageInfo.size()]; int index = 0; for (int i = 0, length = rawPackageInfo.keyTable.length; i < length; i++) { String[] pkgName = (String[]) rawPackageInfo.keyTable[i]; if (pkgName == null) continue; children[index++] = getPackageFragment(pkgName); } return children; } /**
@Override public String getClassFilePath(String classname) { if (this.multiVersion) { JarPackageFragmentRootInfo elementInfo; try { elementInfo = (JarPackageFragmentRootInfo) getElementInfo(); String versionPath = elementInfo.overriddenClasses.get(classname); return versionPath == null ? classname : versionPath + '/' + classname; } catch (JavaModelException e) { // move on } } return classname; } @Override
@Override protected void initRawPackageInfo(HashtableOfArrayToObject rawPackageInfo, String entryName, boolean isDirectory, String compliance) { char[] name = entryName.toCharArray(); if (CharOperation.prefixEquals(ClasspathJMod.CLASSES_FOLDER, name)) { name = CharOperation.subarray(name, ClasspathJMod.CLASSES_FOLDER.length, name.length); } super.initRawPackageInfo(rawPackageInfo, new String(name), isDirectory, compliance); } }
ZipFile jar = null; try { jar = getJar(); initRawPackageInfo(rawPackageInfo, member.getName(), member.isDirectory()); String[] pkgName = (String[]) rawPackageInfo.keyTable[i]; if (pkgName == null) continue; children[index++] = getPackageFragment(pkgName); Util.log(IStatus.ERROR, "Invalid ZIP archive: " + toStringWithAncestors()); //$NON-NLS-1$ children = NO_ELEMENTS; } else if (e instanceof JavaModelException) {
JarPackageFragmentRoot root = (JarPackageFragmentRoot)element; IPath jarPath = root.getPath(); switch (delta.getKind()) { case IResourceDelta.ADDED: indexManager.indexLibrary(jarPath, root.getJavaProject().getProject(), root.getIndexPath()); break; case IResourceDelta.CHANGED: indexManager.indexLibrary(jarPath, root.getJavaProject().getProject(), root.getIndexPath()); break; case IResourceDelta.REMOVED:
/** * Returns the underlying ZipFile for this Jar package fragment root. * * @exception CoreException if an error occurs accessing the jar */ public ZipFile getJar() throws CoreException { return JavaModelManager.getJavaModelManager().getZipFile(getPath()); } /**
public IPackageFragmentRoot getPackageFragmentRoot0(IPath externalLibraryPath) { IFolder linkedFolder = JavaModelManager.getExternalManager().getFolder(externalLibraryPath); if (linkedFolder != null) return new ExternalPackageFragmentRoot(linkedFolder, externalLibraryPath, this); return new JarPackageFragmentRoot(externalLibraryPath, this); }