1 package org
.argeo
.cms
.web
.osgi
;
3 import java
.util
.Collections
;
4 import java
.util
.HashMap
;
5 import java
.util
.Hashtable
;
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
;
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";
19 private EventAdmin eventAdmin
;
21 private Map
<String
, CmsWebApp
> registrations
= Collections
.synchronizedMap(new HashMap
<>());
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
);
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
);
50 public void setEventAdmin(EventAdmin eventAdmin
) {
51 this.eventAdmin
= eventAdmin
;