]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/MavenWrapper.java
Clean repo indexer, update modular distribution management, remove binaries concepts.
[gpl/argeo-slc.git] / runtime / org.argeo.slc.repo / src / main / java / org / argeo / slc / repo / osgi / MavenWrapper.java
1 package org.argeo.slc.repo.osgi;
2
3 import java.io.ByteArrayOutputStream;
4 import java.io.InputStream;
5
6 import javax.jcr.Node;
7 import javax.jcr.Property;
8 import javax.jcr.RepositoryException;
9 import javax.jcr.Session;
10
11 import org.apache.commons.logging.Log;
12 import org.apache.commons.logging.LogFactory;
13 import org.argeo.jcr.JcrUtils;
14 import org.argeo.slc.SlcException;
15 import org.argeo.slc.repo.OsgiFactory;
16 import org.argeo.slc.repo.RepoUtils;
17
18 public class MavenWrapper extends BndWrapper implements Runnable {
19 private final static Log log = LogFactory.getLog(MavenWrapper.class);
20
21 private String sourceCoords;
22
23 private OsgiFactory osgiFactory;
24
25 public MavenWrapper() {
26 setFactory(this);
27 }
28
29 public void run() {
30 Session distSession = null;
31 Session javaSession = null;
32 InputStream in;
33 ByteArrayOutputStream out;
34 try {
35 distSession = osgiFactory.openDistSession();
36 javaSession = osgiFactory.openJavaSession();
37 Node sourceArtifact = osgiFactory.getMaven(distSession,
38 sourceCoords);
39
40 in = sourceArtifact.getNode(Node.JCR_CONTENT)
41 .getProperty(Property.JCR_DATA).getBinary().getStream();
42 out = new ByteArrayOutputStream();
43 wrapJar(in, out);
44 Node newJarNode = RepoUtils
45 .copyBytesAsArtifact(javaSession.getRootNode(),
46 getArtifact(), out.toByteArray());
47 osgiFactory.indexNode(newJarNode);
48 newJarNode.getSession().save();
49 if (log.isDebugEnabled())
50 log.debug("Wrapped Maven " + sourceCoords + " to "
51 + newJarNode.getPath());
52 } catch (RepositoryException e) {
53 throw new SlcException("Cannot wrap Maven " + sourceCoords, e);
54 } finally {
55 JcrUtils.logoutQuietly(distSession);
56 JcrUtils.logoutQuietly(javaSession);
57 }
58 }
59
60 public void setSourceCoords(String sourceCoords) {
61 this.sourceCoords = sourceCoords;
62 }
63
64 public void setOsgiFactory(OsgiFactory osgiFactory) {
65 this.osgiFactory = osgiFactory;
66 }
67
68 }