/*
- * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ * Copyright (C) 2007-2012 Argeo GmbH
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.argeo.slc.core.execution;
import org.apache.commons.logging.Log;
import org.aspectj.lang.annotation.Pointcut;
@Aspect
+/** Aspect intercepting calls on execution flows and contexts. */
public class ExecutionAspect {
private final static Log log = LogFactory.getLog(ExecutionAspect.class);
executionContext.setVariable(ExecutionContext.VAR_FLOW_NAME,
executionFlow.getName());
- if (log.isDebugEnabled())
- logStackEvent("=> ", executionFlow);
-
+ logStackEvent("=> ", executionFlow);
try {
// Actually execute the flow
pjp.proceed();
} finally {
- if (log.isDebugEnabled())
- logStackEvent("<= ", executionFlow);
-
+ logStackEvent("<= ", executionFlow);
executionStack.leaveFlow(executionFlow);
}
}
- @Around("runnableExecution()")
- public void aroundRunnable(ProceedingJoinPoint pjp) throws Throwable {
- ExecutionFlow executionFlow = (ExecutionFlow) pjp.getTarget();
- Runnable runnable = (Runnable) pjp.getArgs()[0];
- if (log.isDebugEnabled())
- logRunnableExecution(executionFlow, runnable);
- // Actually execute the runnable
- pjp.proceed();
- }
-
@Around("getVariable()")
public Object aroundGetVariable(ProceedingJoinPoint pjp) throws Throwable {
Object obj = pjp.proceed();
public void flowExecution() {
}
- @Pointcut("execution(void org.argeo.slc.execution.ExecutionFlow.doExecuteRunnable(..))")
- public void runnableExecution() {
- }
-
@Pointcut("execution(* org.argeo.slc.execution.ExecutionContext.getVariable(..))")
public void getVariable() {
}
protected void logStackEvent(String symbol, ExecutionFlow executionFlow) {
Integer stackSize = executionStack.getStackSize();
- log.debug(depthSpaces(stackSize) + symbol + executionFlow + " #"
- + executionStack.getCurrentStackLevelUuid() + ", depth="
- + stackSize);
+ if (log.isTraceEnabled())
+ log.debug(depthSpaces(stackSize) + symbol + executionFlow + " #"
+ + executionStack.getCurrentStackLevelUuid() + ", depth="
+ + stackSize);
+ if (log.isDebugEnabled())
+ log.debug(depthSpaces(stackSize) + symbol + executionFlow);
}
protected void logRunnableExecution(ExecutionFlow executionFlow,
Runnable runnable) {
Integer stackSize = executionStack.getStackSize();
- log.debug(depthSpaces(stackSize + 1)
- + runnable.getClass().getSimpleName() + " in " + executionFlow);
+ if (log.isDebugEnabled())
+ log.debug(depthSpaces(stackSize + 1)
+ + runnable.getClass().getSimpleName() + " in "
+ + executionFlow);
}
private String depthSpaces(int depth) {