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)