From d7a35d13cd691e6821f774b624e4203a404e67d9 Mon Sep 17 00:00:00 2001
From: Roberto Sánchez <roberto.sanchez@curisit.net>
Date: Tue, 21 Jan 2014 10:16:13 +0000
Subject: [PATCH] #396 feature - Added authorization management
---
securis/src/main/java/net/curisit/securis/utils/CacheTTL.java | 13 ++++++++++---
1 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/securis/src/main/java/net/curisit/securis/utils/CacheTTL.java b/securis/src/main/java/net/curisit/securis/utils/CacheTTL.java
index 51a59e4..6561517 100644
--- a/securis/src/main/java/net/curisit/securis/utils/CacheTTL.java
+++ b/securis/src/main/java/net/curisit/securis/utils/CacheTTL.java
@@ -1,7 +1,9 @@
package net.curisit.securis.utils;
+import java.util.ArrayList;
import java.util.Date;
-import java.util.Hashtable;
+import java.util.HashMap;
+import java.util.List;
import java.util.Map;
import javax.inject.Inject;
@@ -25,7 +27,7 @@
*/
private static int DEFAULT_CACHE_DURATION = 24 * 60 * 60;
- private Map<String, CachedObject> data = new Hashtable<>();
+ private Map<String, CachedObject> data = new HashMap<>();
private Thread cleaningThread = null;
@@ -46,12 +48,17 @@
}
// log.info("Cheking expired objects " + new Date());
Date now = new Date();
+ List<String> keysToRemove = new ArrayList<>();
for (String key : CacheTTL.this.data.keySet()) {
CachedObject co = CacheTTL.this.data.get(key);
if (now.after(co.getExpireAt())) {
- CacheTTL.this.data.remove(key);
+ keysToRemove.add(key);
}
}
+ for (String key : keysToRemove) {
+ // If we try to remove directly in the previous loop an exception is thrown java.util.ConcurrentModificationException
+ CacheTTL.this.data.remove(key);
+ }
}
}
});
--
Gitblit v1.3.2