X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=runtime%2Forg.argeo.slc.repo%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Frepo%2Fosgi%2FArchiveWrapper.java;h=0adfe883f6d95ee7036dfa138c7d6da73d3061a9;hb=c23b50e8d6286e38e9adfecfc828869a838c5a6f;hp=8d1cee58d4859750b4cd51fb408d7d6b2cd189ba;hpb=1f0e95374536f1e521eb7b29a6704c1a9d79b94c;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArchiveWrapper.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArchiveWrapper.java index 8d1cee58d..0adfe883f 100644 --- a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArchiveWrapper.java +++ b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/ArchiveWrapper.java @@ -2,9 +2,9 @@ package org.argeo.slc.repo.osgi; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; -import java.io.InputStream; import java.util.ArrayList; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; @@ -21,9 +21,11 @@ import org.apache.commons.io.IOUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.jcr.JcrUtils; +import org.argeo.slc.ModuleSet; import org.argeo.slc.NameVersion; import org.argeo.slc.SlcException; import org.argeo.slc.aether.ArtifactIdComparator; +import org.argeo.slc.build.Distribution; import org.argeo.slc.repo.OsgiFactory; import org.argeo.slc.repo.RepoUtils; import org.sonatype.aether.artifact.Artifact; @@ -36,15 +38,14 @@ import org.springframework.util.PathMatcher; * the jars, or import them directly if they are already OSGi bundles and don't * need further modification. */ -public class ArchiveWrapper implements Runnable { +public class ArchiveWrapper implements Runnable, ModuleSet, Distribution { private final static Log log = LogFactory.getLog(ArchiveWrapper.class); private OsgiFactory osgiFactory; private String version; - + private String uri; - private List fallbackUris = new ArrayList(); - + // jars to wrap as OSGi bundles private Map wrappers = new HashMap(); @@ -67,6 +68,14 @@ public class ArchiveWrapper implements Runnable { } + public String getDistributionId() { + return uri; + } + + public Iterator nameVersions() { + return wrappers.values().iterator(); + } + public void run() { if (mavenGroupIndexes && (version == null)) throw new SlcException( @@ -100,6 +109,24 @@ public class ArchiveWrapper implements Runnable { sourceJarBytes, wrapper); addArtifactToIndex(binaries, wrapper.getGroupId(), artifact); } else { + for (String wrapperKey : wrappers.keySet()) + if (pathMatcher.match(wrapperKey, name)) { + // first matched is taken + BndWrapper wrapper = (BndWrapper) wrappers + .get(wrapperKey); + // we must copy since the stream is closed by BND + byte[] sourceJarBytes = IOUtils.toByteArray(zin); + Artifact artifact = wrapZipEntry(javaSession, + zentry, sourceJarBytes, wrapper); + addArtifactToIndex(binaries, wrapper.getGroupId(), + artifact); + continue entries; + } else { + if (log.isTraceEnabled()) + log.trace(name + " not matched by " + + wrapperKey); + } + for (String exclude : excludes) if (pathMatcher.match(exclude, name)) continue entries;