From e949dce6a9ccebdb4abf0fa54c2fe0e7c161825f Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Tue, 24 May 2022 13:43:34 +0200 Subject: [PATCH] XML Graphics can load FOP services --- .../src/org/argeo/slc/factory/A2Factory.java | 26 +++++++++++++++++-- ...bnd => org.apache.xmlgraphics.bnd.retired} | 0 tp/org.argeo.tp.apache/xmlgraphics/merge.bnd | 10 +++++++ ...mlgraphics.image.loader.spi.ImageConverter | 3 +++ ...aphics.image.loader.spi.ImageLoaderFactory | 2 ++ ...mlgraphics.image.loader.spi.ImagePreloader | 2 ++ 6 files changed, 41 insertions(+), 2 deletions(-) rename tp/org.argeo.tp.apache/{org.apache.xmlgraphics.bnd => org.apache.xmlgraphics.bnd.retired} (100%) create mode 100644 tp/org.argeo.tp.apache/xmlgraphics/merge.bnd create mode 100644 tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageConverter create mode 100644 tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory create mode 100644 tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader 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 fab8db542..8c5548ab9 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 @@ -324,6 +324,21 @@ public class A2Factory { downloadAndProcessM2Sources(repoStr, artifact, targetBundleDir); } + // additional service files + Path servicesDir = duDir.resolve("services"); + if (Files.exists(servicesDir)) { + for (Path p : Files.newDirectoryStream(servicesDir)) { + Path target = targetBundleDir.resolve("META-INF/services/").resolve(p.getFileName()); + try (InputStream in = Files.newInputStream(p); + OutputStream out = Files.newOutputStream(target, StandardOpenOption.APPEND);) { + out.write("\n".getBytes()); + in.transferTo(out); + if (logger.isLoggable(DEBUG)) + logger.log(DEBUG, "Appended " + p); + } + } + } + Map entries = new TreeMap<>(); try (Analyzer bndAnalyzer = new Analyzer()) { bndAnalyzer.setProperties(mergeProps); @@ -344,7 +359,7 @@ public class A2Factory { && value.toString().equals("osgi.ee;filter:=\"(&(osgi.ee=JavaSE)(version=1.1))\"")) continue keys;// hack for very old classes entries.put(key.toString(), value.toString()); - logger.log(DEBUG, () -> key + "=" + value); + //logger.log(DEBUG, () -> key + "=" + value); } } catch (Exception e) { @@ -358,6 +373,13 @@ public class A2Factory { String value = entries.get(key); manifest.getMainAttributes().putValue(key, value); } + + // Use Maven version as Bundle-Version + String bundleVersion = manifest.getMainAttributes().getValue(ManifestConstants.BUNDLE_VERSION.toString()); + if (bundleVersion == null || bundleVersion.trim().equals("0")) { + // TODO check why it is sometimes set to "0" + manifest.getMainAttributes().putValue(ManifestConstants.BUNDLE_VERSION.toString(), m2Version); + } try (OutputStream out = Files.newOutputStream(manifestPath)) { manifest.write(out); } @@ -421,7 +443,7 @@ public class A2Factory { && value.toString().equals("osgi.ee;filter:=\"(&(osgi.ee=JavaSE)(version=1.1))\"")) continue keys;// hack for very old classes additionalEntries.put(key.toString(), value.toString()); - logger.log(DEBUG, () -> key + "=" + value); + //logger.log(DEBUG, () -> key + "=" + value); } } diff --git a/tp/org.argeo.tp.apache/org.apache.xmlgraphics.bnd b/tp/org.argeo.tp.apache/org.apache.xmlgraphics.bnd.retired similarity index 100% rename from tp/org.argeo.tp.apache/org.apache.xmlgraphics.bnd rename to tp/org.argeo.tp.apache/org.apache.xmlgraphics.bnd.retired diff --git a/tp/org.argeo.tp.apache/xmlgraphics/merge.bnd b/tp/org.argeo.tp.apache/xmlgraphics/merge.bnd new file mode 100644 index 000000000..ec4b5b594 --- /dev/null +++ b/tp/org.argeo.tp.apache/xmlgraphics/merge.bnd @@ -0,0 +1,10 @@ +Bundle-License: Apache-2.0 +Bundle-SymbolicName: org.apache.xmlgraphics +SLC-Origin-M2: :2.7 +SLC-Origin-M2-Merge: \ +org.apache.xmlgraphics:xmlgraphics-commons +Export-Package: org.apache.xmlgraphics.* +Import-Package: \ +org.apache.fop.image.loader.batik;resolution:="optional", \ +* + diff --git a/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageConverter b/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageConverter new file mode 100644 index 000000000..045f6515f --- /dev/null +++ b/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageConverter @@ -0,0 +1,3 @@ +org.apache.fop.image.loader.batik.ImageConverterSVG2G2D +org.apache.fop.image.loader.batik.ImageConverterG2D2SVG +org.apache.fop.image.loader.batik.ImageConverterWMF2G2D diff --git a/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory b/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory new file mode 100644 index 000000000..9e0bd6048 --- /dev/null +++ b/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory @@ -0,0 +1,2 @@ +org.apache.fop.image.loader.batik.ImageLoaderFactorySVG +org.apache.fop.image.loader.batik.ImageLoaderFactoryWMF diff --git a/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader b/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader new file mode 100644 index 000000000..5644f2259 --- /dev/null +++ b/tp/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader @@ -0,0 +1,2 @@ +org.apache.fop.image.loader.batik.PreloaderWMF +org.apache.fop.image.loader.batik.PreloaderSVG -- 2.30.2