You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ri...@apache.org on 2006/07/25 12:16:59 UTC

svn commit: r425359 - /incubator/felix/trunk/org.apache.felix.framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java

Author: rickhall
Date: Tue Jul 25 03:16:58 2006
New Revision: 425359

URL: http://svn.apache.org/viewvc?rev=425359&view=rev
Log:
Modified class accessibility checking used for service filtering to also
try to load from the bundle that registered the service.

Modified:
    incubator/felix/trunk/org.apache.felix.framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java

Modified: incubator/felix/trunk/org.apache.felix.framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java
URL: http://svn.apache.org/viewvc/incubator/felix/trunk/org.apache.felix.framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java?rev=425359&r1=425358&r2=425359&view=diff
==============================================================================
--- incubator/felix/trunk/org.apache.felix.framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java (original)
+++ incubator/felix/trunk/org.apache.felix.framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java Tue Jul 25 03:16:58 2006
@@ -117,12 +117,21 @@
     **/
     protected boolean isClassAccessible(Class clazz)
     {
-        Class sourceClass = (m_factory != null)
-            ? m_factory.getClass() : m_svcObj.getClass();
         try
         {
-            Class target = Util.loadClassUsingClass(sourceClass, clazz.getName());
-            return (target.getClassLoader() == clazz.getClassLoader());
+            // First, try to load the class from the bundle that registered
+            // the service.
+            Class targetClass = m_bundle.loadClass(clazz.getName());
+            if (targetClass != null)
+            {
+                return (targetClass == clazz);
+            }
+            // If it cannot be found from the registering bundle, then try to load
+            // from the service object or service factory class.
+            Class sourceClass = (m_factory != null)
+                ? m_factory.getClass() : m_svcObj.getClass();
+            targetClass = Util.loadClassUsingClass(sourceClass, clazz.getName());
+            return (targetClass == clazz);
         }
         catch (Exception ex)
         {