X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=runtime%2Forg.argeo.slc.repo%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Frepo%2Fosgi%2FMavenWrapper.java;h=5330e67e2fcb7a4ffaf9e2fd9216a44cdcb8c89d;hb=af67496c90f9e0347b3b6c39805f9ce673695baf;hp=2942e212bf1282a6271cd9ecf60475f69080bccf;hpb=46f89b95f9bfeb224c2a803d91dbd52f5281c0f9;p=gpl%2Fargeo-slc.git diff --git a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/MavenWrapper.java b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/MavenWrapper.java index 2942e212b..5330e67e2 100644 --- a/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/MavenWrapper.java +++ b/runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/MavenWrapper.java @@ -8,12 +8,16 @@ import javax.jcr.Property; import javax.jcr.RepositoryException; import javax.jcr.Session; +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.DefaultNameVersion; +import org.argeo.slc.NameVersion; import org.argeo.slc.SlcException; import org.argeo.slc.repo.OsgiFactory; import org.argeo.slc.repo.RepoUtils; +import org.sonatype.aether.util.artifact.DefaultArtifact; public class MavenWrapper extends BndWrapper implements Runnable { private final static Log log = LogFactory.getLog(MavenWrapper.class); @@ -34,10 +38,15 @@ public class MavenWrapper extends BndWrapper implements Runnable { try { distSession = osgiFactory.openDistSession(); javaSession = osgiFactory.openJavaSession(); - Node sourceArtifact = osgiFactory.getMaven(distSession, - sourceCoords); + Node origArtifact; + try { + origArtifact = osgiFactory.getMaven(distSession, sourceCoords); + } catch (Exception e1) { + origArtifact = osgiFactory.getMaven(distSession, sourceCoords + + ":" + getVersion()); + } - in = sourceArtifact.getNode(Node.JCR_CONTENT) + in = origArtifact.getNode(Node.JCR_CONTENT) .getProperty(Property.JCR_DATA).getBinary().getStream(); out = new ByteArrayOutputStream(); wrapJar(in, out); @@ -46,6 +55,25 @@ public class MavenWrapper extends BndWrapper implements Runnable { getArtifact(), out.toByteArray()); osgiFactory.indexNode(newJarNode); newJarNode.getSession().save(); + + // sources + try { + Node sourcesArtifact = osgiFactory.getMaven(distSession, + sourceCoords + ":sources"); + IOUtils.closeQuietly(in); + in = origArtifact.getNode(Node.JCR_CONTENT) + .getProperty(Property.JCR_DATA).getBinary().getStream(); + byte[] pdeSource = RepoUtils.packageAsPdeSource(in, + new DefaultNameVersion(getName(), getVersion())); + Node pdeSourceNode = RepoUtils.copyBytesAsArtifact(javaSession + .getRootNode(), new DefaultArtifact(getCategory(), + getName() + ".source", "jar", getVersion()), pdeSource); + osgiFactory.indexNode(pdeSourceNode); + pdeSourceNode.getSession().save(); + } catch (SlcException e) { + // no sources available + } + if (log.isDebugEnabled()) log.debug("Wrapped Maven " + sourceCoords + " to " + newJarNode.getPath());