[Schmitzm-commits] r1845 - trunk/schmitzm-core/src/main/java/de/schmitzm/lang

scm-commit@wald.intevation.org scm-commit at wald.intevation.org
Mon Jan 30 04:09:20 CET 2012


Author: alfonx
Date: 2012-01-30 04:09:18 +0100 (Mon, 30 Jan 2012)
New Revision: 1845

Modified:
   trunk/schmitzm-core/src/main/java/de/schmitzm/lang/TimedHashMap.java
Log:
uncauhtException on Thread Immobrain Timer, roleback<br />java.lang.NullPointerException
	at de.schmitzm.lang.TimedHashMap.put(TimedHashMap.java:72)
	at java.util.Collections$SynchronizedMap.put(Collections.java:1979)
	at de.wikisquare.immobrain.QuellenRegistry.getCrawlStat(QuellenRegistry.java:223)
	at de.wikisquare.immobrain.QuellenRegistry.getAlleQuellenCrawlStat(QuellenRegistry.java:210)
	at de.wikisquare.immobrain.crawler.CrawlSpeedStatTimer.run(CrawlSpeedStatTimer.java:35)
	at java.util.TimerThread.mainLoop(Timer.java:512)
	at java.util.TimerThread.run(Timer.java:462)

Modified: trunk/schmitzm-core/src/main/java/de/schmitzm/lang/TimedHashMap.java
===================================================================
--- trunk/schmitzm-core/src/main/java/de/schmitzm/lang/TimedHashMap.java	2012-01-29 21:59:46 UTC (rev 1844)
+++ trunk/schmitzm-core/src/main/java/de/schmitzm/lang/TimedHashMap.java	2012-01-30 03:09:18 UTC (rev 1845)
@@ -8,8 +8,7 @@
 import javax.swing.Timer;
 
 /**
- * Erweiterung der {@link LimitedHashMap}. Erlaubt es in Millisekunden
- * anzugeben, wie lange ein Eintrag gültig ist.
+ * Erweiterung der {@link LimitedHashMap}. Erlaubt es in Millisekunden anzugeben, wie lange ein Eintrag gültig ist.
  */
 public class TimedHashMap<K, V> extends HashMap<K, V> {
 
@@ -20,8 +19,7 @@
 	Timer cleanTask;
 
 	/**
-	 * Erweiterung der {@link LimitedHashMap}. Erlaubt es in Millisekunden
-	 * anzugeben, wie lange ein Eintrag gültig ist.
+	 * Erweiterung der {@link LimitedHashMap}. Erlaubt es in Millisekunden anzugeben, wie lange ein Eintrag gültig ist.
 	 * 
 	 * @param timeout
 	 *            Anz. ms die Einträge gültig sind.
@@ -50,27 +48,29 @@
 
 		if (timeout > 0) {
 
-			// Timeour ms Nach dem letzten put die komplette hashmap leeren.
-			if (cleanTask != null) {
-				cleanTask.stop();
-			}
+			synchronized (cleanTask) {
+				// Timeour ms Nach dem letzten put die komplette hashmap leeren.
+				if (cleanTask != null) {
+					cleanTask.stop();
+				}
 
-			cleanTask = new Timer(timeout + 1, new ActionListener() {
+				cleanTask = new Timer(timeout + 1, new ActionListener() {
 
-				@Override
-				public void actionPerformed(ActionEvent arg0) {
-					clear();
-					inputTimes.clear();
-					if (cleanTask != null) {
-						cleanTask.stop();
-						cleanTask = null;
+					@Override
+					public void actionPerformed(ActionEvent arg0) {
+						clear();
+						inputTimes.clear();
+						if (cleanTask != null) {
+							cleanTask.stop();
+							cleanTask = null;
+						}
 					}
-				}
 
-			});
-			cleanTask.setInitialDelay(timeout);
-			cleanTask.setRepeats(false);
-			cleanTask.start();
+				});
+				cleanTask.setInitialDelay(timeout);
+				cleanTask.setRepeats(false);
+				cleanTask.start();
+			}
 
 			inputTimes.put(key, Long.valueOf(System.currentTimeMillis()));
 			return super.put(key, value);
@@ -111,7 +111,7 @@
 	public int getTimeout() {
 		return timeout;
 	}
-	
+
 	@Override
 	public boolean containsKey(Object key) {
 		return get(key) != null;



More information about the Schmitzm-commits mailing list