]> git.argeo.org Git - cc0/argeo-build.git/blobdiff - src/org/argeo/build/Repackage.java
Make repackage less verbose
[cc0/argeo-build.git] / src / org / argeo / build / Repackage.java
index d902efb1a5c2656101fe8d4e4a44e6d65822e6fd..1debe690812e24f7aac1ca63e42ead4794ade8a2 100644 (file)
@@ -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);