X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=org.argeo.slc.factory%2Fsrc%2Forg%2Fargeo%2Fslc%2Ffactory%2FA2Factory.java;h=388ab7aba6f8cbbf62b4673141eed8fc24d33785;hb=ac29827c58dc6f152a2f320d734cc95ff5dd85c8;hp=ede73f186d5ffd1932058c38b86f916796ad3313;hpb=73ee2c6f9bb31752cfa2e5a6a68f64c10ef96384;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.factory/src/org/argeo/slc/factory/A2Factory.java b/org.argeo.slc.factory/src/org/argeo/slc/factory/A2Factory.java index ede73f186..388ab7aba 100644 --- a/org.argeo.slc.factory/src/org/argeo/slc/factory/A2Factory.java +++ b/org.argeo.slc.factory/src/org/argeo/slc/factory/A2Factory.java @@ -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