You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by pa...@apache.org on 2008/04/18 23:27:15 UTC

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

Author: pauls
Date: Fri Apr 18 14:27:14 2008
New Revision: 649697

URL: http://svn.apache.org/viewvc?rev=649697&view=rev
Log:
Check that the returned object from a service factory is an instance of all classes named when the service was registered (FELIX-540).

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

Modified: felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java?rev=649697&r1=649696&r2=649697&view=diff
==============================================================================
--- felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java (original)
+++ felix/trunk/framework/src/main/java/org/apache/felix/framework/ServiceRegistrationImpl.java Fri Apr 18 14:27:14 2008
@@ -253,7 +253,19 @@
 
     private Object getFactoryUnchecked(Bundle bundle)
     {
-        return m_factory.getService(bundle, this);
+        Object svcObj = m_factory.getService(bundle, this);
+        if (svcObj != null)
+        {
+            for (int i = 0; i < m_classes.length; i++)
+            {
+                Class clazz = Util.loadClassUsingClass(svcObj.getClass(), m_classes[i]);
+                if ((clazz == null) || !clazz.isAssignableFrom(svcObj.getClass()))
+                {
+                    return null;
+                }
+            }
+        }
+        return svcObj;
     }
 
     private void ungetFactoryUnchecked(Bundle bundle, Object svcObj)