You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2009/01/18 08:30:04 UTC
svn commit: r735395 -
/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java
Author: dblevins
Date: Sat Jan 17 23:30:03 2009
New Revision: 735395
URL: http://svn.apache.org/viewvc?rev=735395&view=rev
Log:
Sort of functional interceptor for debugging. Not wired in.
Modified:
openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java
Modified: openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java?rev=735395&r1=735394&r2=735395&view=diff
==============================================================================
--- openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java (original)
+++ openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/core/interceptor/InterceptorStack.java Sat Jan 17 23:30:03 2009
@@ -18,12 +18,18 @@
package org.apache.openejb.core.interceptor;
import org.apache.openejb.core.Operation;
+import org.apache.openejb.core.ThreadContext;
+import org.apache.openejb.util.Join;
+import org.apache.openejb.util.Classes;
+import static org.apache.openejb.util.Join.join;
import javax.interceptor.InvocationContext;
import java.lang.reflect.Method;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
+import java.util.LinkedHashMap;
+import java.util.Stack;
/**
* @version $Rev$ $Date$
@@ -42,6 +48,11 @@
this.operation = operation;
interceptors = new ArrayList<Interceptor>(interceptorDatas.size());
+// try {
+// interceptors.add(new Interceptor(new Debug(), Debug.class.getMethod("invoke", InvocationContext.class)));
+// } catch (Throwable e) {
+// }
+
for (InterceptorData interceptorData : interceptorDatas) {
Class interceptorClass = interceptorData.getInterceptorClass();
Object interceptorInstance = interceptorInstances.get(interceptorClass.getName());
@@ -57,6 +68,50 @@
}
}
+ private static final ThreadLocal<Stack> stack = new ThreadLocal<Stack>();
+ private class Debug {
+
+ private Stack stack() {
+ Stack s = stack.get();
+ if (s == null){
+ s = new Stack();
+ stack.set(s);
+ }
+ return s;
+ }
+
+ public Object invoke(InvocationContext context) throws Exception {
+ try {
+ StringBuilder sb = new StringBuilder();
+ ThreadContext threadContext = ThreadContext.getThreadContext();
+ String txPolicy = threadContext.getTransactionPolicy().getClass().getSimpleName();
+ String ejbName = threadContext.getDeploymentInfo().getEjbName();
+ String methodName = targetMethod.getName() + "(" + join(", ", Classes.getSimpleNames(targetMethod.getParameterTypes())) + ")";
+ sb.append(join("", stack()));
+ sb.append(ejbName).append(".");
+ sb.append(methodName).append(" <").append(txPolicy).append("> {");
+ synchronized (System.out){
+ System.out.println(sb.toString());
+ }
+ } catch (Throwable e) {
+ }
+
+ try {
+
+ stack().push(" ");
+ return context.proceed();
+ } finally {
+ stack().pop();
+ StringBuilder sb = new StringBuilder();
+ sb.append(join("", stack()));
+ sb.append("}");
+ synchronized (System.out){
+ System.out.println(sb.toString());
+ }
+ }
+ }
+ }
+
public InvocationContext createInvocationContext(Object... parameters) {
InvocationContext invocationContext = new ReflectionInvocationContext(operation, interceptors, beanInstance, targetMethod, parameters);
return invocationContext;