]> 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 e1310c1c441e6c7a0eca0de2e0309efddf0773c4..388ab7aba6f8cbbf62b4673141eed8fc24d33785 100644 (file)
@@ -263,7 +263,8 @@ public class A2Factory {
                        if ("".equals(m2Coordinates))
                                continue artifacts;
                        DefaultArtifact artifact = new DefaultArtifact(m2Coordinates.trim());
-                       artifact.setVersion(m2Version);
+                       if (artifact.getVersion() == null)
+                               artifact.setVersion(m2Version);
                        URL url = MavenConventionsUtils.mavenRepoUrl(repoStr, artifact);
                        Path downloaded = download(url, originBase, artifact.toM2Coordinates() + ".jar");
                        JarEntry entry;
@@ -273,6 +274,16 @@ public class A2Factory {
                                                continue entries;
                                        if (entry.getName().endsWith(".RSA") || entry.getName().endsWith(".SF"))
                                                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)) {
@@ -280,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");
                                                }
@@ -429,7 +446,7 @@ public class A2Factory {
 
                        // TODO make it less dangerous?
                        if (Files.exists(targetSourceDir)) {
-                               deleteDirectory(targetSourceDir);
+//                             deleteDirectory(targetSourceDir);
                        } else {
                                Files.createDirectories(targetSourceDir);
                        }
@@ -441,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...");
+                               }
                        }
                }
 
@@ -517,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();
@@ -775,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