[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