Die Hook-Objekte, die die Verbindungen zwischen den
Javabeans erzeugen, werden nach Eingabe der
relevanten Verbindungsdaten automatisch vom Beanbox-Programm
HookupManager
im Hintergrund erzeugt. Die Instrumentierung der Hooks wird daher über die
Instrumentierung des HookupManagers durchgeführt.
Der HookupManager schreibt mittels out.println pro Verbindung ein Hookupnnn.java-File mit den Methoden:
In den *Performed-Methoden wird der von der SourceBean abgefeuerte Event
empfangen und die benötigte Methode des TargetBeans aufgerufen. Nur der
StartButton empfängt einen Event mit einer anderen, nämlich mit der
MousePressed-Methode; diese kommt in keinem Hook vor.
In dieses Hook-File werden Aufrufe von Methoden eines Messobjekt so
eingefügt, dass die
Zeit vor und nach Ausführung der Zielmethode im TargetBean festgehalten
wird.
Die verbundenen Javabeans und die Hooks werden von der Beanbox zu einer
Gesamtanwendung (Beispiel AbApplet unten) zusammengefügt, die als Applet
abgespeichert werden kann.
Die folgenden Codezeilen zeigen einen Ausschnitt aus einem solchen Applet
mit den für die Verbindung der Javabeans relevanten Anweisungen:
public class AbApplet extends Applet implements Serializable { public AbApplet() { ... 1. // Create nested beans mediBean1 = (MediBean) Beans.instantiate(myLoader,"MediBean"); ourButton1 = (sunw.demo.buttons.StartButton) Beans.instantiate(myLoader,"sunw.demo.buttons.StartButton"); addConnections(); } private void addConnections() { try { 2. hookup0 = new tmp.sunw.beanbox.___Hookup_16b2e51e6d(); hookup0.setTarget(med6Bean1); ourButton1.addActionListener(hookup0); } catch (Exception ex) { System.err.println("Problems adding a target: "+ex); ex.printStackTrace(); } } 3. // The fields used to hold the beans private MediBean mediBean1; private sunw.demo.buttons.StartButton ourButton1; // The hookups private tmp.sunw.beanbox.___Hookup_16b2e51e6d hookup0; private ClassLoader myLoader; }
Feuert die SourceBean den ActionEvent, so gelangt er zunächst zum Hook-Objekt und veranlasst dort, dass die gewünschte Methode der TargetBean zwischen zwei eingefügten Messpunkten aufgerufen wird:
... actionPerformed(ActionEvent arg0){ ... // setze Messpunkt (Targetname,..) target.zielmethode(); // setze Messpunkt (Targetname,..) ... }
Mittels dieser Messpunkte wird im Agenten die Laufzeit der Zielmethode
berechnet.