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