You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/06/24 23:35:57 UTC

svn commit: r1353337 - /openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java

Author: rmannibucau
Date: Sun Jun 24 21:35:57 2012
New Revision: 1353337

URL: http://svn.apache.org/viewvc?rev=1353337&view=rev
Log:
OPENEJB-1844 invoking bm.createAnnotatedType() from processannotatedtype (in an extension) doesn't work if the type is not already processed

Modified:
    openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java

Modified: openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java?rev=1353337&r1=1353336&r2=1353337&view=diff
==============================================================================
--- openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java (original)
+++ openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java Sun Jun 24 21:35:57 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.openejb.cdi;
 
+import java.util.LinkedHashMap;
+import java.util.Map;
 import org.apache.openejb.AppContext;
 import org.apache.openejb.BeanContext;
 import org.apache.openejb.OpenEJBRuntimeException;
@@ -53,12 +55,8 @@ import javax.servlet.ServletContext;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.jsp.JspApplicationContext;
 import javax.servlet.jsp.JspFactory;
-import java.io.BufferedInputStream;
 import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
 import java.lang.reflect.Method;
-import java.net.URL;
 import java.util.ArrayList;
 import java.util.HashSet;
 import java.util.List;
@@ -125,30 +123,6 @@ public class OpenEJBLifecycle implements
         return this.beanManager;
     }
 
-    private String readContents(URL resource) throws IOException {
-        InputStream in = resource.openStream();
-        BufferedInputStream reader = null;
-        StringBuilder sb = new StringBuilder();
-
-        try {
-            reader = new BufferedInputStream(in);
-
-            int b = reader.read();
-            while (b != -1) {
-                sb.append((char) b);
-                b = reader.read();
-            }
-
-            return sb.toString().trim();
-        } finally {
-            try {
-                in.close();
-                reader.close();
-            } catch (Exception e) {
-            }
-        }
-    }
-
     @Override
     public void startApplication(Object startupObject)
     {
@@ -388,20 +362,23 @@ public class OpenEJBLifecycle implements
             }
         }
         // Start from the class
-        for (Class<?> implClass : managedBeans) {
+        final Map<Class<?>, AnnotatedType<?>> annotatedTypes = new LinkedHashMap<Class<?>, AnnotatedType<?>>();
+        for (Class<?> implClass : managedBeans) { // create all annotated types first to be sure extensions can use it during the fire
             //Define annotation type
-            AnnotatedType<?> annotatedType = webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass);
-
+            annotatedTypes.put(implClass, webBeansContext.getAnnotatedElementFactory().newAnnotatedType(implClass));
+        }
+        for (Map.Entry<Class<?>, AnnotatedType<?>> implClass : annotatedTypes.entrySet()) {
             //Fires ProcessAnnotatedType
-            ProcessAnnotatedTypeImpl<?> processAnnotatedEvent = webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(annotatedType);
+            ProcessAnnotatedTypeImpl<?> processAnnotatedEvent = webBeansContext.getWebBeansUtil().fireProcessAnnotatedTypeEvent(implClass.getValue());
 
             //if veto() is called
             if (processAnnotatedEvent.isVeto()) {
                 continue;
             }
 
-            deployer.defineManagedBean((Class<Object>) implClass, (ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
+            deployer.defineManagedBean((Class<Object>) implClass.getKey(), (ProcessAnnotatedTypeImpl<Object>) processAnnotatedEvent);
         }
+        annotatedTypes.clear();
     }
 
     @Override
@@ -526,6 +503,7 @@ public class OpenEJBLifecycle implements
 
     protected void afterStartApplication(final Object startupObject)
     {
+        // no-op
     }
 
     public void startServletContext(final ServletContext servletContext) {