@Override public InputStream getData(final String name) throws IOException { try (ZipFile zip = getRoot()) { final ZipEntry entry = zip.getEntry(name.replace('.', '/') + ".class"); if (entry == null) { return null; } return StreamUtil.copyStream(zip.getInputStream(entry)); } }
@Override public URL getResource(final String name) throws MalformedURLException { final ZipFile zip = getRoot(); try { final ZipEntry entry = zip.getEntry(name); if (entry != null) { return new URL("jar:file:" + zip.getName() + "!/" + entry.getName()); } else { return null; } } finally { closeQuietly(zip); } }
@Override public Collection<String> classNames() { final List<String> names = new ArrayList<>(); final ZipFile root = getRoot(); try { final Enumeration<? extends ZipEntry> entries = root.entries(); while (entries.hasMoreElements()) { final ZipEntry entry = entries.nextElement(); if (!entry.isDirectory() && entry.getName().endsWith(".class")) { names.add(stringToClassName(entry.getName())); } } return names; } finally { closeQuietly(root); } }
@Override public InputStream getData(final String name) throws IOException { try (ZipFile zip = getRoot()) { final ZipEntry entry = zip.getEntry(name.replace('.', '/') + ".class"); if (entry == null) { return null; } return StreamUtil.copyStream(zip.getInputStream(entry)); } }
@Override public URL getResource(final String name) throws MalformedURLException { final ZipFile zip = getRoot(); try { final ZipEntry entry = zip.getEntry(name); if (entry != null) { return new URL("jar:file:" + zip.getName() + "!/" + entry.getName()); } else { return null; } } finally { closeQuietly(zip); } }
@Override public Collection<String> classNames() { final List<String> names = new ArrayList<>(); final ZipFile root = getRoot(); try { final Enumeration<? extends ZipEntry> entries = root.entries(); while (entries.hasMoreElements()) { final ZipEntry entry = entries.nextElement(); if (!entry.isDirectory() && entry.getName().endsWith(".class")) { names.add(stringToClassName(entry.getName())); } } return names; } finally { closeQuietly(root); } }