[jboss-osgi-commits] JBoss-OSGI SVN: r102686 - in projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework: plugins and 1 other directory.

jboss-osgi-commits at lists.jboss.org jboss-osgi-commits at lists.jboss.org
Sun Mar 21 11:45:03 EDT 2010


Author: thomas.diesler at jboss.com
Date: 2010-03-21 11:45:02 -0400 (Sun, 21 Mar 2010)
New Revision: 102686

Modified:
   projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/bundle/OSGiServiceState.java
   projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/bundle/ServiceManagerPluginImpl.java
   projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/plugins/ServiceManagerPlugin.java
Log:
Add getUsingBundles() to ServiceManagerPlugin

Modified: projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/bundle/OSGiServiceState.java
===================================================================
--- projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/bundle/OSGiServiceState.java	2010-03-21 14:29:03 UTC (rev 102685)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/bundle/OSGiServiceState.java	2010-03-21 15:45:02 UTC (rev 102686)
@@ -29,7 +29,6 @@
 import java.util.Collection;
 import java.util.Dictionary;
 import java.util.Enumeration;
-import java.util.HashSet;
 import java.util.Map;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
@@ -48,6 +47,7 @@
 import org.jboss.osgi.framework.metadata.CaseInsensitiveDictionary;
 import org.jboss.osgi.framework.plugins.ControllerContextPlugin;
 import org.jboss.osgi.framework.plugins.FrameworkEventsPlugin;
+import org.jboss.osgi.framework.plugins.ServiceManagerPlugin;
 import org.jboss.osgi.spi.util.BundleClassLoader;
 import org.osgi.framework.Bundle;
 import org.osgi.framework.BundleException;
@@ -282,11 +282,13 @@
          return getTarget();
    }
 
+   @Override
    public Object invoke(String name, Object[] parameters, String[] signature) throws Throwable
    {
       return getBeanInfo().invoke(getTarget(), name, signature, parameters);
    }
 
+   @Override
    public ClassLoader getClassLoader() throws Throwable
    {
       return getClassLoaderInternal();
@@ -301,11 +303,13 @@
       return BundleClassLoader.createClassLoader(getBundle());
    }
 
+   @Override
    public Object get(String name) throws Throwable
    {
       return getBeanInfo().getProperty(getTarget(), name);
    }
 
+   @Override
    public void set(String name, Object value) throws Throwable
    {
       getBeanInfo().setProperty(getTarget(), name, value);
@@ -388,7 +392,7 @@
    }
 
    /**
-    * Unget from cache.
+    * Unget the service from cache.
     *
     * @param bundleState the bundle state
     * @return ungot service
@@ -427,16 +431,12 @@
       return service;
    }
 
-   /**
-    * Get the service registration
-    * 
-    * @return the service registration
-    */
-   public ServiceRegistration getRegistration()
+   ServiceRegistration getRegistration()
    {
       return serviceRegistration;
    }
 
+   @Override
    public ServiceReference getReference()
    {
       checkUnregistered();
@@ -450,6 +450,7 @@
       return serviceReference;
    }
 
+   @Override
    public Bundle getBundle()
    {
       if (isUnregistered())
@@ -467,6 +468,7 @@
       return bundleState;
    }
 
+	@Override
    public Object getProperty(String key)
    {
       if (key == null)
@@ -480,6 +482,7 @@
       return properties.get(key);
    }
 
+   @Override
    public String[] getPropertyKeys()
    {
       ArrayList<String> result = new ArrayList<String>();
@@ -494,6 +497,7 @@
       return result.toArray(new String[result.size()]);
    }
 
+   @Override
    @SuppressWarnings("rawtypes")
    public void setProperties(Dictionary properties)
    {
@@ -512,33 +516,22 @@
    @Override
    public Bundle[] getUsingBundles()
    {
-      Set<Bundle> bundles = getUsingBundleInternal();
+      OSGiBundleManager manager = bundleState.getBundleManager();
+      ServiceManagerPlugin plugin = manager.getPlugin(ServiceManagerPlugin.class);
+      Set<Bundle> bundles = plugin.getUsingBundles(this);
       if (bundles.size() == 0)
          return null;
 
       return bundles.toArray(new Bundle[bundles.size()]);
    }
-
-   private Set<Bundle> getUsingBundleInternal()
-   {
-      OSGiBundleManager manager = bundleState.getBundleManager();
-      ControllerContextPlugin plugin = manager.getPlugin(ControllerContextPlugin.class);
-
-      Set<Object> users = getContextTracker().getUsers(this);
-      Set<Bundle> bundles = new HashSet<Bundle>();
-      for (Object user : users)
-      {
-         AbstractBundleState abs = plugin.getBundleForUser(user);
-         bundles.add(abs.getBundleInternal());
-      }
-      return bundles;
-   }
-
+   
+   @Override
    public boolean isAssignableTo(Bundle bundle, String className)
    {
       return MDRUtils.isAssignableTo(this, bundleState, bundle, className);
    }
 
+   @Override
    public void unregister()
    {
       checkUnregistered();
@@ -556,6 +549,7 @@
       }
    }
 
+   @Override
    public int compareTo(Object reference)
    {
       if (reference == null)

Modified: projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/bundle/ServiceManagerPluginImpl.java
===================================================================
--- projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/bundle/ServiceManagerPluginImpl.java	2010-03-21 14:29:03 UTC (rev 102685)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/bundle/ServiceManagerPluginImpl.java	2010-03-21 15:45:02 UTC (rev 102686)
@@ -55,6 +55,7 @@
 import org.jboss.osgi.framework.plugins.internal.AbstractPlugin;
 import org.jboss.osgi.framework.util.KernelUtils;
 import org.jboss.osgi.framework.util.NoFilter;
+import org.osgi.framework.Bundle;
 import org.osgi.framework.Filter;
 import org.osgi.framework.FrameworkUtil;
 import org.osgi.framework.InvalidSyntaxException;
@@ -118,6 +119,7 @@
          applyMDRUsage(false);
    }
 
+   @Override
    public ServiceReference[] getRegisteredServices(AbstractBundleState bundleState)
    {
       Set<ControllerContext> contexts = getRegisteredContexts(bundleState);
@@ -137,6 +139,7 @@
       return result.toArray(new ServiceReference[result.size()]);
    }
 
+   @Override
    public ServiceReference[] getServicesInUse(AbstractBundleState bundleState)
    {
       Set<ControllerContext> contexts = bundleState.getUsedContexts(bundleState);
@@ -157,6 +160,7 @@
       return references.toArray(new ServiceReference[references.size()]);
    }
 
+   @Override
    public ServiceReference[] getAllServiceReferences(AbstractBundleState bundle, String clazz, String filterStr) throws InvalidSyntaxException
    {
       Filter filter = NoFilter.INSTANCE;
@@ -170,13 +174,25 @@
       return services.toArray(new ServiceReference[services.size()]);
    }
 
-   /**
-    * Get a service
-    * 
-    * @param bundleState the bundle that requests the service
-    * @param reference the service reference
-    * @return the service
-    */
+   @Override
+   public Set<Bundle> getUsingBundles(OSGiServiceState serviceState)
+   {
+      AbstractBundleState bundleState = serviceState.getBundleState();
+      OSGiBundleManager manager = bundleState.getBundleManager();
+      ControllerContextPlugin plugin = manager.getPlugin(ControllerContextPlugin.class);
+
+      ContextTracker contextTracker = serviceState.getContextTracker();
+      Set<Object> users = contextTracker.getUsers(serviceState);
+      Set<Bundle> bundles = new HashSet<Bundle>();
+      for (Object user : users)
+      {
+         AbstractBundleState abs = plugin.getBundleForUser(user);
+         bundles.add(abs.getBundleInternal());
+      }
+      return bundles;
+   }
+   
+   @Override
    public Object getService(AbstractBundleState bundleState, ServiceReference reference)
    {
       if (reference == null)
@@ -192,6 +208,7 @@
       return target;
    }
 
+   @Override
    public ServiceReference getServiceReference(AbstractBundleState bundle, String clazz)
    {
       if (clazz == null)
@@ -204,6 +221,7 @@
       return services.iterator().next();
    }
 
+   @Override
    public ServiceReference[] getServiceReferences(AbstractBundleState bundle, String clazz, String filterStr) throws InvalidSyntaxException
    {
       Filter filter = NoFilter.INSTANCE;
@@ -217,6 +235,7 @@
       return services.toArray(new ServiceReference[services.size()]);
    }
 
+   @Override
    @SuppressWarnings("rawtypes")
    public OSGiServiceState registerService(AbstractBundleState bundleState, String[] clazzes, Object service, Dictionary properties)
    {
@@ -261,6 +280,7 @@
       return result;
    }
 
+   @Override
    public void unregisterService(OSGiServiceState serviceState)
    {
       AbstractBundleState bundleState = serviceState.getBundleState();
@@ -277,9 +297,6 @@
       controller.uninstall(serviceState.getName());
    }
 
-   /**
-    * Unregister the service
-    */
    private void internalUnregister(OSGiServiceState serviceState)
    {
       AbstractBundleState bundleState = serviceState.getBundleState();
@@ -312,6 +329,7 @@
       serviceState.clearTarget();
    }
    
+   @Override
    public boolean ungetService(AbstractBundleState bundleState, ServiceReference reference)
    {
       if (reference == null)
@@ -325,6 +343,7 @@
       return bundleState.removeContextInUse(context);
    }
 
+   @Override
    public void unregisterServices(AbstractBundleState bundleState)
    {
       unregisterContexts(bundleState);

Modified: projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/plugins/ServiceManagerPlugin.java
===================================================================
--- projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/plugins/ServiceManagerPlugin.java	2010-03-21 14:29:03 UTC (rev 102685)
+++ projects/jboss-osgi/projects/runtime/framework/trunk/core/src/main/java/org/jboss/osgi/framework/plugins/ServiceManagerPlugin.java	2010-03-21 15:45:02 UTC (rev 102686)
@@ -22,6 +22,7 @@
 package org.jboss.osgi.framework.plugins;
 
 import java.util.Dictionary;
+import java.util.Set;
 
 import org.jboss.osgi.framework.bundle.AbstractBundleState;
 import org.jboss.osgi.framework.bundle.OSGiServiceState;
@@ -104,7 +105,14 @@
     */
    Object getService(AbstractBundleState bundleState, ServiceReference reference);
 
+   
    /**
+    * Returns the bundles that are using the service.
+    * @return A set of bundles or an empty set.
+    */
+   Set<Bundle> getUsingBundles(OSGiServiceState serviceState);
+   
+   /**
     * Releases the service object referenced by the specified
     * <code>ServiceReference</code> object. If the context bundle's use count
     * for the service is zero, this method returns <code>false</code>.



More information about the jboss-osgi-commits mailing list