Os objetos KAction manipulam eventos implementando o método IRPTEventHandler. Quando ocorrer um evento como uma falha no ponto de verificação ou falha de conexão, faça a seguinte chamada para o objeto KAction que é pai do evento:
KAction.registerEvent(eventType, eventBehavior);
No exemplo anterior, o parâmetro eventType é o tipo de falha. O parâmetro eventBehavior é a ação a ser tomada quando ocorrer a falha.
Durante o procedimento KAction.finish(), todos os comportamentos de eventos registrados são processados. Os comportamentos que são registrados para um evento específico são processados. Comportamentos aplicáveis que são especificados em um nível superior na hierarquia de eventos são processados.
O seguinte código implementa a 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; } }
Os seguintes exemplos de códigos demonstram como implementar a manipulação de erros no tempo de execução para a 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); } }
O comportamento para uma falha na conexão do servidor agora inclui o seguinte código:
registerEvent(((IRPTEventGenerator)m_Request.getServerConnection()).getEventType(), ((IRPTEventGenerator)m_Request.getServerConnection()).getEventBehavior());