]> git.argeo.org Git - gpl/argeo-slc.git/blob - runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/osgi/UriWrapper.java
Work on the binaries indexer.
[gpl/argeo-slc.git] / runtime / org.argeo.slc.repo / src / main / java / org / argeo / slc / repo / osgi / UriWrapper.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 UriWrapper extends BndWrapper implements Runnable {
19 private final static Log log = LogFactory.getLog(UriWrapper.class);
20
21 private String uri;
22 private String baseUri;
23 private String versionSeparator = "-";
24 private String extension = "jar";
25
26 private OsgiFactory osgiFactory;
27
28 public void run() {
29 Session distSession = null;
30 Session javaSession = null;
31 InputStream in;
32 ByteArrayOutputStream out;
33 try {
34 distSession = osgiFactory.openDistSession();
35 javaSession = osgiFactory.openJavaSession();
36 if (uri == null) {
37 uri = baseUri + '/' + getName() + versionSeparator
38 + getVersion() + "." + extension;
39 }
40 Node sourceArtifact = osgiFactory.getDist(distSession, uri);
41
42 // TODO factorize with Maven
43 in = sourceArtifact.getNode(Node.JCR_CONTENT)
44 .getProperty(Property.JCR_DATA).getBinary().getStream();
45 out = new ByteArrayOutputStream();
46 wrapJar(in, out);
47 Node newJarNode = RepoUtils
48 .copyBytesAsArtifact(javaSession.getRootNode(),
49 getArtifact(), out.toByteArray());
50 osgiFactory.indexNode(newJarNode);
51 newJarNode.getSession().save();
52 if (log.isDebugEnabled())
53 log.debug("Wrapped " + uri + " to " + newJarNode.getPath());
54 } catch (RepositoryException e) {
55 throw new SlcException("Cannot wrap Maven " + uri, e);
56 } finally {
57 JcrUtils.logoutQuietly(distSession);
58 JcrUtils.logoutQuietly(javaSession);
59 }
60 }
61
62 public void setUri(String sourceCoords) {
63 this.uri = sourceCoords;
64 }
65
66 public void setOsgiFactory(OsgiFactory osgiFactory) {
67 this.osgiFactory = osgiFactory;
68 }
69
70 public void setBaseUri(String baseUri) {
71 this.baseUri = baseUri;
72 }
73
74 public void setVersionSeparator(String versionSeparator) {
75 this.versionSeparator = versionSeparator;
76 }
77 }