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=3de52c53c9950510d9f87ceae677788277b95f7d;hb=3b44f736ec89e7bad73a333786e1a64dff34b579;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..3de52c53c 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,17 @@ 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.SlcException; import org.argeo.slc.repo.OsgiFactory; import org.argeo.slc.repo.RepoUtils; +import org.sonatype.aether.artifact.Artifact; +import org.sonatype.aether.util.artifact.DefaultArtifact; +import org.sonatype.aether.util.artifact.SubArtifact; public class MavenWrapper extends BndWrapper implements Runnable { private final static Log log = LogFactory.getLog(MavenWrapper.class); @@ -34,10 +39,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,9 +56,38 @@ public class MavenWrapper extends BndWrapper implements Runnable { getArtifact(), out.toByteArray()); osgiFactory.indexNode(newJarNode); newJarNode.getSession().save(); + if (log.isDebugEnabled()) log.debug("Wrapped Maven " + sourceCoords + " to " + newJarNode.getPath()); + + // sources + Artifact sourcesArtifact = new SubArtifact(new DefaultArtifact( + sourceCoords), "sources", null); + Node sourcesArtifactNode; + try { + + sourcesArtifactNode = osgiFactory.getMaven(distSession, + sourcesArtifact.toString()); + } catch (SlcException e) { + // no sources available + return; + } + + IOUtils.closeQuietly(in); + in = sourcesArtifactNode.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(); + + if (log.isDebugEnabled()) + log.debug("Wrapped Maven " + sourcesArtifact + + " to PDE sources " + pdeSourceNode.getPath()); } catch (RepositoryException e) { throw new SlcException("Cannot wrap Maven " + sourceCoords, e); } finally {