Bei Objekten des Typs KAction erfolgt der Umgang mit Ereignissen über Implementieren der Methode IRPTEventHandler. Wenn ein Ereignis wie ein Prüfpunktfehler oder ein Verbindungsfehler eintritt, müssen Sie den folgenden Aufruf des Objekts KAction vornehmen, das als übergeordnetes Element des Ereignisses fungiert:
KAction.registerEvent(eventType, eventBehavior);
Im genannten Beispiel handelt es sich beim Parameter eventType um den Fehlertyp. Der Parameter eventBehavior beinhaltet die Aktion, die ergriffen werden muss, wenn der Fehler auftritt.
Im Rahmen der Prozedur KAction.finish() werden alle registrierten Verhaltensweisen von Ereignissen verarbeitet. Verarbeitet werden die Verhaltensweisen, die für ein bestimmtes Ereignis registriert sind. Außerdem werden die jeweils zutreffenden Verhaltensweisen verarbeitet, die in der Ereignishierarchie auf höherer Ebene angegeben sind.
Mit dem folgenden Code wird die Klasse RPTEventGenerator implementiert:
public abstract class RPTEventGenerator implements IRPTEventGenerator{ RPTEvent behavior = null; boolean behaviorSet = false; IKAction act = null; RPTEvent eventType; public void setEventBehavior(IKAction act, RPTEvent eventType, RPTEvent behavior){ behaviorSet = true; this.behavior = behavior; this.act = act; this.eventType = eventType; } public RPTEvent getEventBehavior(){ return behavior; } public RPTEvent getEventType(){ return eventType; } public KAction getAction(){ return act; } }
In den folgenden Codebeispielen wird gezeigt, wie Sie die Fehlerbehandlung zur Ausführungszeit für die Klasse ServerConnection implementieren.
public class ServerConnection extends RPTEventGenerator implements IServerConnection { public ServerConnection(String name, int port, ISSLInfo sslInfo, INtlmAuthenticationContext ntlmContext, IProxyServerInfo proxyServerInfo, boolean closeWhenTestCompletes, RPTEvent behav) { this.serverAddr = new InetAddressInfo(name, port); this.sslInfo = sslInfo; this.ntlmCxt = ntlmContext; this.proxyInfo = proxyServerInfo; this.inUse = true; this.closeWhenTestCompletes = closeWhenTestCompletes; setEventBehavior(null, new RPTConnectEvent(), behav); } }
Zum Verhalten für einen Serververbindungsfehler gehört jetzt der folgende Code:
registerEvent(((IRPTEventGenerator)m_Request.getServerConnection()).getEventType(), ((IRPTEventGenerator)m_Request.getServerConnection()).getEventBehavior());