[picocontainer-scm] [5790] java/2.x/trunk/pico/container/src/test/org/picocontainer/lifecycle: PICO-383 - recurse thru superclasses looking for J2EE annotations
paul-yCVjj/[email protected] Tue, 14 Jun 2011 10:18:56 -0500 (CDT)
| Newsgroups | gmane.comp.java.picocontainer.cvs |
|---|---|
| Message-ID | <[email protected]> |
Revision 5790
Author paul
Date 2011-06-14 10:18:55 -0500 (Tue, 14 Jun 2011)
Log Message
PICO-383 - recurse thru superclasses looking for J2EE annotations
Modified Paths
- java/2.x/trunk/pico/container/src/java/org/picocontainer/lifecycle/JavaEE5LifecycleStrategy.java
- java/2.x/trunk/pico/container/src/test/org/picocontainer/lifecycle/JavaEE5LifecycleStrategyTestCase.java
Diff
Modified: java/2.x/trunk/pico/container/src/java/org/picocontainer/lifecycle/JavaEE5LifecycleStrategy.java (5789 => 5790)
--- java/2.x/trunk/pico/container/src/java/org/picocontainer/lifecycle/JavaEE5LifecycleStrategy.java 2011-05-17 13:08:32 UTC (rev 5789)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/lifecycle/JavaEE5LifecycleStrategy.java 2011-06-14 15:18:55 UTC (rev 5790)
@@ -7,15 +7,14 @@
*****************************************************************************/
package org.picocontainer.lifecycle;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.annotation.Annotation;
-
import org.picocontainer.ComponentMonitor;
import org.picocontainer.PicoLifecycleException;
+import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
-import javax.annotation.PostConstruct;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
/**
* Java EE 5 has some annotations PreDestroy and PostConstruct that map to start() and dispose() in our world
@@ -49,8 +48,18 @@
doLifecycleMethod(component, PreDestroy.class);
}
+
+
private void doLifecycleMethod(final Object component, Class<? extends Annotation> annotation) {
- Method[] methods = component.getClass().getDeclaredMethods();
+ doLifecycleMethod(component, annotation, component.getClass());
+ }
+
+ private void doLifecycleMethod(Object component, Class<? extends Annotation> annotation, Class<? extends Object> clazz) {
+ Class<?> parent = clazz.getSuperclass();
+ if (parent != Object.class) {
+ doLifecycleMethod(component, annotation, parent);
+ }
+ Method[] methods = clazz.getDeclaredMethods();
for (int i = 0; i < methods.length; i++) {
Method method = methods[i];
if (method.isAnnotationPresent(annotation)) {
Modified: java/2.x/trunk/pico/container/src/test/org/picocontainer/lifecycle/JavaEE5LifecycleStrategyTestCase.java (5789 => 5790)
--- java/2.x/trunk/pico/container/src/test/org/picocontainer/lifecycle/JavaEE5LifecycleStrategyTestCase.java 2011-05-17 13:08:32 UTC (rev 5789)
+++ java/2.x/trunk/pico/container/src/test/org/picocontainer/lifecycle/JavaEE5LifecycleStrategyTestCase.java 2011-06-14 15:18:55 UTC (rev 5790)
@@ -7,11 +7,6 @@
*****************************************************************************/
package org.picocontainer.lifecycle;
-import static org.junit.Assert.assertEquals;
-
-import javax.annotation.PostConstruct;
-import javax.annotation.PreDestroy;
-
import org.junit.Before;
import org.junit.Test;
import org.picocontainer.DefaultPicoContainer;
@@ -21,6 +16,11 @@
import org.picocontainer.containers.EmptyPicoContainer;
import org.picocontainer.monitors.NullComponentMonitor;
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+import static org.junit.Assert.assertEquals;
+
/**
*
* @author Mauro Talevi
@@ -31,7 +31,7 @@
public static class ProPostAnnotationJava5Startable {
- StringBuilder sb;
+ protected final StringBuilder sb;
public ProPostAnnotationJava5Startable(StringBuilder sb) {
this.sb = sb;
@@ -49,7 +49,24 @@
}
+ public static class ProPostAnnotationJava5Startable2 extends ProPostAnnotationJava5Startable {
+ public ProPostAnnotationJava5Startable2(StringBuilder sb) {
+ super(sb);
+ }
+
+ @PostConstruct
+ public void subPot() {
+ sb.append("subPost()");
+ }
+
+ @PreDestroy
+ public void subPre() {
+ sb.append("subPre()");
+ }
+
+ }
+
private LifecycleStrategy strategy;
@Before
@@ -77,6 +94,14 @@
assertEquals("post()pre()", pico.getComponent(StringBuilder.class).toString());
}
+ @Test public void testDisposeOfSubClass(){
+ pico.removeComponent(ProPostAnnotationJava5Startable.class);
+ pico.addComponent(ProPostAnnotationJava5Startable2.class);
+ pico.start();
+ pico.dispose();
+ assertEquals("post()subPost()pre()subPre()", pico.getComponent(StringBuilder.class).toString());
+ }
+
@Test public void testSerializable(){
}
----------
To unsubscribe from this list please visit:
http://xircles.codehaus.org/manage_email