From 8695884efeb66c4bab1b268bc8a82099eaa61a57 Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 13 Jun 2009 19:45:06 +0000 Subject: [PATCH] Factorize bundles management git-svn-id: https://svn.argeo.org/slc/trunk@2549 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../org/argeo/slc/osgi/BundlesManager.java | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/runtime/org.argeo.slc.support.equinox/src/main/java/org/argeo/slc/osgi/BundlesManager.java b/runtime/org.argeo.slc.support.equinox/src/main/java/org/argeo/slc/osgi/BundlesManager.java index 3ac12603e..445fdf98c 100644 --- a/runtime/org.argeo.slc.support.equinox/src/main/java/org/argeo/slc/osgi/BundlesManager.java +++ b/runtime/org.argeo.slc.support.equinox/src/main/java/org/argeo/slc/osgi/BundlesManager.java @@ -1,5 +1,8 @@ package org.argeo.slc.osgi; +import java.util.ArrayList; +import java.util.List; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.argeo.slc.SlcException; @@ -12,8 +15,10 @@ import org.osgi.framework.InvalidSyntaxException; import org.osgi.framework.ServiceReference; import org.osgi.service.packageadmin.PackageAdmin; import org.springframework.beans.factory.InitializingBean; +import org.springframework.context.ApplicationContext; import org.springframework.osgi.context.BundleContextAware; +/** Wraps access to a {@link BundleContext} */ public class BundlesManager implements BundleContextAware, FrameworkListener, InitializingBean { private final static Log log = LogFactory.getLog(BundlesManager.class); @@ -127,6 +132,24 @@ public class BundlesManager implements BundleContextAware, FrameworkListener, } } + public List listPublishedApplicationContexts( + String filter) { + try { + List lst = new ArrayList(); + ServiceReference[] sfs = bundleContext.getServiceReferences( + ApplicationContext.class.getName(), filter); + for (int i = 0; i < sfs.length; i++) { + ApplicationContext applicationContext = (ApplicationContext) bundleContext + .getService(sfs[i]); + lst.add(applicationContext); + } + return lst; + } catch (InvalidSyntaxException e) { + throw new SlcException( + "Cannot list published application contexts", e); + } + } + public ServiceReference[] getServiceRefSynchronous(String clss, String filter) throws InvalidSyntaxException { if (log.isTraceEnabled()) -- 2.39.2