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)