[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