use of org.eclipse.jdt.internal.core.JarPackageFragmentRoot in project che by eclipse.
the class ToolFactory method createDefaultClassFileReader.
/**
* Create a classfile reader onto a classfile Java element.
* Create a default classfile reader, able to expose the internal representation of a given classfile
* according to the decoding flag used to initialize the reader.
* Answer null if the file named fileName doesn't represent a valid .class file.
* <p/>
* The decoding flags are described in IClassFileReader.
*
* @param classfile
* the classfile element to introspect
* @param decodingFlag
* the flag used to decode the class file reader.
* @return a default classfile reader
* @see org.eclipse.jdt.core.util.IClassFileReader
*/
public static IClassFileReader createDefaultClassFileReader(IClassFile classfile, int decodingFlag) {
IPackageFragmentRoot root = (IPackageFragmentRoot) classfile.getAncestor(IJavaElement.PACKAGE_FRAGMENT_ROOT);
if (root != null) {
try {
if (root instanceof JarPackageFragmentRoot) {
String archiveName = null;
ZipFile jar = null;
try {
jar = ((JarPackageFragmentRoot) root).getJar();
archiveName = jar.getName();
} finally {
JavaModelManager.getJavaModelManager().closeZipFile(jar);
}
PackageFragment packageFragment = (PackageFragment) classfile.getParent();
String classFileName = classfile.getElementName();
String entryName = org.eclipse.jdt.internal.core.util.Util.concatWith(packageFragment.names, classFileName, '/');
return createDefaultClassFileReader(archiveName, entryName, decodingFlag);
} else {
InputStream in = null;
try {
in = ((IFile) ((JavaElement) classfile).resource()).getContents();
return createDefaultClassFileReader(in, decodingFlag);
} finally {
if (in != null)
try {
in.close();
} catch (IOException e) {
// ignore
}
}
}
} catch (CoreException e) {
// unable to read
}
}
return null;
}
use of org.eclipse.jdt.internal.core.JarPackageFragmentRoot in project xtext-eclipse by eclipse.
the class JavaClassPathResourceForIEditorInputFactoryTest method testBug463258_03b.
@Test(expected = CoreException.class)
public void testBug463258_03b() throws Throwable {
IJavaProject project = createJavaProject("foo");
IFile file = project.getProject().getFile("foo.jar");
file.create(jarInputStream(new TextFile("foo/bar.testlanguage", "//empty")), true, monitor());
IPackageFragmentRoot root = new JarPackageFragmentRoot(file, (JavaProject) project) {
};
IPackageFragment foo = root.getPackageFragment("foo");
JarEntryFile fileInJar = new JarEntryFile("bar.testlanguage");
fileInJar.setParent(foo);
File jarFile = file.getLocation().toFile();
assertTrue("exists", jarFile.exists());
assertTrue("delete", jarFile.delete());
XtextReadonlyEditorInput editorInput = new XtextReadonlyEditorInput(fileInJar);
try {
factory.createResource(editorInput);
} catch (WrappedException e) {
throw e.getCause();
}
}
use of org.eclipse.jdt.internal.core.JarPackageFragmentRoot in project xtext-eclipse by eclipse.
the class Storage2UriMapperJdtImplTest method testBug463258_03c.
@Test
public void testBug463258_03c() throws Exception {
IJavaProject project = createJavaProject("foo");
IFile file = project.getProject().getFile("foo.jar");
file.create(jarInputStream(new TextFile("foo/bar.notindexed", "//empty")), true, monitor());
addJarToClasspath(project, file);
Storage2UriMapperJavaImpl impl = getStorage2UriMapper();
IPackageFragmentRoot root = new JarPackageFragmentRoot(file, (JavaProject) project) {
};
IPackageFragment foo = root.getPackageFragment("foo");
JarEntryFile fileInJar = new JarEntryFile("bar.notindexed");
fileInJar.setParent(foo);
File jarFile = file.getLocation().toFile();
assertTrue("exists", jarFile.exists());
assertTrue("delete", jarFile.delete());
// simulate an automated refresh
file.refreshLocal(IResource.DEPTH_ONE, null);
URI uri = impl.getUri(fileInJar);
assertNull(uri);
}
use of org.eclipse.jdt.internal.core.JarPackageFragmentRoot in project xtext-eclipse by eclipse.
the class Storage2UriMapperJdtImplTest method testBug463258_03b.
@Test
public void testBug463258_03b() throws Exception {
IJavaProject project = createJavaProject("foo");
IFile file = project.getProject().getFile("foo.jar");
file.create(jarInputStream(new TextFile("foo/bar.notindexed", "//empty")), true, monitor());
Storage2UriMapperJavaImpl impl = getStorage2UriMapper();
IPackageFragmentRoot root = new JarPackageFragmentRoot(file, (JavaProject) project) {
};
IPackageFragment foo = root.getPackageFragment("foo");
JarEntryFile fileInJar = new JarEntryFile("bar.notindexed");
fileInJar.setParent(foo);
File jarFile = file.getLocation().toFile();
assertTrue("exists", jarFile.exists());
assertTrue("delete", jarFile.delete());
URI uri = impl.getUri(fileInJar);
assertNull(uri);
}
Aggregations