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/16 23:40:59 UTC

svn commit: r735170 - in /labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics: ./ context/ utils/

Author: simoneg
Date: Fri Jan 16 14:40:59 2009
New Revision: 735170

URL: http://svn.apache.org/viewvc?rev=735170&view=rev
Log:
LABS-279 : starting to create the running context

Added:
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequence.java
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequenceImpl.aj
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ClassContextElement.java
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextElement.java
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/StringContextElement.java
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/utils/SavingStack.java
Modified:
    labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/LocalizableString.java

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequence.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequence.java?rev=735170&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequence.java (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequence.java Fri Jan 16 14:40:59 2009
@@ -0,0 +1,5 @@
+package org.apache.magma.basics;
+
+public interface DefaultCharSequence extends CharSequence {
+
+}

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequenceImpl.aj
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequenceImpl.aj?rev=735170&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequenceImpl.aj (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/DefaultCharSequenceImpl.aj Fri Jan 16 14:40:59 2009
@@ -0,0 +1,17 @@
+package org.apache.magma.basics;
+
+public aspect DefaultCharSequenceImpl {
+
+	public char DefaultCharSequence.charAt(int i) {
+		return toString().charAt(i);
+	}
+	
+	public int DefaultCharSequence.length() {
+		return toString().length();
+	}
+	
+	public CharSequence DefaultCharSequence.subSequence(int begin, int end) {
+		return toString().subSequence(begin, end);
+	}
+	
+}

Modified: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/LocalizableString.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/LocalizableString.java?rev=735170&r1=735169&r2=735170&view=diff
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/LocalizableString.java (original)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/LocalizableString.java Fri Jan 16 14:40:59 2009
@@ -19,7 +19,7 @@
 import java.text.MessageFormat;
 
 
-public class LocalizableString {
+public class LocalizableString implements DefaultCharSequence {
 
 	private String message = null;
 	private Object[] args = null;

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ClassContextElement.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ClassContextElement.java?rev=735170&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ClassContextElement.java (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ClassContextElement.java Fri Jan 16 14:40:59 2009
@@ -0,0 +1,21 @@
+package org.apache.magma.basics.context;
+
+public class ClassContextElement implements ContextElement {
+
+	public Class<?> myclass = null;
+	
+	public ClassContextElement(Class<?> myclass) {
+		this.myclass = myclass;
+	}
+	
+	@Override
+	public String toString() {
+		return myclass.getSimpleName();
+	}
+	
+	@Override
+	public boolean equals(Object obj) {
+		if (!(obj instanceof ClassContextElement)) return false;
+		return ((ClassContextElement)obj).myclass == myclass;
+	}
+}

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextElement.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextElement.java?rev=735170&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextElement.java (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/ContextElement.java Fri Jan 16 14:40:59 2009
@@ -0,0 +1,5 @@
+package org.apache.magma.basics.context;
+
+public interface ContextElement {
+
+}

Added: 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=735170&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/RunningContext.java Fri Jan 16 14:40:59 2009
@@ -0,0 +1,47 @@
+package org.apache.magma.basics.context;
+
+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> {
+
+	private static ThreadLocal<RunningContext> runnings = new ThreadLocal<RunningContext>();
+	
+	public static RunningContext get() {
+		RunningContext context = runnings.get();
+		if (context == null) {
+			context = new RunningContext();
+			runnings.set(context);
+		}
+		return context;
+	}
+	
+	protected RunningContext() {
+	}
+
+	@Override
+	@Deprecated
+	public synchronized ContextElement pop() {
+		return super.pop();
+	}
+	
+	public synchronized void pop(Class<? extends ContextElement> eleClass) {
+		if (Settings.isProductionEnv()) {
+			super.pop();
+			return;
+		}
+		ContextElement popped = super.pop();
+		if (!eleClass.isAssignableFrom(popped.getClass())) throw new MagmaException("Running context expected {0}, but found {1}", eleClass, popped);
+	}
+	
+	
+	public void push(Class<?> clazz) {
+		super.push(new ClassContextElement(clazz));
+	}
+	
+	public void push(String value) {
+		super.push(new StringContextElement(value));
+	}
+	
+}

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/StringContextElement.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/StringContextElement.java?rev=735170&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/StringContextElement.java (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/context/StringContextElement.java Fri Jan 16 14:40:59 2009
@@ -0,0 +1,22 @@
+package org.apache.magma.basics.context;
+
+public class StringContextElement implements ContextElement {
+
+	public CharSequence mystring = null;
+	
+	public StringContextElement(CharSequence val) {
+		this.mystring = val;
+	}
+	
+	@Override
+	public String toString() {
+		return mystring.toString();
+	}
+	
+	@Override
+	public boolean equals(Object obj) {
+		if (!(obj instanceof StringContextElement)) return false;
+		return ((StringContextElement)obj).mystring.equals(mystring);
+	}
+	
+}

Added: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/utils/SavingStack.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/utils/SavingStack.java?rev=735170&view=auto
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/utils/SavingStack.java (added)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/utils/SavingStack.java Fri Jan 16 14:40:59 2009
@@ -0,0 +1,36 @@
+package org.apache.magma.basics.utils;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Stack;
+
+public class SavingStack<SavePoints, Elements> extends Stack<Elements> {
+
+	private Map<SavePoints, List<Elements>> saved = new HashMap<SavePoints, List<Elements>>();
+	
+	public void saveFor(SavePoints point) {
+		List<Elements> save = new ArrayList<Elements>(super.size());
+		save.addAll(this);
+		saved.put(point, save);
+	}
+	
+	public List<Elements> getSaved(SavePoints point) {
+		return saved.get(point);
+	}
+	
+	public <SubElement extends Elements> List<SubElement> getElements(Class<SubElement> clazz) {
+		List<SubElement> ret = null;
+		for (Elements ele : this) {
+			if (clazz.isAssignableFrom(ele.getClass())) {
+				if (ret == null) {
+					ret = new ArrayList<SubElement>();
+				}
+				ret.add((SubElement)ele);
+			}
+		}
+		return ret;
+	}
+}



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