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.

git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@943089 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
index cd7335e..9a0d33e 100644
--- a/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
+++ b/dependencymanager/core/src/main/java/org/apache/felix/dm/impl/ServiceImpl.java
@@ -837,16 +837,19 @@
 		        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;
 		                    }
 		                }