Repository: tomee
Updated Branches:
  refs/heads/master 3bb08cbe1 -> 5c33866d9


fixing application runner injections when there is a parent


Project: http://git-wip-us.apache.org/repos/asf/tomee/repo
Commit: http://git-wip-us.apache.org/repos/asf/tomee/commit/5c33866d
Tree: http://git-wip-us.apache.org/repos/asf/tomee/tree/5c33866d
Diff: http://git-wip-us.apache.org/repos/asf/tomee/diff/5c33866d

Branch: refs/heads/master
Commit: 5c33866d94742043a6ed301286adc22eb8502e3b
Parents: 3bb08cb
Author: rmannibucau <rmannibu...@apache.org>
Authored: Tue Oct 4 12:22:41 2016 +0200
Committer: rmannibucau <rmannibu...@apache.org>
Committed: Tue Oct 4 12:22:41 2016 +0200

----------------------------------------------------------------------
 .../TomEEEmbeddedApplicationRunner.java         | 65 ++++++++++----------
 1 file changed, 32 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tomee/blob/5c33866d/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
----------------------------------------------------------------------
diff --git 
a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
 
b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
index 34826c3..7721aa7 100644
--- 
a/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
+++ 
b/tomee/tomee-embedded/src/main/java/org/apache/tomee/embedded/TomEEEmbeddedApplicationRunner.java
@@ -387,43 +387,42 @@ public class TomEEEmbeddedApplicationRunner implements 
AutoCloseable {
             OWBInjector.inject(webBeansContext.getBeanManagerImpl(), target, 
null);
         }
 
-        final Class<?> aClass = target.getClass();
-        for (final Field f : aClass.getDeclaredFields()) {
-            final RandomPort randomPort = f.getAnnotation(RandomPort.class);
-            if (randomPort != null) {
-                for (final Field field : app.getClass().getDeclaredFields()) {
-                    final RandomPort appPort = 
field.getAnnotation(RandomPort.class);
-                    if (field.getType() == f.getType() && appPort != null && 
appPort.value().equals(randomPort.value())) {
-                        if (!field.isAccessible()) {
-                            field.setAccessible(true);
+        Class<?> aClass = target.getClass();
+        while (aClass != null && aClass != Object.class) {
+            for (final Field f : aClass.getDeclaredFields()) {
+                final RandomPort randomPort = 
f.getAnnotation(RandomPort.class);
+                if (randomPort != null) {
+                    for (final Field field : 
app.getClass().getDeclaredFields()) {
+                        final RandomPort appPort = 
field.getAnnotation(RandomPort.class);
+                        if (field.getType() == f.getType() && appPort != null 
&& appPort.value().equals(randomPort.value())) {
+                            if (!field.isAccessible()) {
+                                field.setAccessible(true);
+                            }
+                            if (!f.isAccessible()) {
+                                f.setAccessible(true);
+                            }
+
+                            final Object value = field.get(app);
+                            f.set(target, value);
+                            break;
                         }
-                        if (!f.isAccessible()) {
-                            f.setAccessible(true);
-                        }
-
-                        final Object value = field.get(app);
-                        f.set(target, value);
-                        break;
                     }
+                } else if (f.isAnnotationPresent(Application.class)) {
+                    if (!f.isAccessible()) {
+                        f.setAccessible(true);
+                    }
+                    f.set(target, app);
+                } else if (f.isAnnotationPresent(LifecycleTask.class)) {
+                    if (!f.isAccessible()) {
+                        f.setAccessible(true);
+                    }
+                    final LifecycleTaskAccessor accessor = 
SystemInstance.get().getComponent(LifecycleTaskAccessor.class);
+                    final Class type = f.getType();
+                    final Object taskByType = accessor.getTaskByType(type);
+                    f.set(target, taskByType);
                 }
-            } else if (f.isAnnotationPresent(Application.class)) {
-                if (!f.isAccessible()) {
-                    f.setAccessible(true);
-                }
-                f.set(target, app);
-            } else if (f.isAnnotationPresent(LifecycleTask.class)) {
-                if (!f.isAccessible()) {
-                    f.setAccessible(true);
-                }
-                final LifecycleTaskAccessor accessor = 
SystemInstance.get().getComponent(LifecycleTaskAccessor.class);
-                final Class type = f.getType();
-                final Object taskByType = accessor.getTaskByType(type);
-                f.set(target, taskByType);
             }
-        }
-        final Class<?> superclass = aClass.getSuperclass();
-        if (superclass != Object.class) {
-            composerInject(superclass);
+            aClass = aClass.getSuperclass();
         }
 
         SystemInstance.get().fireEvent(new 
TomEEEmbeddedApplicationRunnerInjection(target));

Reply via email to