1 package org
.argeo
.slc
.cms
.deploy
.osgi
;
3 import java
.io
.IOException
;
4 import java
.lang
.System
.Logger
;
5 import java
.lang
.System
.Logger
.Level
;
6 import java
.nio
.file
.Files
;
7 import java
.nio
.file
.Path
;
8 import java
.nio
.file
.Paths
;
9 import java
.util
.HashMap
;
10 import java
.util
.List
;
12 import java
.util
.StringJoiner
;
13 import java
.util
.TreeMap
;
15 import org
.argeo
.cms
.CmsDeployProperty
;
16 import org
.argeo
.init
.a2
.A2Source
;
17 import org
.argeo
.init
.a2
.FsA2Source
;
18 import org
.argeo
.init
.osgi
.OsgiBoot
;
19 import org
.argeo
.init
.osgi
.OsgiRuntimeContext
;
20 import org
.argeo
.slc
.WellKnownConstants
;
21 import org
.argeo
.slc
.build
.Distribution
;
22 import org
.argeo
.slc
.cms
.deploy
.CmsDeployedSystem
;
23 import org
.argeo
.slc
.cms
.deploy
.CmsDeploymentData
;
24 import org
.argeo
.slc
.cms
.deploy
.CmsTargetData
;
25 import org
.argeo
.slc
.cms
.deploy
.SimpleCmsDeploymentData
;
26 import org
.argeo
.slc
.cms
.deploy
.SimpleCmsTargetData
;
27 import org
.argeo
.slc
.cms
.distribution
.A2Distribution
;
28 import org
.argeo
.slc
.deploy
.DeployedSystem
;
29 import org
.argeo
.slc
.deploy
.Deployment
;
30 import org
.argeo
.slc
.deploy
.DeploymentData
;
31 import org
.argeo
.slc
.deploy
.TargetData
;
33 public class CmsOsgiDeployment
implements Deployment
{
34 private final static Logger logger
= System
.getLogger(CmsOsgiDeployment
.class.getName());
36 private A2Distribution distribution
;
37 private CmsTargetData targetData
;
38 private CmsDeploymentData deploymentData
;
40 private CmsDeployedSystem deployedSystem
;
42 private OsgiRuntimeContext runtimeContext
;
47 Map
<String
, String
> config
= new TreeMap
<>();
50 StringJoiner sourcesProperty
= new StringJoiner(",");
51 for (A2Source a2Source
: distribution
.getA2Sources()) {
52 sourcesProperty
.add(a2Source
.getUri().toString());
54 config
.put(OsgiBoot
.PROP_ARGEO_OSGI_SOURCES
, sourcesProperty
.toString());
57 config
.put(WellKnownConstants
.OSGI_INSTANCE_AREA
,
58 targetData
.getInstanceData().toRealPath().toUri().toString());
59 if (targetData
.getHttpPort() != null) {
60 config
.put(CmsDeployProperty
.HTTP_PORT
.getProperty(), targetData
.getHttpPort().toString());
63 Path configurationArea
= Files
.createTempDirectory("slc-cms-test");
64 config
.put(WellKnownConstants
.OSGI_CONFIGURATION_AREA
, configurationArea
.toUri().toString());
67 for (int startLevel
= 0; startLevel
<= 6; startLevel
++) {
68 List
<String
> modules
= deploymentData
.getModulesToActivate(startLevel
);
69 if (modules
.size() != 0) {
70 String startProperty
= String
.join(",", modules
);
71 config
.put(OsgiBoot
.PROP_ARGEO_OSGI_START
+ "." + startLevel
, startProperty
);
75 config
.put("org.eclipse.equinox.http.jetty.autostart", "false");
76 config
.put("org.osgi.framework.bootdelegation",
77 "com.sun.jndi.ldap,com.sun.jndi.ldap.sasl,com.sun.security.jgss,com.sun.jndi.dns,com.sun.nio.file,com.sun.nio.sctp");
78 config
.put("eclipse.ignoreApp", "true");
79 config
.put("osgi.noShutdown", "true");
81 config
.put("osgi.console", "2323");
84 for (String key
: config
.keySet()) {
85 // System.out.println(key + "=" + config.get(key));
86 logger
.log(Level
.INFO
, () -> key
+ "=" + config
.get(key
));
89 runtimeContext
= new OsgiRuntimeContext(config
);
92 deployedSystem
= new CmsOsgiDeployedSystem(runtimeContext
.getFramework().getBundleContext(), distribution
,
93 targetData
, deploymentData
);
95 } catch (Exception e
) {
96 throw new IllegalStateException("Cannot run OSGi deployment", e
);
102 public DeployedSystem
getDeployedSystem() {
103 return deployedSystem
;
107 public void setTargetData(TargetData targetData
) {
108 this.targetData
= (CmsTargetData
) targetData
;
112 public void setDeploymentData(DeploymentData deploymentData
) {
113 this.deploymentData
= (CmsDeploymentData
) deploymentData
;
117 public void setDistribution(Distribution distribution
) {
118 this.distribution
= (A2Distribution
) distribution
;
121 public OsgiRuntimeContext
getRuntimeContext() {
122 return runtimeContext
;
125 public static void main(String
[] args
) {
127 Path userHome
= Paths
.get(System
.getProperty("user.home"));
130 Path a2Base
= userHome
.resolve("dev/git/unstable/output/a2");
131 A2Distribution distribution
= new A2Distribution();
132 Map
<String
, String
> xOr
= new HashMap
<>();
133 xOr
.put("osgi", "equinox");
134 xOr
.put("swt", "rap");
135 distribution
.getA2Sources().add(new FsA2Source(a2Base
, xOr
, true));
138 Path instanceData
= userHome
.resolve("dev/git/unstable/argeo-slc/sdk/exec/cms-deployment/data");
139 Files
.createDirectories(instanceData
);
140 Integer httpPort
= 7070;
141 SimpleCmsTargetData targetData
= new SimpleCmsTargetData(instanceData
, httpPort
);
144 SimpleCmsDeploymentData deploymentData
= new SimpleCmsDeploymentData();
145 deploymentData
.getModulesToActivate(2).add("org.eclipse.equinox.http.servlet");
146 deploymentData
.getModulesToActivate(2).add("org.apache.felix.scr");
147 deploymentData
.getModulesToActivate(2).add("org.eclipse.rap.rwt.osgi");
148 deploymentData
.getModulesToActivate(2).add("org.eclipse.equinox.console");
150 deploymentData
.getModulesToActivate(3).add("org.argeo.cms");
151 deploymentData
.getModulesToActivate(3).add("org.argeo.cms.swt.rap");
152 deploymentData
.getModulesToActivate(3).add("org.argeo.cms.ee");
153 deploymentData
.getModulesToActivate(3).add("org.argeo.cms.lib.sshd");
154 deploymentData
.getModulesToActivate(3).add("org.argeo.cms.lib.equinox");
155 deploymentData
.getModulesToActivate(3).add("org.argeo.cms.lib.jetty");
157 // deploymentData.getModulesToActivate(4).add("org.argeo.cms.servlet");
158 // deploymentData.getModulesToActivate(4).add("org.argeo.cms.ui.rap");
159 deploymentData
.getModulesToActivate(4).add("org.argeo.cms.jcr");
161 deploymentData
.getModulesToActivate(5).add("org.argeo.app.profile.acr.fs");
162 deploymentData
.getModulesToActivate(5).add("org.argeo.app.core");
163 deploymentData
.getModulesToActivate(5).add("org.argeo.app.ui");
164 deploymentData
.getModulesToActivate(5).add("org.argeo.app.profile.acr.fs");
165 deploymentData
.getModulesToActivate(5).add("org.argeo.app.theme.default");
167 CmsOsgiDeployment deployment
= new CmsOsgiDeployment();
168 deployment
.setDistribution(distribution
);
169 deployment
.setTargetData(targetData
);
170 deployment
.setDeploymentData(deploymentData
);
173 boolean multiple
= false;
176 Path instanceData2
= userHome
.resolve("dev/git/unstable/argeo-slc/sdk/exec/cms-deployment2/data");
177 Files
.createDirectories(instanceData2
);
178 Integer httpPort2
= 7071;
179 SimpleCmsTargetData targetData2
= new SimpleCmsTargetData(instanceData2
, httpPort2
);
181 CmsOsgiDeployment deployment2
= new CmsOsgiDeployment();
182 deployment2
.setDistribution(distribution
);
183 deployment2
.setTargetData(targetData2
);
184 deployment2
.setDeploymentData(deploymentData
);
188 deployment
.getRuntimeContext().waitForStop(0);
190 } catch (IOException
| InterruptedException e
) {