[webbeans-commits] Webbeans SVN: r922 - in ri/trunk/webbeans-ri/src: test/java/org/jboss/webbeans/test and 4 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Tue Jan 13 12:14:25 EST 2009


Author: pete.muir at jboss.org
Date: 2009-01-13 12:14:25 -0500 (Tue, 13 Jan 2009)
New Revision: 922

Added:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/integration/
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/integration/TransactionIntegrationTest.java
Removed:
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EnterpriseBeanTest.java
Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractEjbEmbeddableTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/EnterpriseBeanLifecycleTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java
   ri/trunk/webbeans-ri/src/test/resources/log4j.xml
Log:
 add tx integration tests

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java	2009-01-13 16:31:13 UTC (rev 921)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bean/AbstractProducerBean.java	2009-01-13 17:14:25 UTC (rev 922)
@@ -235,7 +235,7 @@
       {
          DependentContext.INSTANCE.setActive(true);
          T instance = produceInstance();
-         checkReturnValue(instance);
+         //checkReturnValue(instance);
          return instance;
       }
       finally

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractEjbEmbeddableTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractEjbEmbeddableTest.java	2009-01-13 16:31:13 UTC (rev 921)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractEjbEmbeddableTest.java	2009-01-13 17:14:25 UTC (rev 922)
@@ -4,17 +4,23 @@
 import java.util.Properties;
 
 import javax.ejb.EJBContainer;
+import javax.naming.Context;
+import javax.naming.InitialContext;
 
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.AfterSuite;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.BeforeSuite;
 
 
 
 public abstract class AbstractEjbEmbeddableTest extends AbstractTest
 {
+   
+   private EJBContainer ejbContainer;
 
-   @AfterClass
-   public void afterClass()
+   @AfterSuite
+   public void afterClass() throws Exception
    {
       EJBContainer current = EJBContainer.getCurrentEJBContainer();
       if(current != null)
@@ -23,16 +29,29 @@
       }
    }
    
-   @BeforeClass
-   public void beforeClass()
+   @BeforeSuite
+   public void beforeClass() throws Exception
    {
       Properties properties = new Properties();
       String module = getURLToTestClasses(getTestClassesPath());
       properties.setProperty(EJBContainer.EMBEDDABLE_MODULES_PROPERTY, module);
-      
-      EJBContainer.createEJBContainer(properties);
+      this.ejbContainer = EJBContainer.createEJBContainer(properties);
    }
    
+   @BeforeMethod
+   public void before() throws Exception
+   {
+      super.before();
+      webBeansBootstrap.getNaming().setContext(new InitialContext());
+   }
+   
+   @AfterMethod
+   public void after() throws Exception
+   {
+      webBeansBootstrap.getNaming().setContext(null);
+   }
+   
+   
    protected String getTestClassesPath()
    {
       return "org/jboss/webbeans/test";
@@ -45,4 +64,9 @@
       return s.substring(0, s.length() - path.length());
    }
    
+   public Context getContext()
+   {
+      return webBeansBootstrap.getNaming().getContext();
+   }
+   
 }

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java	2009-01-13 16:31:13 UTC (rev 921)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/AbstractTest.java	2009-01-13 17:14:25 UTC (rev 922)
@@ -38,7 +38,7 @@
          AbstractTest.deactivateDependentContext();
       }
       
-      public final void run()
+      public final void run() throws Exception
       {
          try
          {
@@ -51,7 +51,7 @@
          }
       }
       
-      protected abstract void execute();
+      protected abstract void execute() throws Exception;
       
    }
    

Deleted: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EnterpriseBeanTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EnterpriseBeanTest.java	2009-01-13 16:31:13 UTC (rev 921)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/EnterpriseBeanTest.java	2009-01-13 17:14:25 UTC (rev 922)
@@ -1,39 +0,0 @@
-package org.jboss.webbeans.test;
-
-import javax.ejb.EJBException;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-
-import org.jboss.webbeans.examples.Translator;
-import org.testng.annotations.Test;
-
-
-
-
-public class EnterpriseBeanTest extends AbstractEjbEmbeddableTest
-{
-
-   @Test(expectedExceptions=UnsupportedOperationException.class)
-   public void test() throws NamingException
-   {
-      
-      InitialContext ctx = new InitialContext();
-      Translator translator = (Translator) ctx.lookup("SentenceTranslator/local");
-      try
-      {
-         translator.translate("foo");
-      }
-      catch (EJBException e)
-      {
-         if (e.getCausedByException() instanceof RuntimeException)
-         {
-            throw (RuntimeException) e.getCausedByException();
-         }
-         else 
-         {
-            throw new RuntimeException(e.getCausedByException());
-         }
-      }
-   }
-   
-}

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/EnterpriseBeanLifecycleTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/EnterpriseBeanLifecycleTest.java	2009-01-13 16:31:13 UTC (rev 921)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/ejb/EnterpriseBeanLifecycleTest.java	2009-01-13 17:14:25 UTC (rev 922)
@@ -3,7 +3,7 @@
 import javax.webbeans.UnremovedException;
 
 import org.jboss.webbeans.bean.EnterpriseBean;
-import org.jboss.webbeans.test.AbstractTest;
+import org.jboss.webbeans.test.AbstractEjbEmbeddableTest;
 import org.jboss.webbeans.test.SpecAssertion;
 import org.jboss.webbeans.test.SpecVersion;
 import org.jboss.webbeans.test.ejb.valid.GoodDoggie;
@@ -24,7 +24,7 @@
  */
 
 @SpecVersion("20081206")
-public class EnterpriseBeanLifecycleTest extends AbstractTest
+public class EnterpriseBeanLifecycleTest extends AbstractEjbEmbeddableTest
 {
    /**
     * Initializes the EJB descriptors for the EJBs about to be used
@@ -51,7 +51,7 @@
     * When the destroy() method is called, the Web Bean manager calls the Web
     * Bean remove method upon the proxy
     */
-   @Test(groups = { "enterpriseBeans", "clientProxy", "lifecycle", "stub"})
+   @Test(groups = { "enterpriseBeans", "clientProxy", "lifecycle"})
    @SpecAssertion(section = "6.4")
    public void testRemoveMethodCalled()
    {

Added: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/integration/TransactionIntegrationTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/integration/TransactionIntegrationTest.java	                        (rev 0)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/integration/TransactionIntegrationTest.java	2009-01-13 17:14:25 UTC (rev 922)
@@ -0,0 +1,55 @@
+package org.jboss.webbeans.test.integration;
+
+import javax.transaction.Status;
+import javax.transaction.UserTransaction;
+import javax.webbeans.AnnotationLiteral;
+import javax.webbeans.Current;
+
+import org.jboss.webbeans.test.AbstractEjbEmbeddableTest;
+import org.jboss.webbeans.test.mock.MockWebBeanDiscovery;
+import org.testng.annotations.Test;
+
+public class TransactionIntegrationTest extends AbstractEjbEmbeddableTest
+{
+   
+   @Test
+   public void testTransactionLookup() throws Exception
+   {
+      new RunInDependentContext()
+      {
+
+         @Override
+         protected void execute() throws Exception
+         {
+            webBeansBootstrap.setWebBeanDiscovery(new MockWebBeanDiscovery());
+            webBeansBootstrap.boot();
+            UserTransaction userTransaction = manager.getInstanceByType(UserTransaction.class, new AnnotationLiteral<Current>() {});
+            assert userTransaction.getStatus() == Status.STATUS_NO_TRANSACTION;
+         }
+
+      
+      }.run();
+         
+   }
+   
+   @Test
+   public void testWBTransactionLookup() throws Exception
+   {
+      new RunInDependentContext()
+      {
+
+         @Override
+         protected void execute() throws Exception
+         {
+            webBeansBootstrap.setWebBeanDiscovery(new MockWebBeanDiscovery());
+            webBeansBootstrap.boot();
+            org.jboss.webbeans.transaction.UserTransaction userTransaction = manager.getInstanceByType(org.jboss.webbeans.transaction.UserTransaction.class, new AnnotationLiteral<Current>() {});
+            assert userTransaction.isNoTransaction();
+         }
+
+      
+      }.run();
+         
+   }
+   
+}


Property changes on: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/integration/TransactionIntegrationTest.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java	2009-01-13 16:31:13 UTC (rev 921)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java	2009-01-13 17:14:25 UTC (rev 922)
@@ -4,7 +4,15 @@
 
 import javax.annotation.Resource;
 import javax.ejb.EJB;
+import javax.naming.Context;
 import javax.persistence.PersistenceContext;
+import javax.transaction.HeuristicMixedException;
+import javax.transaction.HeuristicRollbackException;
+import javax.transaction.NotSupportedException;
+import javax.transaction.RollbackException;
+import javax.transaction.SystemException;
+import javax.transaction.TransactionManager;
+import javax.transaction.UserTransaction;
 import javax.webbeans.InjectionPoint;
 
 import org.jboss.webbeans.bootstrap.WebBeansBootstrap;
@@ -15,26 +23,108 @@
 import org.jboss.webbeans.context.SessionContext;
 import org.jboss.webbeans.context.beanmap.SimpleBeanMap;
 import org.jboss.webbeans.ejb.spi.EjbResolver;
+import org.jboss.webbeans.resource.DefaultNaming;
 import org.jboss.webbeans.resources.spi.Naming;
 import org.jboss.webbeans.resources.spi.ResourceLoader;
 
 public class MockBootstrap extends WebBeansBootstrap
 { 
    
-   private static final Naming MOCK_NAMING = new Naming()
+   public static class MockNaming implements Naming
    {
+      
+      private Context context;
+      
+      private Naming delegate;
+      
+      public MockNaming()
+      {
+         this.delegate = new DefaultNaming();
+      }
+      
+      public void setContext(Context context)
+      {
+         this.context = context;
+      }
+      
+      public Context getContext()
+      {
+         return context;
+      }
 
       public void bind(String key, Object value)
       {
-         // no-op
+         if (context != null)
+         {
+            delegate.bind(key, value);
+         }
       }
 
       public <T> T lookup(String name, Class<? extends T> expectedType)
       {
-         // No-op
-         return null;
+         if (context != null)
+         {
+            T instance = overrideLookup(name, expectedType);
+            if (instance == null)
+            {
+               instance = delegate.lookup(name, expectedType);
+            }
+            return instance;
+         }
+         else
+         {
+            return null;
+         }
       }
       
+      @SuppressWarnings("unchecked")
+      private <T> T overrideLookup(String name, Class<? extends T> expectedType)
+      {
+         // JBoss Embedded EJB 3.1 doesn't seem to bind this!
+         if (name.equals("java:comp/UserTransaction"))
+         {
+            final TransactionManager tm = delegate.lookup("java:/TransactionManager", TransactionManager.class);
+            return (T) new UserTransaction()
+            {
+
+               public void begin() throws NotSupportedException, SystemException
+               {
+                  tm.begin();
+               }
+
+               public void commit() throws RollbackException, HeuristicMixedException, HeuristicRollbackException, SecurityException, IllegalStateException, SystemException
+               {
+                  tm.commit();
+               }
+
+               public int getStatus() throws SystemException
+               {
+                  return tm.getStatus();
+               }
+
+               public void rollback() throws IllegalStateException, SecurityException, SystemException
+               {
+                  tm.rollback();
+               }
+
+               public void setRollbackOnly() throws IllegalStateException, SystemException
+               {
+                  tm.setRollbackOnly();
+               }
+
+               public void setTransactionTimeout(int seconds) throws SystemException
+               {
+                  tm.setTransactionTimeout(seconds);
+               }
+               
+            };
+         }
+         else
+         {
+            return null;
+         }
+      }
+      
    };
    
    private static final EjbResolver MOCK_EJB_RESOLVER = new EjbResolver()
@@ -80,10 +170,13 @@
    private WebBeanDiscovery webBeanDiscovery;
    private ResourceLoader resourceLoader;
    
+   private MockNaming mockNaming;
+   
    public MockBootstrap()
    {
       this.resourceLoader = new MockResourceLoader();
-      initManager(MOCK_NAMING, MOCK_EJB_RESOLVER, resourceLoader);
+      this.mockNaming = new MockNaming();
+      initManager(mockNaming, MOCK_EJB_RESOLVER, resourceLoader);
       registerStandardBeans();
       
       // Set up the mock contexts
@@ -117,4 +210,9 @@
       return resourceLoader;
    }
    
+   public MockNaming getNaming()
+   {
+      return mockNaming;
+   }
+   
 }

Modified: ri/trunk/webbeans-ri/src/test/resources/log4j.xml
===================================================================
--- ri/trunk/webbeans-ri/src/test/resources/log4j.xml	2009-01-13 16:31:13 UTC (rev 921)
+++ ri/trunk/webbeans-ri/src/test/resources/log4j.xml	2009-01-13 17:14:25 UTC (rev 922)
@@ -13,7 +13,7 @@
 
     <!-- ############### Embedded EJB3 #################  -->
     <category name="org.jboss">
-        <priority value="ERROR"/>
+        <priority value="INFO"/>
     </category>
     <category name="com.arjuna">
         <priority value="ERROR"/>
@@ -45,7 +45,7 @@
     <!-- ############### Web Beans logging ################### -->
 
     <category name="org.jboss.webbeans">
-        <priority value="WARN"/>
+        <priority value="INFO"/>
     </category>
     
     <root>




More information about the weld-commits mailing list