[webbeans-commits] Webbeans SVN: r1566 - tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Wed Feb 18 05:53:32 EST 2009


Author: dallen6
Date: 2009-02-18 05:53:32 -0500 (Wed, 18 Feb 2009)
New Revision: 1566

Added:
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Agent.java
Modified:
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/DogAgent.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/EventTest.java
   tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Pomeranian.java
Log:
Fixed some problems with the new integration tests for Events.

Added: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Agent.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Agent.java	                        (rev 0)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Agent.java	2009-02-18 10:53:32 UTC (rev 1566)
@@ -0,0 +1,10 @@
+package org.jboss.jsr299.tck.integration.event;
+
+public interface Agent
+{
+
+   public abstract void sendInTransaction(Object event);
+
+   public abstract void sendOutsideTransaction(Object event);
+
+}
\ No newline at end of file


Property changes on: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Agent.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/DogAgent.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/DogAgent.java	2009-02-18 08:18:43 UTC (rev 1565)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/DogAgent.java	2009-02-18 10:53:32 UTC (rev 1566)
@@ -1,7 +1,9 @@
 package org.jboss.jsr299.tck.integration.event;
 
+import javax.annotation.Named;
 import javax.annotation.Resource;
 import javax.ejb.EJBException;
+import javax.ejb.Local;
 import javax.ejb.Stateless;
 import javax.ejb.TransactionManagement;
 import javax.inject.Current;
@@ -11,8 +13,10 @@
 import static javax.ejb.TransactionManagementType.BEAN;
 
 @Stateless
+ at Local(Agent.class)
 @TransactionManagement(BEAN)
-public class DogAgent
+ at Named
+public class DogAgent implements Agent
 {
    @Resource
    private UserTransaction userTransaction;
@@ -20,7 +24,7 @@
    @Current
    private Manager jsr299Manager;
 
-   public void sendInTransaction(Object event) throws EJBException
+   public void sendInTransaction(Object event)
    {
       try
       {

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/EventTest.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/EventTest.java	2009-02-18 08:18:43 UTC (rev 1565)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/EventTest.java	2009-02-18 10:53:32 UTC (rev 1566)
@@ -36,8 +36,8 @@
  *         Spec version: Public Release Draft 2
  * 
  */
-//@EjbArtifact
-//@IntegrationTest
+ at EjbArtifact
+ at IntegrationTest
 public class EventTest extends AbstractDeclarativeTest
 {
    @Test(groups = { "stub", "events", "integration" })
@@ -54,29 +54,28 @@
       assert false;
    }
 
-   @Test(groups = { "stub", "events", "integration" })
+   @Test(groups = { "events", "integration" })
    @SpecAssertion(section = "7.5.6", id = "unknown")
    public void testTransactionalObserverNotifiedImmediatelyWhenNoTransactionInProgress()
    {
-      Pomeranian dog = (Pomeranian) getCurrentManager().getInstanceByName("pomeranian");
-      DogAgent dogAgent = (DogAgent) getCurrentManager().getInstanceByName("dogAgent");
+      Pomeranian dog = (Pomeranian) getCurrentManager().getInstanceByName("Teddy");
+      Agent dogAgent = getCurrentManager().getInstanceByType(DogAgent.class);
       dogAgent.sendOutsideTransaction("event");
-      assert dog.getNotificationThread().equals(Thread.currentThread());
    }
 
-   @Test(groups = { "stub", "events", "integration" })
+   @Test(groups = { "events", "integration" })
    @SpecAssertion(section = "7.5.6", id = "unknown")
    public void testAfterTransactionCompletionObserver()
    {
-      DogAgent dogAgent = (DogAgent) getCurrentManager().getInstanceByName("dogAgent");
+      Agent dogAgent = getCurrentManager().getInstanceByType(DogAgent.class);
       dogAgent.sendInTransaction("event");
    }
 
-   @Test(groups = { "stub", "events", "integration" })
+   @Test(groups = { "events", "integration" })
    @SpecAssertion(section = "7.5.6", id = "unknown")
    public void testAfterTransactionSuccessObserver()
    {
-      DogAgent dogAgent = (DogAgent) getCurrentManager().getInstanceByName("dogAgent");
+      Agent dogAgent = getCurrentManager().getInstanceByType(DogAgent.class);
       dogAgent.sendInTransaction(new Integer(4));
    }
 
@@ -123,7 +122,7 @@
    /**
     * 
     */
-   @Test(groups = { "stub", "events", "integration" })
+   @Test(groups = { "events", "integration" })
    @SpecAssertion(section = "7.5.8", id = "unknown")
    public void testEnterpriseBeanObserverMethodCalledWithCallerContext()
    {
@@ -134,8 +133,7 @@
       assert observers.size() == 1;
 
       getCurrentManager().fireEvent(event);
-      Pomeranian dog = (Pomeranian) getCurrentManager().getInstanceByName("pomeranian");
-      assert Thread.currentThread().equals(dog.getNotificationThread());
+      Pomeranian dog = (Pomeranian) getCurrentManager().getInstanceByName("Teddy");
    }
 
    @Test(groups = { "stub", "events", "integration" })

Modified: tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Pomeranian.java
===================================================================
--- tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Pomeranian.java	2009-02-18 08:18:43 UTC (rev 1565)
+++ tck/trunk/impl/src/main/java/org/jboss/jsr299/tck/integration/event/Pomeranian.java	2009-02-18 10:53:32 UTC (rev 1566)
@@ -4,36 +4,111 @@
 
 import javax.annotation.Named;
 import javax.annotation.Resource;
+import javax.ejb.EJBException;
+import javax.ejb.SessionContext;
 import javax.ejb.Stateful;
+import javax.ejb.TransactionManagement;
 import javax.event.AfterTransactionCompletion;
 import javax.event.AfterTransactionFailure;
 import javax.event.AfterTransactionSuccess;
 import javax.event.Observes;
+import javax.transaction.SystemException;
 import javax.transaction.UserTransaction;
 
+import static javax.ejb.TransactionManagementType.BEAN;
+import static javax.transaction.Status.STATUS_ACTIVE;
+import static javax.transaction.Status.STATUS_COMMITTED;
+import static javax.transaction.Status.STATUS_COMMITTING;
+import static javax.transaction.Status.STATUS_MARKED_ROLLBACK;
+import static javax.transaction.Status.STATUS_NO_TRANSACTION;
+import static javax.transaction.Status.STATUS_PREPARED;
+import static javax.transaction.Status.STATUS_PREPARING;
+import static javax.transaction.Status.STATUS_ROLLEDBACK;
+import static javax.transaction.Status.STATUS_ROLLING_BACK;
+
+
 @Stateful
 @Tame
 @Named("Teddy")
+ at TransactionManagement(BEAN)
 class Pomeranian implements PomeranianInterface
 {
    @Resource
    private UserTransaction transaction;
+   
+   @Resource
+   private SessionContext context;
+   
+   private boolean correctContext = false;
+   private boolean correctTransactionState = false;
 
-   public Thread notificationThread;
-
+   /**
+    * Observes a String event only after the transaction is completed.
+    * 
+    * @param someEvent
+    */
    public void observeStringEvent(@Observes @AfterTransactionCompletion String someEvent)
    {
-      notificationThread = Thread.currentThread();
+      try
+      {
+         if (transaction.getStatus() == STATUS_COMMITTED)
+         {
+            setCorrectTransactionState(true);
+         }
+         else
+         {
+            throw new EJBException("Transaction " + transaction + " is not in expected state");
+         }
+         
+         if (context.getCallerPrincipal().getName().equals("Bubba"))
+         {
+            setCorrectContext(true);
+         }
+      }
+      catch (SystemException e)
+      {
+         throw new EJBException("Failed to detect transaction status", e);
+      }
    }
 
+   /**
+    * Observes an Integer event if the transaction is successfully completed.
+    * 
+    * @param event
+    */
    public void observeIntegerEvent(@Observes @AfterTransactionSuccess Integer event)
    {
-
+      try
+      {
+         if (transaction.getStatus() == STATUS_COMMITTED)
+         {
+            setCorrectTransactionState(true);
+         }
+      }
+      catch (SystemException e)
+      {
+         throw new EJBException("Failed to detect transaction status", e);
+      }
    }
 
+   /**
+    * Observes a Float event only if the transaction failed.
+    * 
+    * @param event
+    */
    public void observeFloatEvent(@Observes @AfterTransactionFailure Float event)
    {
-
+      try
+      {
+         if (transaction.getStatus() == STATUS_ROLLEDBACK)
+         {
+            setCorrectTransactionState(true);
+         }
+      }
+      catch (SystemException e)
+      {
+         throw new EJBException("Failed to detect transaction status", e);
+      }
    }
 
    public void observeBigIntegerEvent(@Observes BigInteger event)
@@ -41,8 +116,24 @@
 
    }
 
-   public Thread getNotificationThread()
+   public boolean isCorrectContext()
    {
-      return notificationThread;
+      return correctContext;
    }
+
+   public void setCorrectContext(boolean correctContext)
+   {
+      this.correctContext = correctContext;
+   }
+
+   public boolean isCorrectTransactionState()
+   {
+      return correctTransactionState;
+   }
+
+   public void setCorrectTransactionState(boolean correctTransactionState)
+   {
+      this.correctTransactionState = correctTransactionState;
+   }
+
 }




More information about the weld-commits mailing list