You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@labs.apache.org by si...@apache.org on 2009/01/27 14:02:23 UTC

svn commit: r738083 - in /labs/magma/trunk: foundation-basics/src/main/java/org/apache/magma/basics/context/ foundation-basics/src/test/java/org/apache/magma/basics/context/ foundation-i18n/src/test/java/org/apache/magma/i18n/ foundation-website/src/ma...

Author: simoneg
Date: Tue Jan 27 13:02:22 2009
New Revision: 738083

URL: http://svn.apache.org/viewvc?rev=738083&view=rev
Log:
LABS-279 : Refinements on RunningContext to support automatic savepoints

Added:
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoRegisterContextOwners.aj
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoSwitchContextOwner.aj
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextOwner.java
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/SubRunningContext.java   (contents, props changed)
      - copied, changed from r735601, labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java
    labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/
    labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/FakeContextOwner.java
    labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/RunningContextTest.java
    labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/SubRunningContextTest.java
Modified:
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java
    labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java
    labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Contextualizer.aj
    labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/Contextualizer.aj

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoRegisterContextOwners.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoRegisterContextOwners.aj?rev=738083&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoRegisterContextOwners.aj (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoRegisterContextOwners.aj Tue Jan 27 13:02:22 2009
@@ -0,0 +1,11 @@
+package org.apache.magma.basics.context;
+
+public aspect AutoRegisterContextOwners {
+
+	pointcut createdOwner(ContextOwner obj) : execution(ContextOwner+.new(..)) && this(obj);
+	
+	after(ContextOwner obj) : createdOwner(obj) {
+		RunningContext.createFor(obj);
+	}
+	
+}

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoSwitchContextOwner.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoSwitchContextOwner.aj?rev=738083&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoSwitchContextOwner.aj (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/AutoSwitchContextOwner.aj Tue Jan 27 13:02:22 2009
@@ -0,0 +1,18 @@
+package org.apache.magma.basics.context;
+
+public aspect AutoSwitchContextOwner {
+
+	declare precedence : AutoSwitchContextOwner, *;
+
+	pointcut contextualized(ContextOwner co) : execution(* ContextOwner+.*(..)) && 
+		!(execution(* *.getClass()) || execution(* *.equals(Object))) &&
+		this(co);
+	
+	before(ContextOwner co) : contextualized(co) {
+		RunningContext.entering(co);
+	}
+	
+	after(ContextOwner co) : contextualized(co) {
+		RunningContext.exiting(co);
+	}
+}

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextOwner.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextOwner.java?rev=738083&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextOwner.java (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextOwner.java Tue Jan 27 13:02:22 2009
@@ -0,0 +1,6 @@
+package org.apache.magma.basics.context;
+
+
+public interface ContextOwner {
+
+}

Modified: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java?rev=738083&r1=738082&r2=738083&view=diff
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java (original)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java Tue Jan 27 13:02:22 2009
@@ -1,64 +1,61 @@
 package org.apache.magma.basics.context;
 
-import java.lang.reflect.Method;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Stack;
 
 import org.apache.magma.basics.MagmaException;
-import org.apache.magma.basics.utils.SavingStack;
-import org.apache.magma.settings.Settings;
 
-public class RunningContext extends SavingStack<Object, ContextElement> {
+public class RunningContext {
 
 	private static ThreadLocal<RunningContext> runnings = new ThreadLocal<RunningContext>();
+
+	private Stack<SubRunningContext> currents = new Stack<SubRunningContext>();
+	private Map<ContextOwner, SubRunningContext> saveds = new HashMap<ContextOwner, SubRunningContext>();
+	
+	public static void cleanup() {
+		runnings.set(null);
+	}
 	
-	public static RunningContext get() {
+	public static SubRunningContext get() {
 		RunningContext context = runnings.get();
 		if (context == null) {
 			context = new RunningContext();
 			runnings.set(context);
 		}
-		return context;
+		return context.currents.peek();
 	}
 	
-	protected RunningContext() {
-	}
-
-	@Override
-	@Deprecated
-	public synchronized ContextElement pop() {
-		return super.pop();
+	public RunningContext() {
+		currents.push(new SubRunningContext());
 	}
 	
-	public synchronized void pop(Class<? extends ContextElement> eleClass) {
-		if (Settings.isProductionEnv()) {
-			super.pop();
-			return;
+	public static void entering(ContextOwner co) {
+		RunningContext context = runnings.get();
+		SubRunningContext sr = context.saveds.get(co);
+		if (sr == null) {
+			sr = new SubRunningContext();
+			sr.addAll(context.currents.peek());
+			sr.setOwner(co);
+			context.saveds.put(co, sr);
 		}
-		ContextElement popped = super.pop();
-		if (!eleClass.isAssignableFrom(popped.getClass())) throw new MagmaException("Running context expected {0}, but found {1}", eleClass, popped);
-	}
-	
-	public void popString() {
-		pop(StringContextElement.class);
-	}
-	
-	public void popClass() {
-		pop(ClassContextElement.class);
-	}
-	
-	public void popMethod() {
-		pop(MethodContextElement.class);
-	}
-	
-	public void push(Class<?> clazz) {
-		super.push(new ClassContextElement(clazz));
+		context.currents.push(sr);
 	}
 	
-	public void push(String value) {
-		super.push(new StringContextElement(value));
+	public static void exiting(ContextOwner co) {
+		RunningContext context = runnings.get();
+		SubRunningContext pop = context.currents.pop();
+		if (pop.getOwner() != co) throw new MagmaException("Running context disaligned, expecting {0} but got {1}", co, pop.getOwner());
 	}
 	
-	public void push(Method method, Object... args) {
-		super.push(new MethodContextElement(method, args));
+	public static void createFor(ContextOwner co) {
+		RunningContext context = runnings.get();
+		if (!context.saveds.containsKey(co)) {
+			SubRunningContext sr = new SubRunningContext();
+			sr.addAll(context.currents.peek());
+			sr.setOwner(co);
+			context.saveds.put(co, sr);
+		}		
 	}
-	
+
 }

Copied: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/SubRunningContext.java (from r735601, labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java)
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/SubRunningContext.java?p2=labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/SubRunningContext.java&p1=labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java&r1=735601&r2=738083&rev=738083&view=diff
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java (original)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/SubRunningContext.java Tue Jan 27 13:02:22 2009
@@ -1,25 +1,19 @@
 package org.apache.magma.basics.context;
 
 import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.EmptyStackException;
+import java.util.List;
+import java.util.Stack;
 
 import org.apache.magma.basics.MagmaException;
-import org.apache.magma.basics.utils.SavingStack;
 import org.apache.magma.settings.Settings;
 
-public class RunningContext extends SavingStack<Object, ContextElement> {
+public class SubRunningContext extends Stack<ContextElement> {
 
-	private static ThreadLocal<RunningContext> runnings = new ThreadLocal<RunningContext>();
+	private ContextOwner owner;
 	
-	public static RunningContext get() {
-		RunningContext context = runnings.get();
-		if (context == null) {
-			context = new RunningContext();
-			runnings.set(context);
-		}
-		return context;
-	}
-	
-	protected RunningContext() {
+	protected SubRunningContext() {
 	}
 
 	@Override
@@ -33,10 +27,29 @@
 			super.pop();
 			return;
 		}
-		ContextElement popped = super.pop();
-		if (!eleClass.isAssignableFrom(popped.getClass())) throw new MagmaException("Running context expected {0}, but found {1}", eleClass, popped);
+		try {
+			ContextElement popped = super.pop();
+			if (!eleClass.isAssignableFrom(popped.getClass())) throw new MagmaException("Running context expected {0}, but found {1}", eleClass, popped);
+		} catch (EmptyStackException e) {
+			throw new MagmaException("Running context is empty while trying to pop {0}", eleClass);
+		}
+	}
+	
+	@SuppressWarnings("unchecked")
+	public <SubElement extends ContextElement> List<SubElement> getElements(Class<SubElement> clazz) {
+		List<SubElement> ret = null;
+		for (ContextElement ele : this) {
+			if (clazz.isAssignableFrom(ele.getClass())) {
+				if (ret == null) {
+					ret = new ArrayList<SubElement>();
+				}
+				ret.add((SubElement)ele);
+			}
+		}
+		return ret;
 	}
 	
+	
 	public void popString() {
 		pop(StringContextElement.class);
 	}
@@ -60,5 +73,13 @@
 	public void push(Method method, Object... args) {
 		super.push(new MethodContextElement(method, args));
 	}
+
+	public ContextOwner getOwner() {
+		return owner;
+	}
+
+	public void setOwner(ContextOwner owner) {
+		this.owner = owner;
+	}
 	
 }

Propchange: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/SubRunningContext.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Added: labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/FakeContextOwner.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/FakeContextOwner.java?rev=738083&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/FakeContextOwner.java (added)
+++ labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/FakeContextOwner.java Tue Jan 27 13:02:22 2009
@@ -0,0 +1,17 @@
+package org.apache.magma.basics.context;
+
+import java.util.List;
+
+public class FakeContextOwner implements ContextOwner {
+
+	public String getMyContextString() {
+		List<StringContextElement> elements = RunningContext.get().getElements(StringContextElement.class);
+		String ret = "";
+		for (StringContextElement element : elements) {
+			ret += element.toString() + ";";
+		}
+		return ret;
+	}
+	
+	
+}

Added: labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/RunningContextTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/RunningContextTest.java?rev=738083&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/RunningContextTest.java (added)
+++ labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/RunningContextTest.java Tue Jan 27 13:02:22 2009
@@ -0,0 +1,47 @@
+package org.apache.magma.basics.context;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertSame;
+
+import org.junit.After;
+import org.junit.Test;
+
+public class RunningContextTest {
+
+	@After
+	public void cleanup() {
+		RunningContext.cleanup();
+	}
+
+	@Test
+	public void forkAndBackProgrammatically() throws Exception {
+		SubRunningContext context = RunningContext.get();
+		
+		context.push("in base");
+		context.push("still in base");
+		
+		FakeContextOwner co = new FakeContextOwner();
+		
+		RunningContext.entering(co);
+		
+		SubRunningContext context2 = RunningContext.get();
+		assertNotSame(context, context2);
+		
+		context2.push("in sub context");
+		
+		assertEquals(3, context2.getElements(StringContextElement.class).size());
+
+		RunningContext.exiting(co);
+		
+		context2 = RunningContext.get();
+		assertSame(context, context2);
+		
+		assertEquals(2, context.getElements(StringContextElement.class).size());
+		context.pop(StringContextElement.class);
+		
+		String contextString = co.getMyContextString();
+		assertEquals("in base;still in base;in sub context;", contextString);
+	}
+	
+}

Added: labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/SubRunningContextTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/SubRunningContextTest.java?rev=738083&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/SubRunningContextTest.java (added)
+++ labs/magma/trunk/foundation-basics/src/test/java/org/apache/magma/basics/context/SubRunningContextTest.java Tue Jan 27 13:02:22 2009
@@ -0,0 +1,70 @@
+package org.apache.magma.basics.context;
+
+import java.util.List;
+
+import org.apache.magma.basics.MagmaException;
+import org.junit.After;
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+public class SubRunningContextTest {
+
+	@After
+	public void cleanup() {
+		RunningContext.cleanup();
+	}
+	
+	@Test
+	public void pushAndPop() throws Exception {
+		SubRunningContext sub = RunningContext.get();
+		assertNotNull(sub);
+		
+		sub.push(this.getClass());
+		sub.push("a string");
+		sub.push("another string");
+		sub.push(this.getClass().getDeclaredMethod("pushAndPop"));
+		
+		List<StringContextElement> elements = sub.getElements(StringContextElement.class);
+		assertNotNull(elements);
+		assertEquals(2, elements.size());
+		assertEquals("a string", elements.get(0).toString());
+		assertEquals("a string", elements.get(0).mystring);
+		
+		List<ClassContextElement> classElements = sub.getElements(ClassContextElement.class);
+		assertNotNull(classElements);
+		assertEquals(1, classElements.size());
+		assertEquals("SubRunningContextTest", classElements.get(0).toString());
+		assertSame(this.getClass(), classElements.get(0).myclass);
+		
+		List<MethodContextElement> methElements = sub.getElements(MethodContextElement.class);
+		assertNotNull(methElements);
+		assertEquals(1, methElements.size());
+		assertEquals("pushAndPop", methElements.get(0).toString());
+		
+		sub.popMethod();
+		sub.popString();
+		sub.popString();
+		sub.popClass();
+	}
+	
+	@Test(expected=MagmaException.class)
+	public void wrongPop() throws Exception {
+		SubRunningContext sub = RunningContext.get();
+		assertNotNull(sub);
+
+		sub.push("a string");
+		sub.popClass();
+	}
+	
+	@Test(expected=MagmaException.class)
+	public void tooManyPops() throws Exception {
+		SubRunningContext sub = RunningContext.get();
+		assertNotNull(sub);
+
+		sub.push("a string");
+		sub.popString();
+		sub.popString();		
+	}
+	
+}

Modified: labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java?rev=738083&r1=738082&r2=738083&view=diff
==============================================================================
--- labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java (original)
+++ labs/magma/trunk/foundation-i18n/src/test/java/org/apache/magma/i18n/MatchingTest.java Tue Jan 27 13:02:22 2009
@@ -4,6 +4,7 @@
 import static org.hamcrest.CoreMatchers.*;
 
 import  org.apache.magma.basics.context.RunningContext;
+import org.apache.magma.basics.context.SubRunningContext;
 import org.junit.After;
 import org.junit.Test;
 import org.junit.experimental.theories.DataPoint;
@@ -14,7 +15,7 @@
 	@SuppressWarnings("deprecation")
 	@After
 	public void cleanupRunningContext() {
-		RunningContext context = RunningContext.get();
+		SubRunningContext context = RunningContext.get();
 		while(context.size() > 0) {
 			context.pop();
 		}
@@ -22,7 +23,7 @@
 	
 	@Test
 	public void simpleCompleteMatching() throws Exception {
-		RunningContext mc = RunningContext.get();
+		SubRunningContext mc = RunningContext.get();
 		mc.push(getClass());
 		mc.push("test");
 		
@@ -35,7 +36,7 @@
 
 	@Test
 	public void simplePartialMatching() throws Exception {
-		RunningContext mc = RunningContext.get();
+		SubRunningContext mc = RunningContext.get();
 		mc.push(getClass());
 		mc.push("test");
 		
@@ -46,7 +47,7 @@
 	
 	@Test
 	public void simpleNotMatching() throws Exception {
-		RunningContext mc = RunningContext.get();
+		SubRunningContext mc = RunningContext.get();
 		mc.push("test");
 		
 		ContextMatrix cm = new ContextMatrix(getClass().getSimpleName() + ".test", "test");
@@ -57,7 +58,7 @@
 	
 	@Test
 	public void simpleJumpingMatch() throws Exception {
-		RunningContext mc = RunningContext.get();
+		SubRunningContext mc = RunningContext.get();
 		mc.push("testingthejump");
 		mc.push(getClass());
 		mc.push("test");
@@ -70,7 +71,7 @@
 	
 	@Test
 	public void betterMatch() throws Exception {
-		RunningContext mc = RunningContext.get();
+		SubRunningContext mc = RunningContext.get();
 		mc.push("testingthejump");
 		mc.push(getClass());
 		mc.push("test");
@@ -84,7 +85,7 @@
 	
 	@Test
 	public void betterMatchAsPerBug184() throws Exception {
-		RunningContext mc = RunningContext.get();
+		SubRunningContext mc = RunningContext.get();
 		mc.push("CompoundHtmlProducer");
 		mc.push("BeanFormProducer");
 		mc.push("UserBean");

Modified: labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Contextualizer.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Contextualizer.aj?rev=738083&r1=738082&r2=738083&view=diff
==============================================================================
--- labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Contextualizer.aj (original)
+++ labs/magma/trunk/foundation-website/src/main/java/org/apache/magma/website/Contextualizer.aj Tue Jan 27 13:02:22 2009
@@ -1,30 +1,31 @@
 package org.apache.magma.website;
 
 import org.apache.magma.basics.context.RunningContext;
+import org.apache.magma.basics.context.SubRunningContext;
 import org.apache.magma.website.HandlerSetup;
 import org.aspectj.lang.reflect.MethodSignature;
 
 public aspect Contextualizer {
 
 	before(WebHandler h) : HandlerSetup.doMethod(h) || HandlerSetup.subHandle(h) || HandlerSetup.hiddenMethod(h) {
-		RunningContext context = RunningContext.get();
+		SubRunningContext context = RunningContext.get();
 		context.push(h.getClass());
 		context.push(((MethodSignature)thisJoinPoint.getSignature()).getMethod());
 	}
 
 	after(WebHandler h) : HandlerSetup.doMethod(h) || HandlerSetup.subHandle(h) || HandlerSetup.hiddenMethod(h) {
-		RunningContext context = RunningContext.get();
+		SubRunningContext context = RunningContext.get();
 		context.popMethod();
 		context.popClass();
 	}
 	
 	before(Producer p) : (execution(* Producer+.produce(..)) || execution(* Producer+.head(..))) && this(p) {
-		RunningContext context = RunningContext.get();
+		SubRunningContext context = RunningContext.get();
 		context.push(p.getClass());
 	}
 	
 	after(Producer p) : (execution(* Producer+.produce(..)) || execution(* Producer+.head(..))) && this(p) {
-		RunningContext context = RunningContext.get();
+		SubRunningContext context = RunningContext.get();
 		context.popClass();
 	}
 	

Modified: labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/Contextualizer.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/Contextualizer.aj?rev=738083&r1=738082&r2=738083&view=diff
==============================================================================
--- labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/Contextualizer.aj (original)
+++ labs/magma/trunk/website-beansview/src/main/java/org/apache/magma/website/beansview/Contextualizer.aj Tue Jan 27 13:02:22 2009
@@ -1,6 +1,7 @@
 package org.apache.magma.website.beansview;
 
 import org.apache.magma.basics.context.RunningContext;
+import org.apache.magma.basics.context.SubRunningContext;
 import org.apache.magma.beans.PropertyInfo;
 import org.apache.magma.view.tree.PropertyNode;
 import org.apache.magma.view.tree.Node;
@@ -8,7 +9,7 @@
 public privileged aspect Contextualizer {
 
 	void around(ShowBean sb) : execution(void ShowBean+.produce(..)) && this(sb) {
-		RunningContext current = RunningContext.get();
+		SubRunningContext current = RunningContext.get();
 		Object bean = sb.bean;
 		if (bean != null) {
 			current.push(bean.getClass());
@@ -34,7 +35,7 @@
 			return;
 		}
 		PropertyNode node = (PropertyNode)args[0];
-		RunningContext current = RunningContext.get();
+		SubRunningContext current = RunningContext.get();
 		PropertyInfo property = node.getProperty();
 		current.push(property.getName());
 		try {
@@ -45,7 +46,7 @@
 	}
 
 	void around(ShowList sl) : execution(void ShowList+.produce(..)) && this(sl) {
-		RunningContext current = RunningContext.get();
+		SubRunningContext current = RunningContext.get();
 		Class<?> clz = sl.myclass;
 		if (clz != null) {
 			current.push(clz);



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org