]> git.argeo.org Git - gpl/argeo-slc.git/blob - cms/org.argeo.slc.cms/src/org/argeo/slc/cms/deploy/osgi/CmsOsgiDeployment.java
Introduce CMS deployment
[gpl/argeo-slc.git] / cms / org.argeo.slc.cms / src / org / argeo / slc / cms / deploy / osgi / CmsOsgiDeployment.java
1 package org.argeo.slc.cms.deploy.osgi;
2
3 import java.io.IOException;
4 import java.nio.file.Files;
5 import java.nio.file.Path;
6 import java.nio.file.Paths;
7 import java.util.Map;
8 import java.util.StringJoiner;
9 import java.util.TreeMap;
10
11 import org.argeo.init.a2.A2Source;
12 import org.argeo.init.a2.FsA2Source;
13 import org.argeo.init.osgi.OsgiBoot;
14 import org.argeo.init.osgi.OsgiRuntimeContext;
15 import org.argeo.slc.WellKnownConstants;
16 import org.argeo.slc.build.Distribution;
17 import org.argeo.slc.cms.deploy.CmsDeployedSystem;
18 import org.argeo.slc.cms.deploy.CmsTargetData;
19 import org.argeo.slc.cms.deploy.SimpleCmsTargetData;
20 import org.argeo.slc.cms.distribution.A2Distribution;
21 import org.argeo.slc.deploy.DeployedSystem;
22 import org.argeo.slc.deploy.Deployment;
23 import org.argeo.slc.deploy.DeploymentData;
24 import org.argeo.slc.deploy.TargetData;
25
26 public class CmsOsgiDeployment implements Deployment {
27
28 private A2Distribution distribution;
29 private CmsTargetData targetData;
30
31 private CmsDeployedSystem deployedSystem;
32
33 @Override
34 public void run() {
35 try {
36 Map<String, String> config = new TreeMap<>();
37
38 // sources
39 StringJoiner sourcesProperty = new StringJoiner(",");
40 for (A2Source a2Source : distribution.getA2Sources()) {
41 sourcesProperty.add(a2Source.getUri().toString());
42 }
43 config.put(OsgiBoot.PROP_ARGEO_OSGI_SOURCES, sourcesProperty.toString());
44
45 // target
46 config.put(WellKnownConstants.OSGI_INSTANCE_AREA, targetData.getInstanceData().toUri().toString());
47 if (targetData.getHttpPort() != null) {
48 config.put(WellKnownConstants.OSGI_HTTP_PORT, targetData.getHttpPort().toString());
49 }
50
51 Path configurationArea = Files.createTempDirectory("slc-cms-test");
52 config.put(WellKnownConstants.OSGI_CONFIGURATION_AREA, configurationArea.toString());
53
54 // initialise
55 OsgiRuntimeContext runtimeContext = new OsgiRuntimeContext(config);
56 runtimeContext.run();
57
58 deployedSystem = new CmsOsgiDeployedSystem(runtimeContext.getFramework().getBundleContext(), distribution,
59 targetData, null);
60
61 runtimeContext.waitForStop(0);
62 } catch (IOException | InterruptedException e) {
63 throw new IllegalStateException("Cannot run OSGi deployment", e);
64 }
65
66 }
67
68 @Override
69 public DeployedSystem getDeployedSystem() {
70 return deployedSystem;
71 }
72
73 @Override
74 public void setTargetData(TargetData targetData) {
75 this.targetData = (CmsTargetData) targetData;
76 }
77
78 @Override
79 public void setDeploymentData(DeploymentData deploymentData) {
80 // TODO Auto-generated method stub
81
82 }
83
84 @Override
85 public void setDistribution(Distribution distribution) {
86 this.distribution = (A2Distribution) distribution;
87 }
88
89 public static void main(String[] args) throws IOException {
90 Path userHome = Paths.get(System.getProperty("user.home"));
91
92 // distribution
93 Path a2Base = userHome.resolve("dev/git/unstable/output/a2");
94 A2Distribution distribution = new A2Distribution();
95 distribution.getA2Sources().add(new FsA2Source(a2Base));
96
97 // target data
98 Path instanceData = userHome.resolve("dev/git/unstable/argeo-slc/sdk/exec/cms-deployment/data");
99 Files.createDirectories(instanceData);
100 Integer httpPort = 7070;
101 SimpleCmsTargetData targetData = new SimpleCmsTargetData(instanceData, httpPort);
102
103 CmsOsgiDeployment deployment = new CmsOsgiDeployment();
104 deployment.setDistribution(distribution);
105 deployment.setTargetData(targetData);
106 deployment.run();
107 }
108
109 }