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)


Reply via email to