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

Gavin King gavin.king at jboss.com
Sun Jun 17 18:51:00 EDT 2007


  User: gavin   
  Date: 07/06/17 18:51:00

  Modified:    src/main/org/jboss/seam/interceptors 
                        BusinessProcessInterceptor.java
  Log:
  JBSEAM-1094, JBSEAM-256
  
  Revision  Changes    Path
  1.56      +31 -7     jboss-seam/src/main/org/jboss/seam/interceptors/BusinessProcessInterceptor.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: BusinessProcessInterceptor.java
  ===================================================================
  RCS file: /cvsroot/jboss/jboss-seam/src/main/org/jboss/seam/interceptors/BusinessProcessInterceptor.java,v
  retrieving revision 1.55
  retrieving revision 1.56
  diff -u -b -r1.55 -r1.56
  --- BusinessProcessInterceptor.java	16 Jun 2007 18:34:28 -0000	1.55
  +++ BusinessProcessInterceptor.java	17 Jun 2007 22:51:00 -0000	1.56
  @@ -27,7 +27,7 @@
   /**
    * Interceptor which handles interpretation of jBPM-related annotations.
    *
  - * @author <a href="mailto:steve at hibernate.org">Steve Ebersole </a>
  + * @author <a href="mailto:steve at hibernate.org">Steve Ebersole</a>
    * @author Gavin King
    */
   @Interceptor(stateless=true,
  @@ -58,23 +58,30 @@
         {
            log.trace( "encountered @StartTask" );
            StartTask tag = method.getAnnotation(StartTask.class);
  -         Long taskId = getRequestParamValueAsLong( tag.taskIdParameter(), tag.taskId() );
  +         Long taskId = getProcessOrTaskId( tag.taskIdParameter(), tag.taskId() );
            return BusinessProcess.instance().resumeTask(taskId);
         }
         else if ( method.isAnnotationPresent(BeginTask.class) ) 
         {
            log.trace( "encountered @BeginTask" );
            BeginTask tag = method.getAnnotation(BeginTask.class);
  -         Long taskId = getRequestParamValueAsLong( tag.taskIdParameter(), tag.taskId() );
  +         Long taskId = getProcessOrTaskId( tag.taskIdParameter(), tag.taskId() );
            return BusinessProcess.instance().resumeTask(taskId);
         }
         else if ( method.isAnnotationPresent(ResumeProcess.class) ) 
         {
            log.trace( "encountered @ResumeProcess" );
            ResumeProcess tag = method.getAnnotation(ResumeProcess.class);
  -         Long processId = getRequestParamValueAsLong( tag.processIdParameter(), tag.processId() );
  +         if ( tag.processKey().equals("") )
  +         {
  +            Long processId = getProcessOrTaskId( tag.processIdParameter(), tag.processId() );
            return BusinessProcess.instance().resumeProcess(processId);
         }
  +         else
  +         {
  +            return BusinessProcess.instance().resumeProcess( tag.definition(), getProcessKey( tag.processKey() ) );
  +         }
  +      }
         if ( method.isAnnotationPresent(EndTask.class) )
         {
            log.trace( "encountered @EndTask" );
  @@ -95,8 +102,15 @@
            {
               log.trace( "encountered @CreateProcess" );
               CreateProcess tag = method.getAnnotation(CreateProcess.class);
  +            if ( tag.processKey().equals("") )
  +            {
               BusinessProcess.instance().createProcess( tag.definition() );
            }
  +            else
  +            {
  +               BusinessProcess.instance().createProcess( tag.definition(), getProcessKey( tag.processKey() ) );
  +            }
  +         }
            if ( method.isAnnotationPresent(StartTask.class) )
            {
               log.trace( "encountered @StartTask" );
  @@ -118,7 +132,17 @@
         return result;
      }
   
  -   private Long getRequestParamValueAsLong(String paramName, String el)
  +   private String getProcessKey(String el)
  +   {
  +      Object key = Expressions.instance().createValueExpression(el).getValue();
  +      if (key==null)
  +      {
  +         throw new IllegalStateException("process business key may not be null");
  +      }
  +      return key.toString();
  +   }
  +
  +   private Long getProcessOrTaskId(String paramName, String el)
      {
         Object id;
         if ( Strings.isEmpty(paramName) )
  
  
  



More information about the jboss-cvs-commits mailing list