JBoss.org Community Documentation
To create a dynamic CFlow you annotate a class implementing
org.jboss.aop.pointcut.DynamicCFlow
with
@DynamicCFlowDef
. The declaration of
@org.jboss.aop.DynamicCFlowDef
is:
package org.jboss.aop; @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) public @interface DynamicCFlowDef { }
Here is a @DynamicCFlow annotated class:
package com.mypackage; import org.jboss.aop.DynamicCFlowDef; import org.jboss.aop.pointcut.DynamicCFlow; @DynamicCFlowDef public class MyDynamicCFlow implements DynamicCFlow { public static boolean execute = false; public boolean shouldExecute(Invocation invocation) { return execute; } }
The name of the
@DynamicCFlowDef
annotated class gets used as
the name of the cflow for references.
To use the dynamic cflow we just defined:
package com.mypackage; @Aspect (scope=org.jboss.aop.advice.Scope.PER_VM) public class CFlowAspect { @Bind (pointcut="execution(void com.blah.POJO->someMethod())", \ cflow="com.mypackage.MyDynamicCFlow") public Object cflowAdvice(Invocation invocation) throws Throwable { return invocation.invokeNext(); } }