Refactor event dispatch injector to use TestUtils field setter

Change-Id: I793183de883c7b20784957eaa213d79a42951639
diff --git a/core/api/src/test/java/org/onosproject/net/NetTestTools.java b/core/api/src/test/java/org/onosproject/net/NetTestTools.java
index 18c5679..c989ee0 100644
--- a/core/api/src/test/java/org/onosproject/net/NetTestTools.java
+++ b/core/api/src/test/java/org/onosproject/net/NetTestTools.java
@@ -15,6 +15,7 @@
  */
 package org.onosproject.net;
 
+import org.onlab.junit.TestUtils;
 import org.onlab.packet.ChassisId;
 import org.onlab.packet.IpAddress;
 import org.onosproject.TestApplicationId;
@@ -126,11 +127,11 @@
         for (Field f : mc.getSuperclass().getDeclaredFields()) {
             if (f.getType().equals(EventDeliveryService.class)) {
                 try {
-                    f.setAccessible(true);
-                    f.set(manager, svc);
-                } catch (IllegalAccessException e) {
+                    TestUtils.setField(manager, f.getName(), svc);
+                } catch (TestUtils.TestUtilsException e) {
                     throw new IllegalArgumentException("Unable to inject reference", e);
                 }
+                break;
             }
         }
     }
diff --git a/utils/junit/src/main/java/org/onlab/junit/TestUtils.java b/utils/junit/src/main/java/org/onlab/junit/TestUtils.java
index 496b357..1afc494 100644
--- a/utils/junit/src/main/java/org/onlab/junit/TestUtils.java
+++ b/utils/junit/src/main/java/org/onlab/junit/TestUtils.java
@@ -40,13 +40,23 @@
     public static <T, U> void setField(T subject, String fieldName, U value)
             throws TestUtilsException {
         @SuppressWarnings("unchecked")
-        Class<T> clazz = (Class<T>) subject.getClass();
+        Class clazz = subject.getClass();
         try {
-            Field field = clazz.getDeclaredField(fieldName);
-            field.setAccessible(true);
-            field.set(subject, value);
-        } catch (NoSuchFieldException | SecurityException |
-                 IllegalArgumentException | IllegalAccessException e) {
+            while (clazz != null) {
+                try {
+                    Field field = clazz.getDeclaredField(fieldName);
+                    field.setAccessible(true);
+                    field.set(subject, value);
+                    break;
+                } catch (NoSuchFieldException ex) {
+                    if (clazz == clazz.getSuperclass()) {
+                        break;
+                    }
+                    clazz = clazz.getSuperclass();
+                }
+            }
+        } catch (SecurityException | IllegalArgumentException |
+                 IllegalAccessException e) {
             throw new TestUtilsException("setField failed", e);
         }
     }