From: Mathieu Baudier Date: Tue, 27 Jan 2015 18:05:06 +0000 (+0000) Subject: Workbench and CMS now compatible X-Git-Tag: argeo-commons-2.1.30~429 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=84591aefd3116474b79a7734b3ce5373ebdb0c29;p=lgpl%2Fargeo-commons.git Workbench and CMS now compatible git-svn-id: https://svn.argeo.org/commons/trunk@7713 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/demo/argeo_node_cms.properties b/demo/argeo_node_cms.properties index a090b89ba..d7a9ead01 100644 --- a/demo/argeo_node_cms.properties +++ b/demo/argeo_node_cms.properties @@ -1,19 +1,23 @@ -argeo.osgi.start.2.node=\ +argeo.osgi.start.3.node=\ org.eclipse.equinox.http.servlet,\ org.eclipse.equinox.http.jetty,\ org.eclipse.rap.rwt.osgi -argeo.osgi.start.3.node=\ +argeo.osgi.start.4.node=\ org.argeo.cms,\ -argeo.osgi.start.4.node=\ +argeo.osgi.start.5.node=\ org.eclipse.gemini.blueprint.extender -#argeo.osgi.start.5.cms=\ -#org.argeo.cms.demo,\ +argeo.osgi.start.5.workbench=\ +org.eclipse.equinox.http.registry,\ + +argeo.osgi.start.5.cms=\ +org.argeo.cms.core,\ org.osgi.service.http.port=7070 org.eclipse.equinox.http.jetty.log.stderr.threshold=info log4j.configuration=file:../../log4j.properties -osgi.console.enable.builtin=true \ No newline at end of file +osgi.console.enable.builtin=true +org.eclipse.rap.workbenchAutostart=false \ No newline at end of file diff --git a/demo/argeo_node_rap.properties b/demo/argeo_node_rap.properties index 084c92c71..3410259d2 100644 --- a/demo/argeo_node_rap.properties +++ b/demo/argeo_node_rap.properties @@ -5,17 +5,19 @@ org.eclipse.rap.rwt.osgi argeo.osgi.start.4.node=\ org.argeo.cms,\ -org.eclipse.equinox.http.registry,\ argeo.osgi.start.5.node=\ org.eclipse.gemini.blueprint.extender +argeo.osgi.start.5.workbench=\ +org.eclipse.equinox.http.registry,\ + org.osgi.service.http.port=7070 org.eclipse.equinox.http.jetty.log.stderr.threshold=info -org.eclipse.equinox.http.jetty.context.path=/ui argeo.i18n.availableLocales=en,fr,de,ru,ar eclipse.registry.MultiLanguage=true log4j.configuration=file:../../log4j.properties -osgi.console.enable.builtin=true \ No newline at end of file +osgi.console.enable.builtin=true +org.eclipse.rap.workbenchAutostart=false \ No newline at end of file diff --git a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java index c38a4b29a..ef2403b44 100644 --- a/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java +++ b/org.argeo.cms/src/org/argeo/cms/internal/kernel/Kernel.java @@ -1,5 +1,7 @@ package org.argeo.cms.internal.kernel; +import java.util.Hashtable; + import javax.jcr.RepositoryFactory; import org.apache.commons.logging.Log; @@ -7,7 +9,11 @@ import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; import org.argeo.jackrabbit.OsgiJackrabbitRepositoryFactory; import org.argeo.security.core.InternalAuthentication; +import org.eclipse.rap.rwt.application.ApplicationConfiguration; +import org.eclipse.rap.rwt.osgi.ApplicationLauncher; +import org.eclipse.rap.ui.internal.servlet.WorkbenchApplicationConfiguration; import org.osgi.framework.BundleContext; +import org.osgi.framework.ServiceRegistration; import org.springframework.security.core.context.SecurityContextHolder; /** @@ -21,6 +27,7 @@ import org.springframework.security.core.context.SecurityContextHolder; *
  • OS access
  • * */ +@SuppressWarnings("restriction") final class Kernel { private final static Log log = LogFactory.getLog(Kernel.class); @@ -31,6 +38,8 @@ final class Kernel { private NodeSecurity nodeSecurity; private NodeHttp nodeHttp; + private ServiceRegistration workbenchReg; + Kernel(BundleContext bundleContext) { this.bundleContext = bundleContext; } @@ -46,13 +55,15 @@ final class Kernel { repositoryFactory = new OsgiJackrabbitRepositoryFactory(); nodeSecurity = new NodeSecurity(bundleContext, node); nodeHttp = new NodeHttp(bundleContext, node, nodeSecurity); + WorkbenchApplicationConfiguration wac = new WorkbenchApplicationConfiguration(); - // Publish services to OSGi register + // Publish services to OSGi nodeSecurity.publish(); node.publish(); bundleContext.registerService(RepositoryFactory.class, repositoryFactory, null); nodeHttp.publish(); + registerWorkbench(wac); } catch (Exception e) { log.error("Cannot initialize Argeo CMS", e); throw new ArgeoException("Cannot initialize", e); @@ -66,6 +77,9 @@ final class Kernel { void destroy() { long begin = System.currentTimeMillis(); + + // OSGi + workbenchReg.unregister(); nodeHttp = null; nodeSecurity.destroy(); @@ -76,6 +90,14 @@ final class Kernel { + (duration % 1000) + "s ##"); } + private ServiceRegistration registerWorkbench( + WorkbenchApplicationConfiguration wac) { + Hashtable props = new Hashtable(); + props.put(ApplicationLauncher.PROPERTY_CONTEXT_NAME, "ui"); + return bundleContext.registerService(ApplicationConfiguration.class, + wac, props); + } + private void directorsCut() { final long ms = 128l + (long) (Math.random() * 128d); log.info("Spend " + ms + "ms"