You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2014/09/23 19:45:13 UTC

svn commit: r1627097 - in /tomee/tomee/trunk: ./ arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/ arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/ arquillian/arquilli...

Author: andygumbrecht
Date: Tue Sep 23 17:45:12 2014
New Revision: 1627097

URL: http://svn.apache.org/r1627097
Log:
TOMEE-1359 - TomEEInjectionEnricher - Returns a better resolution if found multiple times. Works for known failing tests in Java 7 and not Java 8
This is for review - Test case to follow.


Replace uses of 'instanceof' with class.isInstance.
IO.java - Do not return in a finally block.
Minor code cleanups & typos.

Modified:
    tomee/tomee/trunk/   (props changed)
    tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java
    tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
    tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/   (props changed)
    tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
    tomee/tomee/trunk/arquillian/arquillian-tomee-common/pom.xml
    tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java
    tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java
    tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java
    tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/AServlet.java
    tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainerTest.java
    tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MovieController.java
    tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java
    tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java

Propchange: tomee/tomee/trunk/
------------------------------------------------------------------------------
  Merged /tomee/tomee/branches/tomee-1.7.x:r1626990

Modified: tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/deployment/DeploymentExceptionObserver.java Tue Sep 23 17:45:12 2014
@@ -34,8 +34,8 @@ public class DeploymentExceptionObserver
 
         Throwable current = t.getCause();
         while (current != null) {
-            if (current instanceof Exception) {
-                PARENT_EXCEPTIONS.put(current.getClass(), (Exception) current);
+            if (Exception.class.isInstance(current)) {
+                PARENT_EXCEPTIONS.put(current.getClass(), Exception.class.cast(current));
             }
             if (current.getCause() != current) {
                 current = current.getCause();

Modified: tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-common/src/main/java/org/apache/openejb/arquillian/common/enrichment/OpenEJBEnricher.java Tue Sep 23 17:45:12 2014
@@ -71,12 +71,12 @@ public final class OpenEJBEnricher {
                 }
                 OWBInjector.inject(bm, testInstance, cc);
             } catch (final Throwable t) {
-                LOGGER.log(Level.SEVERE, "Can't inject in " + testInstance.getClass(), t);
-                if (t instanceof RuntimeException) {
-                    throw (RuntimeException) t;
+                LOGGER.log(Level.SEVERE, "Failed injection on: " + testInstance.getClass(), t);
+                if (RuntimeException.class.isInstance(t)) {
+                    throw RuntimeException.class.cast(t);
                 }
-                if (t instanceof Exception) {
-                    throw new OpenEJBRuntimeException((Exception) t);
+                if (Exception.class.isInstance(t)) {
+                    throw new OpenEJBRuntimeException(Exception.class.cast(t));
                 }
                 // ignoring other cases for the moment, let manage some OWB API change without making all tests failing
             }

Propchange: tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/
------------------------------------------------------------------------------
--- svn:ignore (original)
+++ svn:ignore Tue Sep 23 17:45:12 2014
@@ -1,2 +1,3 @@
 *.iml
 target
+.idea

Modified: tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-openejb-embedded-5/src/main/java/org/apache/openejb/arquillian/openejb/OpenEJBDeployableContainer.java Tue Sep 23 17:45:12 2014
@@ -171,7 +171,7 @@ public class OpenEJBDeployableContainer 
         configurationFactory = (ConfigurationFactory) SystemInstance.get().getComponent(OpenEjbConfigurationFactory.class);
 
         if ("true".equalsIgnoreCase(PROPERTIES.getProperty(OpenEjbContainer.OPENEJB_EMBEDDED_REMOTABLE))
-                && SystemInstance.get().getComponent(WebAppBuilder.class) == null) {
+            && SystemInstance.get().getComponent(WebAppBuilder.class) == null) {
             SystemInstance.get().setComponent(WebAppBuilder.class, new LightweightWebAppBuilder());
         }
 
@@ -239,8 +239,8 @@ public class OpenEJBDeployableContainer 
         }
 
         final ClassLoader cl = appContext.get().getClassLoader();
-        if (cl instanceof SWClassLoader) {
-            ((SWClassLoader) cl).close();
+        if (SWClassLoader.class.isInstance(cl)) {
+            SWClassLoader.class.cast(cl).close();
         }
 
         try {

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-common/pom.xml
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-common/pom.xml?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-common/pom.xml (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-common/pom.xml Tue Sep 23 17:45:12 2014
@@ -54,6 +54,11 @@
       <version>${version.arquillian}</version>
       <scope>provided</scope>
     </dependency>
+    <dependency>
+      <groupId>org.apache.openwebbeans</groupId>
+      <artifactId>openwebbeans-impl</artifactId>
+      <scope>provided</scope>
+    </dependency>
 
     <dependency>
       <groupId>org.apache.openejb</groupId>

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/IO.java Tue Sep 23 17:45:12 2014
@@ -226,17 +226,17 @@ public class IO {
             return null;
         }
         try {
-            if (closeable instanceof Flushable) {
-                ((Flushable) closeable).flush();
+            if (Flushable.class.isInstance(closeable)) {
+                Flushable.class.cast(closeable).flush();
             }
         } catch (final IOException e) {
             try {
                 closeable.close();
             } catch (final IOException e2) {
                 // no-op
-            } finally {
-                return e;
             }
+
+            return e;
         }
         try {
             closeable.close();

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/RemoteInitialContextObserver.java Tue Sep 23 17:45:12 2014
@@ -123,7 +123,7 @@ public class RemoteInitialContextObserve
             }
 
             if (err != null) {
-                if (err instanceof InvocationTargetException) {
+                if (InvocationTargetException.class.isInstance(err)) {
                     throw err.getCause();
                 }
                 throw err;

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-common/src/main/java/org/apache/openejb/arquillian/common/TomEEInjectionEnricher.java Tue Sep 23 17:45:12 2014
@@ -28,6 +28,10 @@ import org.jboss.arquillian.test.spi.Tes
 import org.jboss.arquillian.test.spi.TestEnricher;
 
 import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.List;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
@@ -46,13 +50,90 @@ public class TomEEInjectionEnricher impl
 
     private AppContext getAppContext(final String className) {
         final ContainerSystem containerSystem = SystemInstance.get().getComponent(ContainerSystem.class);
-        for (final AppContext app : containerSystem.getAppContexts()) {
+        final List<AppContext> appContexts = containerSystem.getAppContexts();
+
+        final int size = appContexts.size();
+        if (size == 1) {
+            return appContexts.get(0);
+        }
+
+        final List<AppContext> found = new ArrayList<AppContext>(size);
+
+        for (final AppContext app : appContexts) {
             final BeanContext context = containerSystem.getBeanContext(app.getId() + "_" + className);
             if (context != null) {
-                return app;
+                found.add(app);
             }
         }
 
+        if (found.size() > 0) {
+
+            Collections.sort(found, new Comparator<AppContext>() {
+
+                /**
+                 * If multiple apps are found that contain the test class then a best guess effort needs to be made
+                 * to find the context that best matches the test class application.
+                 *
+                 * @param ac1 AppContext
+                 * @param ac2 AppContext
+                 * @return int
+                 */
+                @Override
+                public int compare(final AppContext ac1, final AppContext ac2) {
+                    int c = 0;
+
+                    if (isBeanManagerInUse(ac1) && !isBeanManagerInUse(ac2)) {
+                        c--;
+                    } else if (!isBeanManagerInUse(ac1) && isBeanManagerInUse(ac2)) {
+                        c++;
+                    }
+
+                    if (ac1.isCdiEnabled() && !ac2.isCdiEnabled()) {
+                        c--;
+                    } else if (!ac1.isCdiEnabled() && ac2.isCdiEnabled()) {
+                        c++;
+                    }
+
+                    int size1 = ac1.getBeanContexts().size();
+                    int size2 = ac2.getBeanContexts().size();
+                    if (size1 > size2) {
+                        c--;
+                    } else if (size2 > size1) {
+                        c++;
+                    }
+
+                    size1 = ac1.getBindings().size();
+                    size2 = ac2.getBindings().size();
+                    if (size1 > size2) {
+                        c--;
+                    } else if (size2 > size1) {
+                        c++;
+                    }
+
+                    size1 = ac1.getWebContexts().size();
+                    size2 = ac2.getWebContexts().size();
+                    if (size1 > size2) {
+                        c--;
+                    } else if (size2 > size1) {
+                        c++;
+                    }
+
+                    return c;
+                }
+
+                private boolean isBeanManagerInUse(final AppContext ac) {
+                    try {
+                        return ac.getWebBeansContext().getBeanManagerImpl().isInUse();
+                    } catch (final Exception e) {
+                        return false;
+                    }
+                }
+            });
+
+            //Return the most likely candidate
+            return found.get(0);
+        }
+
         Logger.getLogger(TomEEInjectionEnricher.class.getName()).log(Level.WARNING, "Failed to find AppContext for: " + className);
 
         return null;

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/AServlet.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/AServlet.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/AServlet.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/AServlet.java Tue Sep 23 17:45:12 2014
@@ -24,9 +24,9 @@ import javax.servlet.http.HttpServletReq
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 
-@WebServlet(urlPatterns = "/a-servlet")
+@WebServlet("/a-servlet")
 public class AServlet extends HttpServlet {
-    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+    protected void service(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
         resp.getWriter().write("ok=true");
     }
 }

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainerTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainerTest.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainerTest.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-embedded/src/test/java/org/apache/openejb/arquillian/embedded/EmbeddedTomEEContainerTest.java Tue Sep 23 17:45:12 2014
@@ -40,7 +40,7 @@ import static org.junit.Assert.assertNot
 public class EmbeddedTomEEContainerTest {
     @Deployment
     public static WebArchive createDeployment() {
-        return ShrinkWrap.create(WebArchive.class, "test.war")
+        return ShrinkWrap.create(WebArchive.class, "EmbeddedTomEEContainerTest.war")
                 .addClasses(AnEJB.class, AServlet.class, ARestService.class, AnApp.class)
                 .setWebXML(new StringAsset(Descriptors.create(WebAppDescriptor.class).version("3.0").exportAsString()));
     }
@@ -58,8 +58,9 @@ public class EmbeddedTomEEContainerTest 
 
     @Test
     public void servletIsDeployed() throws Exception {
-        final String read = IOUtils.toString(new URL(url.toExternalForm() + "a-servlet").openStream());
-        assertEquals("ok=true", read);
+        final String url = this.url.toExternalForm() + "a-servlet";
+        final String read = IOUtils.toString(new URL(url).openStream());
+        assertEquals("Failed to find: " + url,"ok=true", read);
     }
 
     @Test

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MovieController.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MovieController.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MovieController.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/main/java/org/superbiz/moviefun/MovieController.java Tue Sep 23 17:45:12 2014
@@ -214,7 +214,7 @@ public class MovieController implements 
         }
 
         String getStringKey(final long value) {
-            final StringBuffer sb = new StringBuffer();
+            final StringBuilder sb = new StringBuilder();
             sb.append(value);
             return sb.toString();
         }
@@ -223,8 +223,8 @@ public class MovieController implements 
             if (object == null) {
                 return null;
             }
-            if (object instanceof Movie) {
-                final Movie o = (Movie) object;
+            if (Movie.class.isInstance(object)) {
+                final Movie o = Movie.class.cast(object);
                 return getStringKey(o.getId());
             } else {
                 throw new IllegalArgumentException("object " + object + " is of type " + object.getClass().getName() + "; expected type: " + MovieController.class.getName());

Modified: tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java (original)
+++ tomee/tomee/trunk/arquillian/arquillian-tomee-moviefun-example/src/test/java/org/superbiz/moviefun/MoviesTest.java Tue Sep 23 17:45:12 2014
@@ -39,10 +39,10 @@ public class MoviesTest {
         final Properties props = new Properties();
         props.setProperty(DeploymentFilterable.CLASSPATH_INCLUDE, ".*arquillian-tomee-moviefun-example.*"); // arquillian-tomee excluded by default
         ejbContainer = EJBContainer.createEJBContainer(props);
-        Object object = ejbContainer.getContext().lookup("java:global/arquillian-tomee-moviefun-example/Movies!org.superbiz.moviefun.MoviesRemote");
+        final Object object = ejbContainer.getContext().lookup("java:global/arquillian-tomee-moviefun-example/Movies!org.superbiz.moviefun.MoviesRemote");
 
-        assertTrue(object instanceof MoviesRemote);
-        movies = (MoviesRemote) object;
+        assertTrue(MoviesRemote.class.isInstance(object));
+        movies = MoviesRemote.class.cast(object);
     }
 
     @AfterClass
@@ -60,7 +60,7 @@ public class MoviesTest {
 
     @Test
     public void testShouldAddAMovie() throws Exception {
-        Movie movie = new Movie();
+        final Movie movie = new Movie();
         movie.setDirector("Michael Bay");
         movie.setGenre("Action");
         movie.setRating(9);
@@ -69,7 +69,7 @@ public class MoviesTest {
         movies.addMovie(movie);
 
         assertEquals(1, movies.count());
-        List<Movie> moviesFound = movies.findByTitle("Bad Boys");
+        final List<Movie> moviesFound = movies.findByTitle("Bad Boys");
 
         assertEquals(1, moviesFound.size());
         assertEquals("Michael Bay", moviesFound.get(0).getDirector());

Modified: tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java (original)
+++ tomee/tomee/trunk/arquillian/ziplock/src/main/java/org/apache/ziplock/IO.java Tue Sep 23 17:45:12 2014
@@ -174,8 +174,8 @@ public class IO {
             return;
         }
         try {
-            if (closeable instanceof Flushable) {
-                ((Flushable) closeable).flush();
+            if (Flushable.class.isInstance(closeable)) {
+                Flushable.class.cast(closeable).flush();
             }
         } catch (final IOException e) {
             // no-op

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/Assembler.java Tue Sep 23 17:45:12 2014
@@ -1285,7 +1285,14 @@ public class Assembler extends Assembler
         WebBeansContext webBeansContext = appContext.get(WebBeansContext.class);
         if (webBeansContext == null) {
             webBeansContext = appContext.getWebBeansContext();
+        }else{
+            if(null == appContext.getWebBeansContext()){
+                appContext.setWebBeansContext(webBeansContext);
         }
+
+            return;
+        }
+
         if (webBeansContext == null) {
 
             final Map<Class<?>, Object> services = new HashMap<Class<?>, Object>();
@@ -1308,11 +1315,11 @@ public class Assembler extends Assembler
 
             appContext.setCdiEnabled(false);
             OpenEJBTransactionService.class.cast(services.get(TransactionService.class)).setWebBeansContext(webBeansContext);
-        }
 
         appContext.set(WebBeansContext.class, webBeansContext);
         appContext.setWebBeansContext(webBeansContext);
     }
+    }
 
     private TransactionPolicyFactory createTransactionPolicyFactory(final EjbJarInfo ejbJar, final ClassLoader classLoader) {
         TransactionPolicyFactory factory = null;

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiBuilder.java Tue Sep 23 17:45:12 2014
@@ -60,7 +60,7 @@ public class CdiBuilder {
         singletonService.initialize(new StartupObject(appContext, appInfo, allDeployments, webContext));
     }
 
-    public static ThreadSingletonService initializeOWB(final ClassLoader classLoader) {
+    public static synchronized ThreadSingletonService initializeOWB(final ClassLoader classLoader) {
         logger.info("Created new singletonService " + SINGLETON_SERVICE);
         SystemInstance.get().setComponent(ThreadSingletonService.class, SINGLETON_SERVICE);
         try {

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiPlugin.java Tue Sep 23 17:45:12 2014
@@ -329,7 +329,7 @@ public class CdiPlugin extends AbstractO
         final BeanManagerImpl beanManager = webBeansContext.getBeanManagerImpl();
 
         //Fires ProcessManagedBean
-        webBeansContext.getBeanManagerImpl().fireEvent(new GProcessSessionBean(Bean.class.cast(bean), annotatedType, bc.getEjbName(), bean.getEjbType()), true);
+        beanManager.fireEvent(new GProcessSessionBean(Bean.class.cast(bean), annotatedType, bc.getEjbName(), bean.getEjbType()), true);
         webBeansUtil.inspectErrorStack("There are errors that are added by ProcessSessionBean event observers for managed beans. Look at logs for further details");
 
         //Fires ProcessProducerMethod

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/CdiScanner.java Tue Sep 23 17:45:12 2014
@@ -73,11 +73,11 @@ public class CdiScanner implements Scann
 
     @Override
     public void init(final Object object) {
-        if (!(object instanceof StartupObject)) {
+        if (!StartupObject.class.isInstance (object)) {
             return;
         }
 
-        final StartupObject startupObject = (StartupObject) object;
+        final StartupObject startupObject = StartupObject.class.cast(object);
         final AppInfo appInfo = startupObject.getAppInfo();
         final ClassLoader classLoader = startupObject.getClassLoader();
         final ClassLoaderComparator comparator;
@@ -115,7 +115,7 @@ public class CdiScanner implements Scann
             }
 
             // fail fast
-            final StringBuilder errors = new StringBuilder("You can't define multiple times the same class in beans.xml: ");
+            final StringBuilder errors = new StringBuilder("You must not declare the same class multiple times in the beans.xml: ");
             if (addErrors(errors, "alternative classes", beans.duplicatedAlternativeClasses)
                 || addErrors(errors, "alternative stereotypes", beans.duplicatedAlternativeStereotypes)
                 || addErrors(errors, "decorators", beans.duplicatedDecorators)

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java?rev=1627097&r1=1627096&r2=1627097&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/cdi/OpenEJBLifecycle.java Tue Sep 23 17:45:12 2014
@@ -123,10 +123,10 @@ public class OpenEJBLifecycle implements
 
     @Override
     public void startApplication(final Object startupObject) {
-        if (startupObject instanceof ServletContextEvent) {
-            startServletContext((ServletContext) getServletContext(startupObject)); // TODO: check it is relevant
+        if (ServletContextEvent.class.isInstance( startupObject)) {
+            startServletContext(ServletContext.class.cast(getServletContext(startupObject))); // TODO: check it is relevant
             return;
-        } else if (!(startupObject instanceof StartupObject)) {
+        } else if (!StartupObject.class.isInstance(startupObject)) {
             logger.debug("startupObject is not of StartupObject type; ignored");
             return;
         }
@@ -176,7 +176,7 @@ public class OpenEJBLifecycle implements
                 //Scanning process
                 logger.debug("Scanning classpaths for beans artifacts.");
 
-                if (scannerService instanceof CdiScanner) {
+                if (CdiScanner.class.isInstance(scannerService)) {
                     cdiScanner = CdiScanner.class.cast(scannerService);
                     cdiScanner.setContext(webBeansContext);
                     cdiScanner.init(startupObject);
@@ -284,8 +284,8 @@ public class OpenEJBLifecycle implements
             }
 
             //Fire shut down
-            if (beanManager instanceof WebappBeanManager) {
-                ((WebappBeanManager) beanManager).beforeStop();
+            if (WebappBeanManager.class.isInstance(beanManager)) {
+                WebappBeanManager.class.cast(beanManager).beforeStop();
             }
             this.beanManager.fireEvent(new BeforeShutdownImpl(), true);
 
@@ -419,14 +419,14 @@ public class OpenEJBLifecycle implements
     }
 
     /**
-     * Returns servelt context otherwise throws exception.
+     * Returns servlet context otherwise throws exception.
      *
      * @param object object
      * @return servlet context
      */
     private Object getServletContext(Object object) {
-        if (object instanceof ServletContextEvent) {
-            object = ((ServletContextEvent) object).getServletContext();
+        if (ServletContextEvent.class.isInstance(object)) {
+            object = ServletContextEvent.class.cast(object).getServletContext();
             return object;
         }
         return object;