[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Fri Dec 15 23:34:06 EST 2006
User: gavin
Date: 06/12/15 23:34:06
Modified: src/main/org/jboss/seam/core Events.java
Added: src/main/org/jboss/seam/core
LocalTransactionListener.java
TransactionListener.java
Log:
transaction success events
Revision Changes Path
1.15 +5 -0 jboss-seam/src/main/org/jboss/seam/core/Events.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Events.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Events.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- Events.java 16 Dec 2006 02:58:10 -0000 1.14
+++ Events.java 16 Dec 2006 04:34:06 -0000 1.15
@@ -121,6 +121,11 @@
Dispatcher.instance().scheduleEvent(type, 0l, null, null, parameters);
}
+ public void raiseTransactionSuccessEvent(String type, Object... parameters)
+ {
+ TransactionListener.instance().scheduleEvent(type, parameters);
+ }
+
public void raiseTimedEvent(String type, long duration, Object... parameters)
{
Dispatcher.instance().scheduleEvent(type, duration, null, null, parameters);
1.1 date: 2006/12/16 04:34:06; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/core/LocalTransactionListener.java
Index: LocalTransactionListener.java
===================================================================
package org.jboss.seam.core;
import javax.ejb.Local;
@Local
public interface LocalTransactionListener
{
public void scheduleEvent(String type, Object... parameters);
public void destroy();
}
1.1 date: 2006/12/16 04:34:06; author: gavin; state: Exp;jboss-seam/src/main/org/jboss/seam/core/TransactionListener.java
Index: TransactionListener.java
===================================================================
package org.jboss.seam.core;
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;
import javax.ejb.EJBException;
import javax.ejb.Remove;
import javax.ejb.SessionSynchronization;
import javax.ejb.Stateful;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.contexts.Contexts;
@Stateful
@Scope(ScopeType.EVENT)
@Name("org.jboss.seam.core.transactionListener")
@Install(value=false, precedence=BUILT_IN)
public class TransactionListener implements LocalTransactionListener, SessionSynchronization
{
static class Event
{
private String type;
private Object[] parameters;
public Event(String type, Object[] parameters)
{
this.type = type;
this.parameters = parameters;
}
public void call()
{
Events.instance().raiseEvent( type, parameters );
}
}
private List<Event> events = new ArrayList<Event>();
public static LocalTransactionListener instance()
{
if ( !Contexts.isApplicationContextActive() )
{
throw new IllegalStateException("no application context active");
}
return (LocalTransactionListener) Component.getInstance(TransactionListener.class);
}
public void afterBegin() throws EJBException, RemoteException
{
}
public void scheduleEvent(String type, Object... parameters)
{
events.add( new Event(type, parameters) );
}
public void afterCompletion(boolean success) throws EJBException, RemoteException
{
try
{
if (success)
{
for (Event event: events) event.call();
}
}
finally
{
events.clear();
}
}
public void beforeCompletion() throws EJBException, RemoteException
{
}
@Remove @Destroy
public void destroy() {}
}
More information about the jboss-cvs-commits
mailing list