home *** CD-ROM | disk | FTP | other *** search
- package java.io;
-
- import java.util.Map;
- import java.util.Set;
-
- class ExpiringCache {
- private long millisUntilExpiration;
- private Map map;
- private int queryCount;
- private int queryOverflow;
- private int MAX_ENTRIES;
-
- ExpiringCache() {
- this(30000L);
- }
-
- ExpiringCache(long var1) {
- this.queryOverflow = 300;
- this.MAX_ENTRIES = 200;
- this.millisUntilExpiration = var1;
- this.map = new 1(this);
- }
-
- synchronized String get(String var1) {
- if (++this.queryCount >= this.queryOverflow) {
- this.cleanup();
- }
-
- Entry var2 = this.entryFor(var1);
- return var2 != null ? var2.val() : null;
- }
-
- synchronized void put(String var1, String var2) {
- if (++this.queryCount >= this.queryOverflow) {
- this.cleanup();
- }
-
- Entry var3 = this.entryFor(var1);
- if (var3 != null) {
- var3.setTimestamp(System.currentTimeMillis());
- var3.setVal(var2);
- } else {
- this.map.put(var1, new Entry(System.currentTimeMillis(), var2));
- }
-
- }
-
- synchronized void clear() {
- this.map.clear();
- }
-
- private Entry entryFor(String var1) {
- Entry var2 = (Entry)this.map.get(var1);
- if (var2 != null) {
- long var3 = System.currentTimeMillis() - var2.timestamp();
- if (var3 < 0L || var3 >= this.millisUntilExpiration) {
- this.map.remove(var1);
- var2 = null;
- }
- }
-
- return var2;
- }
-
- private void cleanup() {
- Set var1 = this.map.keySet();
- String[] var2 = new String[var1.size()];
- int var3 = 0;
-
- for(String var5 : var1) {
- var2[var3++] = var5;
- }
-
- for(int var6 = 0; var6 < var2.length; ++var6) {
- this.entryFor(var2[var6]);
- }
-
- this.queryCount = 0;
- }
-
- // $FF: synthetic method
- static int access$000(ExpiringCache var0) {
- return var0.MAX_ENTRIES;
- }
- }
-