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/04/09 02:08:20 UTC
svn commit: r763465 - in
/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup:
Cycle.java CycleThreadLocal.java
Author: simoneg
Date: Thu Apr 9 00:08:19 2009
New Revision: 763465
URL: http://svn.apache.org/viewvc?rev=763465&view=rev
Log:
LABS-338 : Fix Cycle memory leak
Modified:
labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java
labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/CycleThreadLocal.java
Modified: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java?rev=763465&r1=763464&r2=763465&view=diff
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java (original)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/Cycle.java Thu Apr 9 00:08:19 2009
@@ -2,7 +2,9 @@
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;
/**
@@ -38,14 +40,29 @@
};
};
- {
- scan();
- }
-
private volatile static boolean inited = false;
private static AtomicBoolean initing = new AtomicBoolean(false);
private static List<Method> setups = new ArrayList<Method>();
private static List<Method> teardowns = new ArrayList<Method>();
+
+ static {
+ scan();
+ }
+
+
+ private Map<Object, Object> localVars = new HashMap<Object, Object>();
+
+ public Object getLocalVar(Object key) {
+ return localVars.get(key);
+ }
+
+ public void setLocalVar(Object key, Object value) {
+ localVars.put(key, value);
+ }
+
+ public void removeLocalVar(Object key) {
+ localVars.remove(key);
+ }
/**
* Components that manage cycles calls this method to start a new cycle.
Modified: labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/CycleThreadLocal.java
URL: http://svn.apache.org/viewvc/labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/CycleThreadLocal.java?rev=763465&r1=763464&r2=763465&view=diff
==============================================================================
--- labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/CycleThreadLocal.java (original)
+++ labs/magma/trunk/foundation-basics/src/main/java/org/apache/magma/basics/startup/CycleThreadLocal.java Thu Apr 9 00:08:19 2009
@@ -1,15 +1,24 @@
package org.apache.magma.basics.startup;
/**
- * Implements the {@link ThreadLocal} interface, saving con {@link Cycle}.
+ * Implements the {@link ThreadLocal} interface, saving on {@link Cycle}.
*
* @author Simone Gianni <si...@apache.org>
* @param <T> The class this instance will hold.
*/
-public class CycleThreadLocal<T> extends ThreadLocal<T> implements CycleCleanable {
+public class CycleThreadLocal<T> {
+
+ public void remove() {
+ Cycle.get().removeLocalVar(this);
+ }
+
+ @SuppressWarnings("unchecked")
+ public T get() {
+ return (T)Cycle.get().getLocalVar(this);
+ }
- public CycleThreadLocal() {
- Cycle.get().register(this);
+ public void set(T value) {
+ Cycle.get().setLocalVar(this, value);
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@labs.apache.org
For additional commands, e-mail: commits-help@labs.apache.org