Make merge more robust
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 4 May 2022 10:06:26 +0000 (12:06 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 4 May 2022 10:06:26 +0000 (12:06 +0200)
org.argeo.slc.factory/src/org/argeo/slc/factory/A2Factory.java

index b336dc6cff80e8a536a695c1791a7aea922cb8ed..388ab7aba6f8cbbf62b4673141eed8fc24d33785 100644 (file)
@@ -276,8 +276,14 @@ public class A2Factory {
                                                continue entries;
                                        if (entry.getName().startsWith("META-INF/versions/"))
                                                continue entries;
+                                       if (entry.getName().startsWith("META-INF/maven/"))
+                                               continue entries;
                                        if (entry.getName().equals("module-info.class"))
                                                continue entries;
+                                       if (entry.getName().equals("META-INF/NOTICE"))
+                                               continue entries;
+                                       if (entry.getName().equals("META-INF/LICENSE"))
+                                               continue entries;
                                        Path target = targetBundleDir.resolve(entry.getName());
                                        Files.createDirectories(target.getParent());
                                        if (!Files.exists(target)) {
@@ -290,6 +296,9 @@ public class A2Factory {
                                                                if (logger.isLoggable(DEBUG))
                                                                        logger.log(DEBUG, "Appended " + entry.getName());
                                                        }
+                                               } else if (entry.getName().startsWith("org/apache/batik/")) {
+                                                       logger.log(Level.WARNING, "Skip " + entry.getName());
+                                                       continue entries;
                                                } else {
                                                        throw new IllegalStateException("File " + target + " already exists");
                                                }
@@ -531,7 +540,8 @@ public class A2Factory {
                DefaultNameVersion nameVersion;
                Path targetBundleDir;
                try (JarInputStream jarIn = new JarInputStream(Files.newInputStream(file), false)) {
-                       Manifest manifest = new Manifest(jarIn.getManifest());
+                       Manifest sourceManifest = jarIn.getManifest();
+                       Manifest manifest = sourceManifest != null ? new Manifest(sourceManifest) : new Manifest();
 
                        // remove problematic entries in MANIFEST
                        manifest.getEntries().clear();
@@ -789,7 +799,7 @@ public class A2Factory {
 //             factory.processCategory(descriptorsBase.resolve("org.argeo.tp"));
 //             factory.processCategory(descriptorsBase.resolve("org.argeo.tp.apache"));
 //             factory.processCategory(descriptorsBase.resolve("org.argeo.tp.formats"));
-               factory.processCategory(descriptorsBase.resolve("org.argeo.tp.gis"));
+               factory.processCategory(descriptorsBase.resolve("org.argeo.tp.formats"));
                System.exit(0);
 
                // Eclipse