1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.kuali.rice.kew.plugin;
18
19 import java.util.Collections;
20 import java.util.HashSet;
21 import java.util.Iterator;
22 import java.util.Set;
23
24
25
26
27
28
29 public class Reloader implements Runnable {
30
31 private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(Reloader.class);
32
33 private final Set<Reloadable> reloadables = Collections.synchronizedSet(new HashSet<Reloadable>());
34
35 public void run() {
36 try {
37 LOG.debug("Checking if any reloading is necessary...");
38 synchronized (reloadables) {
39 for (Iterator iterator = reloadables.iterator(); iterator.hasNext();) {
40 Reloadable reloadable = (Reloadable) iterator.next();
41 LOG.debug("Checking reloadable: " + reloadable);
42 if (reloadable.isReloadable() && reloadable.isReloadNeeded()) {
43
44
45
46 LOG.info("Reloading: " + reloadable);
47 reloadable.reload();
48
49 }
50 }
51 }
52 } catch (Throwable t) {
53 LOG.error("Failed to reload plugin.", t);
54 }
55 }
56
57 public void addReloadable(Reloadable reloadable) {
58 reloadables.add(reloadable);
59 }
60
61 public void removeReloadable(Reloadable reloadable) {
62 reloadables.remove(reloadable);
63 }
64
65 public Set<Reloadable> getReloadables() {
66 return reloadables;
67 }
68
69 }