]> source.dussan.org Git - aspectj.git/commitdiff
210470 merged into refactoring branch
authoraclement <aclement>
Wed, 28 May 2008 00:02:41 +0000 (00:02 +0000)
committeraclement <aclement>
Wed, 28 May 2008 00:02:41 +0000 (00:02 +0000)
bridge/src/org/aspectj/bridge/context/CompilationAndWeavingContext.java

index e3a0b7b7fe19f093359fe113d1693f2cc16e9918..c9acc4967d6a6ffce65d198d8144072d4747fb7e 100644 (file)
@@ -136,12 +136,17 @@ public class CompilationAndWeavingContext {
        private CompilationAndWeavingContext() {
        }
        
-       // for testing...
        public static void reset() {
-               contextMap = new HashMap();
-               contextStack = new Stack();
-               formatterMap = new HashMap();
-               nextTokenId = 1;
+        if (!multiThreaded) {
+            contextMap = new HashMap();
+            contextStack = new Stack();
+            formatterMap = new HashMap();
+            nextTokenId = 1;
+        } else {
+            contextMap.remove(Thread.currentThread());
+            // TODO what about formatterMap?
+            // TODO what about nextTokenId?
+        }
        }
        
        public static void setMultiThreaded(boolean mt) { multiThreaded = mt; }
@@ -191,18 +196,25 @@ public class CompilationAndWeavingContext {
                }
        }
        
+       /**
+        * Forget about the context for the current thread
+        */
+       public static void resetForThread() {
+               if (!multiThreaded) return;
+               contextMap.remove(Thread.currentThread());
+       }
+       
        private static Stack getContextStack() {
                if (!multiThreaded) {
                        return contextStack;
                }
                else {
-                       if (contextMap.containsKey(Thread.currentThread())) {
-                               return (Stack) contextMap.get(Thread.currentThread());
-                       } else {
-                               Stack contextStack = new Stack();
+                   Stack contextStack = (Stack) contextMap.get(Thread.currentThread());
+            if (contextStack == null) {
+                               contextStack = new Stack();
                                contextMap.put(Thread.currentThread(),contextStack);
-                               return contextStack;
                        }
+            return contextStack;
                }
        }