01: package com.sun.portal.util;
02:
03: import java.util.Observable;
04: import java.util.Observer;
05:
06: /*
07: * com.sun.portal.util.ServersList maintains a list of currently
08: * available portal instances. com.sun.portal.rproxy.configservlet.HostAccess also
09: * needs to know the list of available portal instance to prevent single point of
10: * failure and load balance all user profile requests.
11: *
12: * Just break the circular dependency between these two packages if ServerList is
13: * directly used in SrapClient a Mediator pattern is being implemented.
14: *
15: * @ see com.sun.portal.util.HostAvailabilityEvent
16: * @ see com.sun.portal.util.HostAvailabilityListener
17: * @ see com.sun.portal.util.HostAvailabilityEventImpl
18: *
19: * @author Rajesh T
20: * @version 1.0
21: * @date 25-07-2002
22: *
23: */
24:
25: public final class HostAvailabilityMediator extends Observable {
26:
27: private static HostAvailabilityMediator mediator = new HostAvailabilityMediator();
28:
29: /*
30: * Singleton - private constructor
31: */
32:
33: private HostAvailabilityMediator() {
34: }
35:
36: /*
37: * @ returns the reference to the Singleton
38: */
39:
40: public static HostAvailabilityMediator getHostAvailabilityMediator() {
41: return mediator;
42: }
43:
44: /*
45: * adds a observer or a intrested party to the list, to notify in case there
46: * are changes in the host availability
47: */
48:
49: public static final void addHostAvailabilityListener(
50: HostAvailabilityListener hal) {
51: getHostAvailabilityMediator().addObserver(((Observer) hal));
52: }
53:
54: /*
55: * removes a observer or a intrested party from the list.
56: */
57:
58: public static final void removeHostAvailabilityListener(
59: HostAvailabilityListener hal) {
60: getHostAvailabilityMediator().deleteObserver(((Observer) hal));
61: }
62:
63: /*
64: * Notifies all the currently registered observers. Notification order
65: * depends on the Observable implementation
66: */
67:
68: public static final void notifyListeners(HostAvailabilityEvent hae) {
69: getHostAvailabilityMediator().setChanged();
70: getHostAvailabilityMediator().notifyObservers(hae);
71: }
72:
73: }
|