]> git.argeo.org Git - lgpl/argeo-commons.git/blob - swt/rap/org.argeo.cms.swt.rap/src/org/argeo/cms/web/osgi/CmsWebAppFactory.java
Refactor Jetty HTTP server
[lgpl/argeo-commons.git] / swt / rap / org.argeo.cms.swt.rap / src / org / argeo / cms / web / osgi / CmsWebAppFactory.java
1 package org.argeo.cms.web.osgi;
2
3 import java.util.Collections;
4 import java.util.HashMap;
5 import java.util.Hashtable;
6 import java.util.Map;
7
8 import org.argeo.api.cms.CmsApp;
9 import org.argeo.cms.web.CmsWebApp;
10 import org.osgi.framework.BundleContext;
11 import org.osgi.framework.FrameworkUtil;
12 import org.osgi.service.event.EventAdmin;
13
14 /** Publish a CmsApp as a RAP application. */
15 public class CmsWebAppFactory {
16 private BundleContext bundleContext = FrameworkUtil.getBundle(CmsWebAppFactory.class).getBundleContext();
17 private final static String CONTEXT_NAME = "contextName";
18
19 private EventAdmin eventAdmin;
20
21 private Map<String, CmsWebApp> registrations = Collections.synchronizedMap(new HashMap<>());
22
23 public void addCmsApp(CmsApp cmsApp, Map<String, String> properties) {
24 String contextName = properties.get(CmsApp.CONTEXT_NAME_PROPERTY);
25 if (contextName != null) {
26 CmsWebApp cmsWebApp = new CmsWebApp();
27 cmsWebApp.setEventAdmin(eventAdmin);
28 cmsWebApp.setCmsApp(cmsApp);
29 Hashtable<String, String> serviceProperties = new Hashtable<>();
30 if (!contextName.equals(""))
31 serviceProperties.put(CONTEXT_NAME, contextName);
32 cmsWebApp.init(bundleContext, serviceProperties);
33 registrations.put(contextName, cmsWebApp);
34 }
35 }
36
37 public void removeCmsApp(CmsApp cmsApp, Map<String, String> properties) {
38 String contextName = properties.get(CmsApp.CONTEXT_NAME_PROPERTY);
39 if (contextName != null) {
40 CmsWebApp cmsWebApp = registrations.get(contextName);
41 if (cmsWebApp != null) {
42 cmsWebApp.destroy(bundleContext, new HashMap<>());
43 cmsWebApp.unsetCmsApp(cmsApp, properties);
44 } else {
45 // TODO log warning
46 }
47 }
48 }
49
50 public void setEventAdmin(EventAdmin eventAdmin) {
51 this.eventAdmin = eventAdmin;
52 }
53
54 }