Author: dblevins
Date: Tue Mar 29 00:15:05 2011
New Revision: 1086449

URL: http://svn.apache.org/viewvc?rev=1086449&view=rev
Log:
OPENEJB-1453: Metatyping for EJB and Dependency Injection Annotations
Sort the processing of interceptor annotations and callbacks
"isValidEjbAnnotationUsage" is now properly meta-annotation aware
Async method processing now meta-aware

Added:
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/test/util/
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/test/util/Asserts.java
   (with props)
Modified:
    
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessPoolStatsTest.java
    
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/interceptors/FullyInterceptedTest.java

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java?rev=1086449&r1=1086448&r2=1086449&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/config/AnnotationDeployer.java
 Tue Mar 29 00:15:05 2011
@@ -29,6 +29,7 @@ import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
@@ -459,7 +460,7 @@ public class AnnotationDeployer implemen
                 Singleton singleton = beanClass.getAnnotation(Singleton.class);
                 String ejbName = getEjbName(singleton, beanClass.get());
 
-                if (!isValidEjbAnnotationUsage(Singleton.class, 
beanClass.get(), ejbName, ejbModule)) continue;
+                if (!isValidEjbAnnotationUsage(Singleton.class, beanClass, 
ejbName, ejbModule)) continue;
 
                 EnterpriseBean enterpriseBean = 
ejbJar.getEnterpriseBean(ejbName);
                 if (enterpriseBean == null) {
@@ -485,7 +486,7 @@ public class AnnotationDeployer implemen
                 Stateless stateless = beanClass.getAnnotation(Stateless.class);
                 String ejbName = getEjbName(stateless, beanClass.get());
 
-                if (!isValidEjbAnnotationUsage(Stateless.class, 
beanClass.get(), ejbName, ejbModule)) continue;
+                if (!isValidEjbAnnotationUsage(Stateless.class, beanClass, 
ejbName, ejbModule)) continue;
 
                 EnterpriseBean enterpriseBean = 
ejbJar.getEnterpriseBean(ejbName);
                 if (enterpriseBean == null) {
@@ -511,7 +512,7 @@ public class AnnotationDeployer implemen
                 Stateful stateful = beanClass.getAnnotation(Stateful.class);
                 String ejbName = getEjbName(stateful, beanClass.get());
 
-                if (!isValidEjbAnnotationUsage(Stateful.class, 
beanClass.get(), ejbName, ejbModule)) continue;
+                if (!isValidEjbAnnotationUsage(Stateful.class, beanClass, 
ejbName, ejbModule)) continue;
 
                 EnterpriseBean enterpriseBean = 
ejbJar.getEnterpriseBean(ejbName);
                 if (enterpriseBean == null) {
@@ -540,7 +541,7 @@ public class AnnotationDeployer implemen
                 // TODO: this is actually against the spec, but the 
requirement is rather silly
                 // (allowing @Stateful and @ManagedBean on the same class)
                 // If the TCK doesn't complain we should discourage it
-                if (!isValidEjbAnnotationUsage(ManagedBean.class, 
beanClass.get(), ejbName, ejbModule)) continue;
+                if (!isValidEjbAnnotationUsage(ManagedBean.class, beanClass, 
ejbName, ejbModule)) continue;
 
                 EnterpriseBean enterpriseBean = 
ejbJar.getEnterpriseBean(ejbName);
                 if (enterpriseBean == null) {
@@ -556,10 +557,9 @@ public class AnnotationDeployer implemen
                 }
             }
 
-            List<Class<?>> classes = 
finder.findAnnotatedClasses(MessageDriven.class);
-            for (Class<?> beanClass : classes) {
+            for (Annotated<Class<?>> beanClass : 
finder.findMetaAnnotatedClasses(MessageDriven.class)) {
                 MessageDriven mdb = 
beanClass.getAnnotation(MessageDriven.class);
-                String ejbName = getEjbName(mdb, beanClass);
+                String ejbName = getEjbName(mdb, beanClass.get());
 
                 if (!isValidEjbAnnotationUsage(MessageDriven.class, beanClass, 
ejbName, ejbModule)) continue;
 
@@ -567,11 +567,11 @@ public class AnnotationDeployer implemen
                 if (messageBean == null) {
                     messageBean = new MessageDrivenBean(ejbName);
                     ejbJar.addEnterpriseBean(messageBean);
-                    LegacyProcessor.process(beanClass, messageBean);
+                    LegacyProcessor.process(beanClass.get(), messageBean);
                 }
                 if (messageBean.getEjbClass() == null) {
-                    messageBean.setEjbClass(beanClass.getName());
-                    LegacyProcessor.process(beanClass, messageBean);
+                    messageBean.setEjbClass(beanClass.get());
+                    LegacyProcessor.process(beanClass.get(), messageBean);
                 }
             }
 
@@ -622,7 +622,7 @@ public class AnnotationDeployer implemen
             return ejbName;
         }
 
-        private boolean isValidEjbAnnotationUsage(Class annotationClass, 
Class<?> beanClass, String ejbName, EjbModule ejbModule) {
+        private boolean isValidEjbAnnotationUsage(Class annotationClass, 
Annotated<Class<?>> beanClass, String ejbName, EjbModule ejbModule) {
             List<Class<? extends Annotation>> annotations = new 
ArrayList(asList(Singleton.class, Stateless.class, Stateful.class, 
MessageDriven.class));
             annotations.remove(annotationClass);
 
@@ -634,27 +634,27 @@ public class AnnotationDeployer implemen
 
                 String secondEjbName = null;
                 if (annotation instanceof Stateful) {
-                    secondEjbName = getEjbName((Stateful) annotation, 
beanClass);
+                    secondEjbName = getEjbName((Stateful) annotation, 
beanClass.get());
                 } else if (annotation instanceof Stateless) {
-                    secondEjbName = getEjbName((Stateless) annotation, 
beanClass);
+                    secondEjbName = getEjbName((Stateless) annotation, 
beanClass.get());
                 } else if (annotation instanceof Singleton) {
-                    secondEjbName = getEjbName((Singleton) annotation, 
beanClass);
+                    secondEjbName = getEjbName((Singleton) annotation, 
beanClass.get());
                 } else if (annotation instanceof MessageDriven) {
-                    secondEjbName = getEjbName((MessageDriven) annotation, 
beanClass);
+                    secondEjbName = getEjbName((MessageDriven) annotation, 
beanClass.get());
                 }
 
                 if (ejbName.equals(secondEjbName)) {
-                    ejbModule.getValidation().fail(ejbName, 
"multiplyAnnotatedAsBean", annotationClass.getSimpleName(), 
secondAnnotation.getSimpleName(), ejbName, beanClass.getName());
+                    ejbModule.getValidation().fail(ejbName, 
"multiplyAnnotatedAsBean", annotationClass.getSimpleName(), 
secondAnnotation.getSimpleName(), ejbName, beanClass.get().getName());
                 }
             }
 
-            if (beanClass.isInterface()) {
-                ejbModule.getValidation().fail(ejbName, 
"interfaceAnnotatedAsBean", annotationClass.getSimpleName(), 
beanClass.getName());
+            if (beanClass.get().isInterface()) {
+                ejbModule.getValidation().fail(ejbName, 
"interfaceAnnotatedAsBean", annotationClass.getSimpleName(), 
beanClass.get().getName());
                 return false;
             }
 
-            if (isAbstract(beanClass.getModifiers())) {
-                ejbModule.getValidation().fail(ejbName, 
"abstractAnnotatedAsBean", annotationClass.getSimpleName(), 
beanClass.getName());
+            if (isAbstract(beanClass.get().getModifiers())) {
+                ejbModule.getValidation().fail(ejbName, 
"abstractAnnotatedAsBean", annotationClass.getSimpleName(), 
beanClass.get().getName());
                 return false;
             }
 
@@ -1165,7 +1165,7 @@ public class AnnotationDeployer implemen
                 /*
                  * @Interceptors
                  */
-                for (Annotated<Class<?>> interceptorsAnnotatedClass : 
annotationFinder.findMetaAnnotatedClasses(Interceptors.class)) {
+                for (Annotated<Class<?>> interceptorsAnnotatedClass : 
sortClasses(annotationFinder.findMetaAnnotatedClasses(Interceptors.class))) {
                     Interceptors interceptors = 
interceptorsAnnotatedClass.getAnnotation(Interceptors.class);
                     EjbJar ejbJar = ejbModule.getEjbJar();
                     for (Class interceptor : interceptors.value()) {
@@ -1182,7 +1182,7 @@ public class AnnotationDeployer implemen
                     }
                 }
 
-                for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(Interceptors.class)) {
+                for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(Interceptors.class))) {
                     Interceptors interceptors = 
method.getAnnotation(Interceptors.class);
                     if (interceptors != null) {
                         EjbJar ejbJar = ejbModule.getEjbJar();
@@ -1224,7 +1224,7 @@ public class AnnotationDeployer implemen
                     binding.setExcludeClassInterceptors(true);
                 }
 
-                for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(ExcludeClassInterceptors.class)) {
+                for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(ExcludeClassInterceptors.class)))
 {
                     InterceptorBinding binding = 
assemblyDescriptor.addInterceptorBinding(new InterceptorBinding(bean));
                     binding.setExcludeClassInterceptors(true);
                     binding.setMethod(new NamedMethod(method.get()));
@@ -1575,19 +1575,16 @@ public class AnnotationDeployer implemen
 
             SessionBean sessionBean = (SessionBean) bean;
 
-            List<Method> asyncMethods = 
annotationFinder.findAnnotatedMethods(Asynchronous.class);
-            for (Method method : asyncMethods) {
-                sessionBean.getAsyncMethod().add(new AsyncMethod(method));
+            for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(Asynchronous.class)) {
+                sessionBean.getAsyncMethod().add(new 
AsyncMethod(method.get()));
             }
 
-            List<Class<?>> clses = 
annotationFinder.findAnnotatedClasses(Asynchronous.class);
-
             //Spec 4.5.1 @Asynchronous could be used at the class level of a 
bean-class ( or superclass ).
             //Seems that it should not be used on the any interface view
 
-            for (Class<?> cls : clses) {
-                if (!cls.isInterface()) {
-                    sessionBean.getAsynchronousClasses().add(cls.getName());
+            for (Annotated<Class<?>> clazz : 
annotationFinder.findMetaAnnotatedClasses(Asynchronous.class)) {
+                if (!clazz.get().isInterface()) {
+                    
sessionBean.getAsynchronousClasses().add(clazz.get().getName());
                 }
             }
         }
@@ -2199,7 +2196,7 @@ public class AnnotationDeployer implemen
              * @PostConstruct
              */
             if (apply(override, bean.getPostConstruct())) {
-                for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(PostConstruct.class)) {
+                for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(PostConstruct.class))) {
                     bean.getPostConstruct().add(new 
LifecycleCallback(method.get()));
                 }
             }
@@ -2208,7 +2205,7 @@ public class AnnotationDeployer implemen
              * @PreDestroy
              */
             if (apply(override, bean.getPreDestroy())) {
-                for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(PreDestroy.class)) {
+                for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(PreDestroy.class))) {
                     bean.getPreDestroy().add(new 
LifecycleCallback(method.get()));
                 }
             }
@@ -2220,7 +2217,7 @@ public class AnnotationDeployer implemen
                  * @AroundInvoke
                  */
                 if (apply(override, invokable.getAroundInvoke())) {
-                    for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(javax.interceptor.AroundInvoke.class))
 {
+                    for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(javax.interceptor.AroundInvoke.class)))
 {
                         invokable.getAroundInvoke().add(new 
AroundInvoke(method.get()));
                     }
                 }
@@ -2229,7 +2226,7 @@ public class AnnotationDeployer implemen
                  *  @AroundTimeout
                  */
                 if (apply(override, invokable.getAroundInvoke())) {
-                    for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(javax.interceptor.AroundTimeout.class))
 {
+                    for (Annotated<Method> method : 
sortMethods((annotationFinder.findMetaAnnotatedMethods(javax.interceptor.AroundTimeout.class))))
 {
                         invokable.getAroundTimeout().add(new 
AroundTimeout(method.get()));
                     }
                 }
@@ -2241,10 +2238,10 @@ public class AnnotationDeployer implemen
             if (bean instanceof TimerConsumer) {
                 TimerConsumer timerConsumer = (TimerConsumer) bean;
                 if (timerConsumer.getTimeoutMethod() == null) {
-                    List<Method> timeoutMethods = 
annotationFinder.findAnnotatedMethods(javax.ejb.Timeout.class);
+                    List<Annotated<Method>> timeoutMethods = 
annotationFinder.findMetaAnnotatedMethods(javax.ejb.Timeout.class);
                     //Validation Logic is moved to CheckCallback class.
                     if(timeoutMethods.size() == 1){
-                        timerConsumer.setTimeoutMethod(new 
NamedMethod(timeoutMethods.get(0)));
+                        timerConsumer.setTimeoutMethod(new 
NamedMethod(timeoutMethods.get(0).get()));
                     }
                 }
             }
@@ -2257,7 +2254,7 @@ public class AnnotationDeployer implemen
                  */
                 LifecycleCallback afterBegin = 
getFirst(session.getAfterBegin());
                 if (afterBegin == null) {
-                    for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(AfterBegin.class)) {
+                    for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(AfterBegin.class))) {
                         session.getAfterBegin().add(new 
LifecycleCallback(method.get()));
                     }
                 }
@@ -2267,7 +2264,7 @@ public class AnnotationDeployer implemen
                  */
                 LifecycleCallback beforeCompletion = 
getFirst(session.getBeforeCompletion());
                 if (beforeCompletion == null) {
-                    for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(BeforeCompletion.class)) {
+                    for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(BeforeCompletion.class))) 
{
                         session.getBeforeCompletion().add(new 
LifecycleCallback(method.get()));
                     }
                 }
@@ -2277,7 +2274,7 @@ public class AnnotationDeployer implemen
                  */
                 LifecycleCallback afterCompletion = 
getFirst(session.getAfterCompletion());
                 if (afterCompletion == null) {
-                    for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(AfterCompletion.class)) {
+                    for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(AfterCompletion.class))) {
                         session.getAfterCompletion().add(new 
LifecycleCallback(method.get()));
                     }
                 }
@@ -2286,7 +2283,7 @@ public class AnnotationDeployer implemen
                  * @PostActivate
                  */
                 if (apply(override, session.getPostActivate())) {
-                    for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(PostActivate.class)) {
+                    for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(PostActivate.class))) {
                         session.getPostActivate().add(new 
LifecycleCallback(method.get()));
                     }
                 }
@@ -2295,16 +2292,15 @@ public class AnnotationDeployer implemen
                  * @PrePassivate
                  */
                 if (apply(override, session.getPrePassivate())) {
-                    for (Annotated<Method> method : 
annotationFinder.findMetaAnnotatedMethods(PrePassivate.class)) {
+                    for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(PrePassivate.class))) {
                         session.getPrePassivate().add(new 
LifecycleCallback(method.get()));
                     }
                 }
                 /*
                  * @Init
                  */
-                List<Method> initMethods = 
annotationFinder.findAnnotatedMethods(Init.class);
-                for (Method method : initMethods) {
-                    InitMethod initMethod = new InitMethod(method);
+                for (Annotated<Method> method : 
sortMethods(annotationFinder.findMetaAnnotatedMethods(Init.class))) {
+                    InitMethod initMethod = new InitMethod(method.get());
 
                     Init init = method.getAnnotation(Init.class);
                     if (init.value() != null && !init.value().equals("")) {
@@ -2317,14 +2313,14 @@ public class AnnotationDeployer implemen
                 /*
                  * @Remove
                  */
-                List<Method> removeMethods = 
annotationFinder.findAnnotatedMethods(Remove.class);
+                List<Annotated<Method>> removeMethods = 
sortMethods(annotationFinder.findMetaAnnotatedMethods(Remove.class));
                 Map<NamedMethod, RemoveMethod> declaredRemoveMethods = new 
HashMap<NamedMethod, RemoveMethod>();
                 for (RemoveMethod removeMethod : session.getRemoveMethod()) {
                     declaredRemoveMethods.put(removeMethod.getBeanMethod(), 
removeMethod);
                 }
-                for (Method method : removeMethods) {
+                for (Annotated<Method> method : removeMethods) {
                     Remove remove = method.getAnnotation(Remove.class);
-                    RemoveMethod removeMethod = new RemoveMethod(method, 
remove.retainIfException());
+                    RemoveMethod removeMethod = new RemoveMethod(method.get(), 
remove.retainIfException());
 
                     RemoveMethod declaredRemoveMethod = 
declaredRemoveMethods.get(removeMethod.getBeanMethod());
 
@@ -3607,8 +3603,6 @@ public class AnnotationDeployer implemen
                 parents.addAll(ancestors(clazz));
             }
 
-            Collections.reverse(parents);
-
             return new AnnotationFinder(new ClassesArchive(parents)).link();
         }
 
@@ -3797,4 +3791,31 @@ public class AnnotationDeployer implemen
         }
     }
 
+    public static List<Annotated<Class<?>>> 
sortClasses(List<Annotated<Class<?>>> list) {
+        Collections.sort(list, new Comparator<Annotated<Class<?>>>() {
+            @Override
+            public int compare(Annotated<Class<?>> o1, Annotated<Class<?>> o2) 
{
+                return compareClasses(o1.get(), o2.get());
+            }
+        });
+        return list;
+    }
+
+    public static List<Annotated<Method>> sortMethods(List<Annotated<Method>> 
list) {
+        Collections.sort(list, new Comparator<Annotated<Method>>() {
+            @Override
+            public int compare(Annotated<Method> o1, Annotated<Method> o2) {
+                return compareClasses(o1.get().getDeclaringClass(), 
o2.get().getDeclaringClass());
+            }
+        });
+        return list;
+    }
+
+    private static int compareClasses(Class<?> a, Class<?> b) {
+        if (a == b) return 0;
+        if (a.isAssignableFrom(b)) return 1;
+        if (b.isAssignableFrom(a)) return -1;
+
+        return 0;
+    }
 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java?rev=1086449&r1=1086448&r2=1086449&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
 Tue Mar 29 00:15:05 2011
@@ -24,18 +24,24 @@ import org.apache.openejb.jee.AssemblyDe
 import org.apache.openejb.jee.EjbJar;
 
 import static org.hamcrest.CoreMatchers.*;
-import static org.junit.Assert.assertThat;
+import static org.junit.Assert.*;
 
 import org.apache.openejb.jee.EnterpriseBean;
 import org.apache.openejb.jee.SessionBean;
+import org.apache.xbean.finder.Annotated;
+import org.apache.xbean.finder.AnnotationFinder;
 import org.apache.xbean.finder.ClassFinder;
+import org.apache.xbean.finder.archive.ClassesArchive;
 import org.junit.Assert;
 import org.junit.Test;
 
+import javax.annotation.Resource;
 import javax.ejb.ApplicationException;
 import javax.ejb.Local;
 import javax.ejb.LocalBean;
 import javax.ejb.Stateless;
+import java.lang.reflect.Method;
+import java.util.List;
 
 /**
  * @version $Rev$ $Date$
@@ -78,6 +84,39 @@ public class AnnotationDeployerTest {
         return ejbModule;
     }
 
+
+    @Test
+    public void testSortClasses() throws Exception {
+        AnnotationFinder finder = new AnnotationFinder(new 
ClassesArchive(Emerald.class)).link();
+
+        List<Annotated<Class<?>>> classes = 
finder.findMetaAnnotatedClasses(Resource.class);
+        assertTrue(classes.size() >= 3);
+
+        List<Annotated<Class<?>>> sorted = 
AnnotationDeployer.sortClasses(classes);
+
+        assertTrue(sorted.size() >= 3);
+
+        assertEquals(Emerald.class, sorted.get(0).get());
+        assertEquals(Green.class, sorted.get(1).get());
+        assertEquals(Color.class, sorted.get(2).get());
+    }
+
+    @Test
+    public void testSortMethods() throws Exception {
+        AnnotationFinder finder = new AnnotationFinder(new 
ClassesArchive(Emerald.class)).link();
+
+        List<Annotated<Method>> classes = 
finder.findMetaAnnotatedMethods(Resource.class);
+        assertTrue(classes.size() >= 3);
+
+        List<Annotated<Method>> sorted = 
AnnotationDeployer.sortMethods(classes);
+
+        assertTrue(sorted.size() >= 3);
+
+        assertEquals(Emerald.class, sorted.get(0).get().getDeclaringClass());
+        assertEquals(Green.class, sorted.get(1).get().getDeclaringClass());
+        assertEquals(Color.class, sorted.get(2).get().getDeclaringClass());
+    }
+
     @Test
     /**
      *  For https://issues.apache.org/jira/browse/OPENEJB-1063
@@ -176,4 +215,22 @@ public class AnnotationDeployerTest {
         }
     }
 
+    @Resource
+    public static class Color {
+        @Resource
+        public void color(){}
+    }
+
+    @Resource
+    public static class Green extends Color {
+        @Resource
+        public void green(){}
+    }
+
+    @Resource
+    public static class Emerald extends Green {
+        @Resource
+        public void emerald(){}
+    }
+
 }

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessPoolStatsTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessPoolStatsTest.java?rev=1086449&r1=1086448&r2=1086449&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessPoolStatsTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/core/stateless/StatelessPoolStatsTest.java
 Tue Mar 29 00:15:05 2011
@@ -26,6 +26,7 @@ import org.apache.openejb.config.Configu
 import org.apache.openejb.core.ivm.naming.InitContextFactory;
 import org.apache.openejb.jee.EjbJar;
 import org.apache.openejb.jee.StatelessBean;
+import org.apache.openejb.test.util.Asserts;
 
 import javax.annotation.PreDestroy;
 import javax.annotation.Resource;
@@ -187,28 +188,11 @@ public class StatelessPoolStatsTest exte
     }
 
     public static void assertEquals(List<?> expectedList, List<?> actualList) {
-        final Iterator<?> expected = expectedList.iterator();
-        final Iterator<?> actual = actualList.iterator();
-
-        while(expected.hasNext() && actual.hasNext()) {
-            assertEquals(expected.next(), actual.next());
-        }
-
-        assertEquals(expected.hasNext(), actual.hasNext());
+        Asserts.assertEquals(expectedList, actualList);
     }
 
     public static void assertEquals(Map<?,?> expectedMap, Map<?,?> actualMap) {
-        final Iterator<? extends Map.Entry<?, ?>> expectedIt = 
expectedMap.entrySet().iterator();
-        final Iterator<? extends Map.Entry<?, ?>> actualIt = 
actualMap.entrySet().iterator();
-
-        while (expectedIt.hasNext() && actualIt.hasNext()) {
-            final Map.Entry<?, ?> expected = expectedIt.next();
-            final Map.Entry<?, ?> actual = actualIt.next();
-            assertEquals("key", expected.getKey(), actual.getKey());
-            assertEquals(expected.getKey().toString(), expected.getValue(), 
actual.getValue());
-        }
-
-        assertEquals(expectedIt.hasNext(), actualIt.hasNext());
+        Asserts.assertEquals(expectedMap, actualMap);
     }
 
     /**

Modified: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/interceptors/FullyInterceptedTest.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/interceptors/FullyInterceptedTest.java?rev=1086449&r1=1086448&r2=1086449&view=diff
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/interceptors/FullyInterceptedTest.java
 (original)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/interceptors/FullyInterceptedTest.java
 Tue Mar 29 00:15:05 2011
@@ -25,6 +25,7 @@ import org.apache.openejb.jee.NamedMetho
 import org.apache.openejb.jee.StatelessBean;
 import org.apache.openejb.junit.ApplicationComposer;
 import org.apache.openejb.junit.Module;
+import org.apache.openejb.test.util.Asserts;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
@@ -77,7 +78,7 @@ public class FullyInterceptedTest extend
         expected.add("businessMethod");
 
         List<String> actual = fullyIntercepted.businessMethod();
-        assert expected.equals(actual) : "Expected " + expected + ", but got " 
+ actual;
+        Asserts.assertEquals(expected, actual);
     }
 
     @Test
@@ -95,6 +96,6 @@ public class FullyInterceptedTest extend
         expected.add("methodWithDefaultInterceptorsExcluded");
 
         List<String> actual = 
fullyIntercepted.methodWithDefaultInterceptorsExcluded();
-        assert expected.equals(actual) : "Expected " + expected + ", but got " 
+ actual;
+        Asserts.assertEquals(expected, actual);
     }
 }

Added: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/test/util/Asserts.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/test/util/Asserts.java?rev=1086449&view=auto
==============================================================================
--- 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/test/util/Asserts.java
 (added)
+++ 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/test/util/Asserts.java
 Tue Mar 29 00:15:05 2011
@@ -0,0 +1,53 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openejb.test.util;
+
+import junit.framework.Assert;
+
+import java.util.Iterator;
+import java.util.Map;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class Asserts {
+    public static void assertEquals(Iterable<?> expectedList, Iterable<?> 
actualList) {
+        final Iterator<?> expected = expectedList.iterator();
+        final Iterator<?> actual = actualList.iterator();
+
+        while (expected.hasNext() && actual.hasNext()) {
+            Assert.assertEquals(expected.next(), actual.next());
+        }
+
+        Assert.assertEquals(expected.hasNext(), actual.hasNext());
+    }
+
+    public static void assertEquals(Map<?, ?> expectedMap, Map<?, ?> 
actualMap) {
+        final Iterator<? extends Map.Entry<?, ?>> expectedIt = 
expectedMap.entrySet().iterator();
+        final Iterator<? extends Map.Entry<?, ?>> actualIt = 
actualMap.entrySet().iterator();
+
+        while (expectedIt.hasNext() && actualIt.hasNext()) {
+            final Map.Entry<?, ?> expected = expectedIt.next();
+            final Map.Entry<?, ?> actual = actualIt.next();
+            Assert.assertEquals("key", expected.getKey(), actual.getKey());
+            Assert.assertEquals(expected.getKey().toString(), 
expected.getValue(), actual.getValue());
+        }
+
+        Assert.assertEquals(expectedIt.hasNext(), actualIt.hasNext());
+    }
+
+}

Propchange: 
openejb/trunk/openejb3/container/openejb-core/src/test/java/org/apache/openejb/test/util/Asserts.java
------------------------------------------------------------------------------
    svn:eol-style = native


Reply via email to