[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...
Gavin King
gavin.king at jboss.com
Sun Feb 4 02:57:17 EST 2007
User: gavin
Date: 07/02/04 02:57:17
Modified: src/main/org/jboss/seam/core Events.java Init.java
Log:
move event mappings into components.xml
Revision Changes Path
1.18 +11 -52 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.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- Events.java 17 Dec 2006 17:45:37 -0000 1.17
+++ Events.java 4 Feb 2007 07:57:17 -0000 1.18
@@ -4,17 +4,12 @@
import static org.jboss.seam.annotations.Install.BUILT_IN;
import java.io.InputStream;
-import java.util.ArrayList;
import java.util.Date;
-import java.util.HashMap;
import java.util.List;
-import java.util.Map;
import org.dom4j.DocumentException;
-import org.dom4j.Element;
import org.jboss.seam.Component;
import org.jboss.seam.ScopeType;
-import org.jboss.seam.Seam;
import org.jboss.seam.annotations.Create;
import org.jboss.seam.annotations.Install;
import org.jboss.seam.annotations.Intercept;
@@ -23,12 +18,12 @@
import org.jboss.seam.contexts.Contexts;
import org.jboss.seam.core.Expressions.MethodBinding;
import org.jboss.seam.core.Init.ObserverMethod;
+import org.jboss.seam.core.Init.ObserverMethodBinding;
import org.jboss.seam.log.LogProvider;
import org.jboss.seam.log.Logging;
import org.jboss.seam.util.Resources;
-import org.jboss.seam.util.XML;
- at Scope(ScopeType.APPLICATION)
+ at Scope(ScopeType.STATELESS)
@Intercept(NEVER)
@Name("org.jboss.seam.core.events")
@Install(precedence=BUILT_IN)
@@ -37,8 +32,6 @@
private static final LogProvider log = Logging.getLogProvider(Events.class);
- private final Map<String, List<MethodBinding>> listeners = new HashMap<String, List<MethodBinding>>();
-
@Create
public void initialize() throws DocumentException
{
@@ -50,64 +43,35 @@
else
{
log.info("reading events.xml");
- List<Element> elements = XML.getRootElement(stream).elements("event");
- for (Element event: elements)
- {
- String type = event.attributeValue("type");
- if (type==null)
- {
- throw new IllegalArgumentException("must specify type for <event/> declaration");
- }
- List<MethodBinding> methodBindings = new ArrayList<MethodBinding>();
- listeners.put(type, methodBindings);
-
- List<Element> actions = event.elements("action");
- for (Element action: actions)
- {
- String actionExpression = action.attributeValue("expression");
- if (actionExpression==null)
- {
- throw new IllegalArgumentException("must specify expression for <action/> declaration");
- }
- MethodBinding methodBinding = Expressions.instance().createMethodBinding(actionExpression);
- methodBindings.add(methodBinding);
- }
- }
}
}
public void addListener(String type, String methodBindingExpression)
{
MethodBinding methodBinding = Expressions.instance().createMethodBinding(methodBindingExpression);
- List<MethodBinding> list = listeners.get(type);
- if (list==null)
- {
- list = new ArrayList<MethodBinding>();
- listeners.put(type, list);
- }
- list.add(methodBinding);
+ Init.instance().addObserverMethodBinding(type, methodBinding);
}
public void raiseEvent(String type, Object... parameters)
{
log.debug("Processing event:" + type);
- List<MethodBinding> list = listeners.get(type);
+ List<Init.ObserverMethodBinding> list = Init.instance().getObserverMethodBindings(type);
if (list!=null)
{
- for (MethodBinding listener: list )
+ for (ObserverMethodBinding listener: list )
{
- listener.invoke(parameters);
+ listener.getMethodBinding().invoke(parameters);
}
}
- List<Init.ObserverMethod> observers = Init.instance().getObservers(type);
+ List<Init.ObserverMethod> observers = Init.instance().getObserverMethods(type);
if (observers!=null)
{
for (ObserverMethod observer: observers)
{
- Object listener = Component.getInstance( observer.component.getName(), observer.create );
+ Object listener = Component.getInstance( observer.getComponent().getName(), observer.isCreate() );
if (listener!=null)
{
- observer.component.callComponentMethod(listener, observer.method, parameters);
+ observer.getComponent().callComponentMethod(listener, observer.getMethod(), parameters);
}
}
}
@@ -145,17 +109,12 @@
public static boolean exists()
{
- return Contexts.isApplicationContextActive() &&
- Contexts.getApplicationContext().isSet( Seam.getComponentName(Events.class) );
+ return Contexts.isApplicationContextActive() && instance()!=null;
}
public static Events instance()
{
- if ( !Contexts.isApplicationContextActive() )
- {
- throw new IllegalStateException("No active application context");
- }
- return (Events) Component.getInstance(Events.class, ScopeType.APPLICATION);
+ return (Events) Component.getInstance(Events.class, ScopeType.STATELESS);
}
}
1.35 +66 -10 jboss-seam/src/main/org/jboss/seam/core/Init.java
(In the diff below, changes in quantity of whitespace are not shown.)
Index: Init.java
===================================================================
RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Init.java,v
retrieving revision 1.34
retrieving revision 1.35
diff -u -b -r1.34 -r1.35
--- Init.java 16 Dec 2006 14:06:57 -0000 1.34
+++ Init.java 4 Feb 2007 07:57:17 -0000 1.35
@@ -1,4 +1,4 @@
-//$Id: Init.java,v 1.34 2006/12/16 14:06:57 gavin Exp $
+//$Id: Init.java,v 1.35 2007/02/04 07:57:17 gavin Exp $
package org.jboss.seam.core;
@@ -48,7 +48,8 @@
private String userTransactionName;
//private String transactionManagerName;
- private Map<String, List<ObserverMethod>> observers = new HashMap<String, List<ObserverMethod>>();
+ private Map<String, List<ObserverMethod>> observerMethods = new HashMap<String, List<ObserverMethod>>();
+ private Map<String, List<ObserverMethodBinding>> observerMethodBindings = new HashMap<String, List<ObserverMethodBinding>>();
private Map<String, FactoryMethod> factories = new HashMap<String, FactoryMethod>();
private Map<String, FactoryBinding> factoryMethodBindings = new HashMap<String, FactoryBinding>();
private Map<String, FactoryBinding> factoryValueBindings = new HashMap<String, FactoryBinding>();
@@ -185,16 +186,34 @@
factoryValueBindings.put( variable, new FactoryBinding(valueBindingExpression, scope) );
}
- public static class ObserverMethod {
- public Method method;
- public Component component;
- public boolean create;
+ public static class ObserverMethod
+ {
+ private Method method;
+ private Component component;
+ private boolean create;
+
ObserverMethod(Method method, Component component, boolean create)
{
this.method = method;
this.component = component;
this.create = create;
}
+
+ public Component getComponent()
+ {
+ return component;
+ }
+
+ public Method getMethod()
+ {
+ return method;
+ }
+
+ public boolean isCreate()
+ {
+ return create;
+ }
+
@Override
public String toString()
{
@@ -202,22 +221,59 @@
}
}
- public List<ObserverMethod> getObservers(String eventType)
+ public static class ObserverMethodBinding
+ {
+ private MethodBinding methodBinding;
+
+ ObserverMethodBinding(MethodBinding method)
+ {
+ this.methodBinding = method;
+ }
+
+ public MethodBinding getMethodBinding()
+ {
+ return methodBinding;
+ }
+
+ @Override
+ public String toString()
{
- return observers.get(eventType);
+ return "ObserverMethodBinding(" + methodBinding + ')';
+ }
+ }
+
+ public List<ObserverMethod> getObserverMethods(String eventType)
+ {
+ return observerMethods.get(eventType);
+ }
+
+ public List<ObserverMethodBinding> getObserverMethodBindings(String eventType)
+ {
+ return observerMethodBindings.get(eventType);
}
public void addObserverMethod(String eventType, Method method, Component component, boolean create)
{
- List<ObserverMethod> observerList = observers.get(eventType);
+ List<ObserverMethod> observerList = observerMethods.get(eventType);
if (observerList==null)
{
observerList = new ArrayList<ObserverMethod>();
- observers.put(eventType, observerList);
+ observerMethods.put(eventType, observerList);
}
observerList.add( new ObserverMethod(method, component, create) );
}
+ public void addObserverMethodBinding(String eventType, MethodBinding methodBinding)
+ {
+ List<ObserverMethodBinding> observerList = observerMethodBindings.get(eventType);
+ if (observerList==null)
+ {
+ observerList = new ArrayList<ObserverMethodBinding>();
+ observerMethodBindings.put(eventType, observerList);
+ }
+ observerList.add( new ObserverMethodBinding(methodBinding) );
+ }
+
public boolean isJbpmInstalled()
{
return jbpmInstalled;
More information about the jboss-cvs-commits
mailing list