[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