in plugins/org.apache.karaf.eik.ui/src/main/java/org/apache/karaf/eik/ui/project/KarafProjectBuilder.java [103:156]
private void filterOsgiInterfaceClasses(final File karafJar) throws CoreException {
final IKarafProject karafProject = getKarafProject();
final IFile generatedKarafFile = karafProject.getFile("runtime");
final IPath path = generatedKarafFile.getRawLocation();
JarInputStream sourceJar = null;
JarOutputStream destJar = null;
try {
sourceJar = new JarInputStream(new FileInputStream(karafJar));
final File filteredKarafJar = new File(path.toFile(), "generatedKaraf.jar");
final Manifest mf = sourceJar.getManifest();
if (mf != null) {
destJar = new JarOutputStream(new FileOutputStream(filteredKarafJar), mf);
} else {
destJar = new JarOutputStream(new FileOutputStream(filteredKarafJar));
}
ZipEntry z = sourceJar.getNextEntry();
while (z != null) {
if (!z.getName().startsWith("org/osgi")) {
destJar.putNextEntry(z);
copyJarEntryData(sourceJar, destJar);
} else {
sourceJar.closeEntry();
}
z = sourceJar.getNextEntry();
}
} catch (final FileNotFoundException e) {
throw new CoreException(new Status(IStatus.ERROR, KarafUIPluginActivator.PLUGIN_ID, "Could not filter OSGi Interfaces from JAR", e));
} catch (final IOException e) {
throw new CoreException(new Status(IStatus.ERROR, KarafUIPluginActivator.PLUGIN_ID, "Could not filter OSGi Interfaces from JAR", e));
} finally {
if (sourceJar != null) {
try {
sourceJar.close();
} catch (final IOException e) {
// ignore
}
}
if (destJar != null) {
try {
destJar.close();
} catch (final IOException e) {
// ignore
}
}
}
}