X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=src%2Forg%2Fargeo%2Fbuild%2FRepackage.java;h=1debe690812e24f7aac1ca63e42ead4794ade8a2;hb=e927d33bc0cca8935f7682588f9954d91f94136a;hp=ed362f68cdd821ff76d348b65a8aa59c2729e5ef;hpb=97dce58752a8693fe4bd40e9aad2b5ec8f8a8972;p=cc0%2Fargeo-build.git diff --git a/src/org/argeo/build/Repackage.java b/src/org/argeo/build/Repackage.java index ed362f6..1debe69 100644 --- a/src/org/argeo/build/Repackage.java +++ b/src/org/argeo/build/Repackage.java @@ -609,7 +609,7 @@ public class Repackage { if (includeMatcher.matches(file)) { for (PathMatcher excludeMatcher : excludeMatchers) { if (excludeMatcher.matches(file)) { - logger.log(Level.WARNING, "Skipping excluded " + file); + logger.log(Level.TRACE, "Skipping excluded " + file); return FileVisitResult.CONTINUE; } } @@ -696,6 +696,21 @@ public class Repackage { Manifest sourceManifest = jarIn.getManifest(); Manifest manifest = sourceManifest != null ? new Manifest(sourceManifest) : new Manifest(); + // singleton + boolean isSingleton = false; + String rawSourceSymbolicName = manifest.getMainAttributes() + .getValue(ManifestConstants.BUNDLE_SYMBOLICNAME.toString()); + if (rawSourceSymbolicName != null) { + + // make sure there is no directive + String[] arr = rawSourceSymbolicName.split(";"); + for (int i = 1; i < arr.length; i++) { + if (arr[i].trim().equals("singleton:=true")) + isSingleton = true; + logger.log(DEBUG, file.getFileName() + " is a singleton"); + } + } + // remove problematic entries in MANIFEST manifest.getEntries().clear(); @@ -786,6 +801,12 @@ public class Repackage { // copy MANIFEST Path manifestPath = targetBundleDir.resolve("META-INF/MANIFEST.MF"); Files.createDirectories(manifestPath.getParent()); + + if (isSingleton && entries.containsKey(BUNDLE_SYMBOLICNAME.toString())) { + entries.put(BUNDLE_SYMBOLICNAME.toString(), + entries.get(BUNDLE_SYMBOLICNAME.toString()) + ";singleton:=true"); + } + for (String key : entries.keySet()) { String value = entries.get(key); Object previousValue = manifest.getMainAttributes().putValue(key, value); @@ -922,7 +943,7 @@ public class Repackage { manifest = new Manifest(in); } try (JarOutputStream jarOut = new JarOutputStream(Files.newOutputStream(jarPath), manifest)) { - jarOut.setLevel(Deflater.NO_COMPRESSION); + jarOut.setLevel(Deflater.DEFAULT_COMPRESSION); Files.walkFileTree(bundleDir, new SimpleFileVisitor() { @Override