You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by ma...@apache.org on 2010/05/11 13:33:39 UTC
svn commit: r943089 -
/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
Author: marrs
Date: Tue May 11 11:33:39 2010
New Revision: 943089
URL: http://svn.apache.org/viewvc?rev=943089&view=rev
Log:
Slightly relaxed the rules for member injection when using a named field. In that case it is now enough to have a field that is of an assignable type, instead of requiring an exact type.
Modified:
felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
Modified: felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
URL: http://svn.apache.org/viewvc/felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java?rev=943089&r1=943088&r2=943089&view=diff
==============================================================================
--- felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java (original)
+++ felix/trunk/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java Tue May 11 11:33:39 2010
@@ -837,16 +837,19 @@ public class ServiceImpl implements Serv
while (serviceClazz != null) {
Field[] fields = serviceClazz.getDeclaredFields();
for (int j = 0; j < fields.length; j++) {
- if (fields[j].getType().equals(clazz) && (instanceName == null || fields[j].getName().equals(instanceName))) {
+ Field field = fields[j];
+ Class type = field.getType();
+ if ((instanceName == null && type.equals(clazz))
+ || (instanceName != null && field.getName().equals(instanceName) && type.isAssignableFrom(clazz))) {
try {
- fields[j].setAccessible(true);
+ field.setAccessible(true);
// synchronized makes sure the field is actually written to immediately
synchronized (SYNC) {
- fields[j].set(serviceInstance, instance);
+ field.set(serviceInstance, instance);
}
}
catch (Exception e) {
- m_logger.log(Logger.LOG_ERROR, "Could not set field " + fields[j], e);
+ m_logger.log(Logger.LOG_ERROR, "Could not set field " + field, e);
return;
}
}