Java Reference
In-Depth Information
. . .
public void
addObserver(String observerURL,
String eventName)
throws
java.rmi.RemoteException {
subscriptions.add(
new
DSubscription(observerURL,
eventName,
this
.getURL()));
}
// This method is invoked by subclasses of DActivity when
// state transitions occur
public void
notifyEvent(DEvent event) {
for
(
int
i
#
0; i < subscriptions.size(); i
!!
)
((DSubscription) subscriptions.get(i)).
notifyEvent(event);
}
// This method is invoked by remote observable activities
// to notify events
public void
updateEvent(
final
DEvent event)
throws
java.rmi.RemoteException {
Thread thread
#
new
Thread() {
public void
run() { update(event); }
};
thread.start();
}
// this is executed when an observed activity raises an
// event; it should be overridden in every subclass
public void
update(DEvent event){}
}
19.5.4
Test
Class
Runner
and class
Animator
must be extended in order to test the imple-
mentation of the distributed B
L paradigm described above. In particular,
method
step()
of class
Runner
invokes method
notifyObservers()
of class
DActivity
to notify event
NEXT
whenever the runner changes position, while
method
update()
of class
Animator
wakes up the thread when event
NEXT
is
notified. Method
init()
of class
Animator
subscribes to event
NEXT
of the
remote
Runner
activity to be notified of any new position.
-
import
mmi.*;
// public interface RunnerInterface extends java.rmi.Remote {
public interface
RunnerInterface
extends
DObservable {
public void
setSpeed(
int
percent)
throws
java.rmi.RemoteException;
public int
getPosition()
throws
java.rmi.RemoteException;
}