[jboss-cvs] jboss-seam/src/main/org/jboss/seam/core ...

Peter Muir peter at bleepbleep.org.uk
Wed Feb 21 13:33:08 EST 2007


  User: pmuir   
  Date: 07/02/21 13:33:08

  Modified:    src/main/org/jboss/seam/core  Pages.java
  Log:
  JBSEAM-891
  
  Revision  Changes    Path
  1.85      +93 -0     jboss-seam/src/main/org/jboss/seam/core/Pages.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: Pages.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/core/Pages.java,v
  retrieving revision 1.84
  retrieving revision 1.85
  diff -u -b -r1.84 -r1.85
  --- Pages.java	13 Feb 2007 06:50:44 -0000	1.84
  +++ Pages.java	21 Feb 2007 18:33:08 -0000	1.85
  @@ -36,12 +36,14 @@
   import org.jboss.seam.pages.Navigation;
   import org.jboss.seam.pages.ConversationControl;
   import org.jboss.seam.pages.Input;
  +import org.jboss.seam.pages.ProcessControl;
   import org.jboss.seam.pages.Rule;
   import org.jboss.seam.pages.Page;
   import org.jboss.seam.pages.Param;
   import org.jboss.seam.pages.RedirectNavigationHandler;
   import org.jboss.seam.pages.RenderNavigationHandler;
   import org.jboss.seam.pages.Output;
  +import org.jboss.seam.pages.TaskControl;
   import org.jboss.seam.security.Identity;
   import org.jboss.seam.util.Parameters;
   import org.jboss.seam.util.Resources;
  @@ -698,6 +700,8 @@
         pagesByViewId.put(viewId, page);
         parsePage(page, element, viewId);
         parseConversationControl( element, page.getConversationControl() );
  +      parseTaskControl(element, page.getTaskControl());
  +      parseProcessControl(element, page.getProcessControl());
         List<Element> children = element.elements("param");
         for (Element param: children)
         {
  @@ -835,6 +839,91 @@
            throw new IllegalStateException("cannot use both <begin-conversation/> and <end-conversation/>");
         }
      }
  +   
  +   /**
  +    * Parse begin-task, start-task and end-task
  +    */
  +   private static void parseTaskControl(Element element, TaskControl control)
  +   {
  +      Element endTask = element.element("end-task");
  +      if ( endTask!=null )
  +      {
  +         control.setEndTask(true);
  +         String transition = endTask.attributeValue("transition");
  +         if (transition!=null)
  +         {
  +            control.setTransition( Expressions.instance().createValueBinding(transition) );
  +         }
  +      }
  +      
  +      Element beginTask = element.element("begin-task");
  +      if ( beginTask!=null )
  +      {
  +         control.setBeginTask(true);
  +         String taskId = beginTask.attributeValue("task-id");
  +         if (taskId==null)
  +         {
  +           taskId = "#{param.taskId}";
  +         }
  +         control.setTaskId( Expressions.instance().createValueBinding(taskId) );
  +      }
  +      
  +      Element startTask = element.element("start-task");
  +      if ( startTask!=null )
  +      {
  +         control.setStartTask(true);
  +         String taskId = startTask.attributeValue("task-id");
  +         if (taskId==null)
  +         {
  +           taskId = "#{param.taskId}";
  +         }
  +         control.setTaskId( Expressions.instance().createValueBinding(taskId) );
  +      }
  +      
  +      if ( control.isBeginTask() && control.isEndTask() )
  +      {
  +         throw new IllegalStateException("cannot use both <begin-task/> and <end-task/>");
  +      }
  +      else if ( control.isBeginTask() && control.isStartTask() )
  +      {
  +          throw new IllegalStateException("cannot use both <start-task/> and <begin-task/>");
  +       }
  +      else if ( control.isStartTask() && control.isEndTask() )
  +      {
  +           throw new IllegalStateException("cannot use both <start-task/> and <end-task/>");
  +       }
  +   }
  +   
  +   /**
  +    * Parse create-process and end-process
  +    */
  +   private static void parseProcessControl(Element element, ProcessControl control)
  +   {
  +      Element createProcess = element.element("create-process");
  +      if ( createProcess!=null )
  +      {
  +         control.setCreateProcess(true);
  +         control.setDefinition( createProcess.attributeValue("definition") );
  +      }
  +      
  +      Element resumeProcess = element.element("resume-process");
  +      if ( resumeProcess!=null )
  +      {
  +         control.setResumeProcess(true);
  +         String processId = resumeProcess.attributeValue("process-id");
  +         if (processId==null)
  +         {
  +           processId = "#{param.processId}";
  +         }
  +         control.setProcessId( Expressions.instance().createValueBinding(processId) );
  +      }
  +      
  +      if ( control.isCreateProcess() && control.isResumeProcess() )
  +      {
  +         throw new IllegalStateException("cannot use both <create-process/> and <resume-process/>");
  +      }
  +   }
  +   
      /**
       * Parse navigation
       */
  @@ -856,6 +945,8 @@
         Rule rule = new Rule();
         parseNavigationHandler(element, rule);
         parseConversationControl( element, rule.getConversationControl() );
  +      parseTaskControl(element, rule.getTaskControl());
  +      parseProcessControl(element, rule.getProcessControl());
         navigation.setRule(rule);
         
         String expression = element.attributeValue("from-action");
  @@ -911,6 +1002,8 @@
         }
         
         parseConversationControl( element, rule.getConversationControl() );
  +      parseTaskControl(element, rule.getTaskControl());
  +      parseProcessControl(element, rule.getProcessControl());
         parseNavigationHandler(element, rule);
         
         return rule;
  
  
  



More information about the jboss-cvs-commits mailing list