protected void packZip( ZipOutputStream output, BundleEntry bundleEntry, ZipFile zipFile, Filter filter) throws IOException { Enumeration<? extends ZipEntry> entries = zipFile.entries(); while (entries.hasMoreElements()) { ZipEntry srcEntry = entries.nextElement(); String entryName = srcEntry.getName(); if (filter != null && !filter.accept(bundleEntry.getName() + "/" + entryName)) { log( Level.FINE, "exclude {0}/{1}/{2}", new Object[] {bundleEntry.getBundleID(), bundleEntry.getName(), entryName}); continue; } if (entryName.endsWith("/")) { continue; } if (existingEntries.contains(entryName)) { log( Level.WARNING, "duplicate {0}/{1}/{2}", new Object[] {bundleEntry.getBundleID(), bundleEntry.getName(), entryName}); continue; } existingEntries.add(entryName); ZipEntry tgtEntry = new ZipEntry(entryName); tgtEntry.setTime(srcEntry.getTime()); output.putNextEntry(tgtEntry); try { InputStream input = zipFile.getInputStream(srcEntry); try { copyStream(input, output); } finally { input.close(); } } finally { output.closeEntry(); } } }