1 package org
.argeo
.slc
.cms
.deploy
.osgi
;
3 import java
.io
.IOException
;
4 import java
.nio
.file
.Files
;
5 import java
.nio
.file
.Path
;
6 import java
.nio
.file
.Paths
;
8 import java
.util
.StringJoiner
;
9 import java
.util
.TreeMap
;
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
;
26 public class CmsOsgiDeployment
implements Deployment
{
28 private A2Distribution distribution
;
29 private CmsTargetData targetData
;
31 private CmsDeployedSystem deployedSystem
;
36 Map
<String
, String
> config
= new TreeMap
<>();
39 StringJoiner sourcesProperty
= new StringJoiner(",");
40 for (A2Source a2Source
: distribution
.getA2Sources()) {
41 sourcesProperty
.add(a2Source
.getUri().toString());
43 config
.put(OsgiBoot
.PROP_ARGEO_OSGI_SOURCES
, sourcesProperty
.toString());
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());
51 Path configurationArea
= Files
.createTempDirectory("slc-cms-test");
52 config
.put(WellKnownConstants
.OSGI_CONFIGURATION_AREA
, configurationArea
.toString());
55 OsgiRuntimeContext runtimeContext
= new OsgiRuntimeContext(config
);
58 deployedSystem
= new CmsOsgiDeployedSystem(runtimeContext
.getFramework().getBundleContext(), distribution
,
61 runtimeContext
.waitForStop(0);
62 } catch (IOException
| InterruptedException e
) {
63 throw new IllegalStateException("Cannot run OSGi deployment", e
);
69 public DeployedSystem
getDeployedSystem() {
70 return deployedSystem
;
74 public void setTargetData(TargetData targetData
) {
75 this.targetData
= (CmsTargetData
) targetData
;
79 public void setDeploymentData(DeploymentData deploymentData
) {
80 // TODO Auto-generated method stub
85 public void setDistribution(Distribution distribution
) {
86 this.distribution
= (A2Distribution
) distribution
;
89 public static void main(String
[] args
) throws IOException
{
90 Path userHome
= Paths
.get(System
.getProperty("user.home"));
93 Path a2Base
= userHome
.resolve("dev/git/unstable/output/a2");
94 A2Distribution distribution
= new A2Distribution();
95 distribution
.getA2Sources().add(new FsA2Source(a2Base
));
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
);
103 CmsOsgiDeployment deployment
= new CmsOsgiDeployment();
104 deployment
.setDistribution(distribution
);
105 deployment
.setTargetData(targetData
);