1 4 package org.oddjob.logging; 5 6 import java.util.HashMap ; 7 import java.util.Map ; 8 9 12 class SimpleCounter { 13 14 private Map counter = new HashMap (); 15 16 public void add(Object key) { 17 add(key, null); 18 } 19 20 synchronized public void add(Object key, Runnable newAction) { 21 Integer count = (Integer ) counter.get(key); 22 if (count == null) { 23 count = new Integer (1); 24 if (newAction != null) { 25 newAction.run(); 26 } 27 } else { 28 count = new Integer (count.intValue() + 1); 29 } 30 counter.put(key, count); 31 } 32 33 public void remove(Object key) { 34 remove(key, null); 35 } 36 37 synchronized public void remove(Object key, Runnable emptyAction) { 38 Integer count = (Integer ) counter.get(key); 39 int c = count.intValue(); 40 if (c == 1) { 41 counter.remove(key); 42 if (emptyAction != null) { 43 emptyAction.run(); 44 } 45 } else { 46 count = new Integer (c - 1); 47 } 48 } 49 50 } 51 | Popular Tags |