]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - org.argeo.slc.factory/src/org/argeo/slc/factory/A2Factory.java
Make merge more robust
[gpl/argeo-slc.git] / org.argeo.slc.factory / src / org / argeo / slc / factory / A2Factory.java
index ede73f186d5ffd1932058c38b86f916796ad3313..388ab7aba6f8cbbf62b4673141eed8fc24d33785 100644 (file)
@@ -276,6 +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)) {
@@ -283,8 +291,14 @@ public class A2Factory {
                                        } else {
                                                if (entry.getName().startsWith("META-INF/services/")) {
                                                        try (OutputStream out = Files.newOutputStream(target, StandardOpenOption.APPEND)) {
+                                                               out.write("\n".getBytes());
                                                                jarIn.transferTo(out);
+                                                               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");
                                                }
@@ -432,7 +446,7 @@ public class A2Factory {
 
                        // TODO make it less dangerous?
                        if (Files.exists(targetSourceDir)) {
-                               deleteDirectory(targetSourceDir);
+//                             deleteDirectory(targetSourceDir);
                        } else {
                                Files.createDirectories(targetSourceDir);
                        }
@@ -444,10 +458,16 @@ public class A2Factory {
                                        continue entries;
                                if (entry.getName().startsWith("META-INF"))// skip META-INF entries
                                        continue entries;
+                               if (entry.getName().startsWith("module-info.java"))// skip META-INF entries
+                                       continue entries;
                                Path target = targetSourceDir.resolve(entry.getName());
                                Files.createDirectories(target.getParent());
-                               Files.copy(jarIn, target);
-                               logger.log(Level.TRACE, () -> "Copied source " + target);
+                               if (!Files.exists(target)) {
+                                       Files.copy(jarIn, target);
+                                       logger.log(Level.TRACE, () -> "Copied source " + target);
+                               } else {
+                                       logger.log(Level.WARNING, () -> target + " already exists, skipping...");
+                               }
                        }
                }
 
@@ -520,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();
@@ -778,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