1 package org.sourceforge.jemm.client.id;
2
3 import java.util.HashSet;
4 import java.util.Set;
5
6 import org.sourceforge.jemm.client.shared.WeakSingletonFactory;
7 import org.sourceforge.jemm.types.ID;
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 public class TrackedIDFactoryImpl extends WeakSingletonFactory<ID, TrackedID> implements TrackedIDFactory {
30
31 protected final Set<TrackedIDListener> listeners;
32
33
34
35
36 public TrackedIDFactoryImpl() {
37 listeners = new HashSet<TrackedIDListener>();
38 }
39
40 @Override
41 protected void notifyExpired(ID id) {
42 synchronized (listeners) {
43 for(TrackedIDListener l : listeners)
44 l.expired(id);
45 }
46 }
47
48 public void addListener(TrackedIDListener listener) {
49 synchronized (listeners) {
50 listeners.add(listener);
51 }
52 }
53
54 public synchronized void removeListener(TrackedIDListener listener) {
55 synchronized (listeners) {
56 listeners.remove(listener);
57 }
58 }
59
60 @Override
61 protected TrackedID createValue(ID id) {
62 return new TrackedID(id);
63 }
64 }