Les objets KAction traitent les événements en implémentant la méthode IRPTEventHandler. A l'occurrence d'un événement tel qu'un échec à un point de vérification ou un échec de connexion, émettez l'appel suivant à destination de l'objet KAction qui est le parent de l'événement :
KAction.registerEvent(eventType, eventBehavior);
Dans l'exemple précédent, le paramètre eventType est le type d'échec. Le paramètre eventBehavior est l'action à entreprendre lorsque l'échec se produit.
Durant la procédure KAction.finish(), tous les comportements des événements enregistrés sont traités. Les comportements enregistrés pour un événement spécifique sont traités. Les comportements applicables, spécifiés à un plus haut niveau dans la hiérarchie des événements, sont traités.
Le code suivant implémente la classe RPTEventGenerator :
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;
}
}
Les exemples de code suivants montrent comment implémenter le traitement d'erreurs à l'exécution pour la classe ServerConnection.
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);
}
}
Le comportement appliqué à un échec de connexion à un serveur inclut à présent le code suivant :
registerEvent(((IRPTEventGenerator)m_Request.getServerConnection()).getEventType(), ((IRPTEventGenerator)m_Request.getServerConnection()).getEventBehavior());