[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