]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.core/src/main/java/org/argeo/slc/core/execution/ExecutionAspect.java
Flows automatically registered in JCR
[gpl/argeo-slc.git] / runtime / org.argeo.slc.core / src / main / java / org / argeo / slc / core / execution / ExecutionAspect.java
index 6d0b9a64e5ad3bbf064c992b84b15e9ee427f2a9..cdafe446d9a33727307ec9019049aad1893e1e94 100644 (file)
@@ -1,3 +1,19 @@
+/*
+ * Copyright (C) 2010 Mathieu Baudier <mbaudier@argeo.org>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * 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;
@@ -11,6 +27,7 @@ import org.aspectj.lang.annotation.Aspect;
 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);
 
@@ -32,28 +49,18 @@ public class ExecutionAspect {
 
                if (log.isDebugEnabled())
                        logStackEvent("=> ", executionFlow);
-               
+
                try {
                        // Actually execute the flow
                        pjp.proceed();
                } finally {
                        if (log.isDebugEnabled())
                                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();
@@ -70,10 +77,6 @@ public class ExecutionAspect {
        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() {
        }
@@ -88,16 +91,21 @@ public class ExecutionAspect {
 
        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);
+               else 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) {