Amostra de Código SampleSubsystem.java

Este é um exemplo de SampleSubsystem.java.

SampleSubsystem.java

package customcode;

import com.ibm.rational.test.lt.kernel.action.IKAction;
import com.ibm.rational.test.lt.kernel.engine.impl.Queue;
import com.ibm.rational.test.lt.kernel.impl.KSubsystem;

/**
 * Subsistema do Mecanismo RPT de Amostra
 */

public class SampleSubsystem extends KSubsystem {
	private Queue sampleSubsystemQueue;
	private boolean stopRequested = false;
	private SampleAction client;

	public SampleSubsystem(String name) {
		super(name);
		sampleSubsystemQueue = new Queue();
		sampleSubsystemQueue.setBlocking(true);			// Permite aguardar que algo apareça na fila
	}

	/*
	 * As ações entram no subsistema para serviço por meio de uma chamada para enqueue().
	 * Uma ação pode obter uma referência ao subsistema utilizando o método IKAction
	 * getSubsystem().
	 * 
	 * @see com.ibm.rational.test.lt.kernel.IKSubsystem#enqueue(com.ibm.rational.test.lt.kernel.action.IKAction)
	 */
	public void enqueue(IKAction action) {
		sampleSubsystemQueue.enqueue(action);
	}

	/*
	 * Mensagem para o subsistema parar.
	 * 
	 * @see com.ibm.rational.test.lt.kernel.IKSubsystem#shutdown()
	 */
	public void shutdown() {
		stopRequested = true;
	}

	/*
	 * @see java.lang.Thread#run()
	 */
	public void run() {
		while(!stopRequested) {
			ringIn();				// Informa que o subsistema do mecanismo está em funcionamento
			client = null;
			
			// Se não houver nada para fazer, aguarde trabalho
			updateJob("Idle");
			client = (SampleAction)sampleSubsystemQueue.dequeue(pingTime);

			// Este trabalho do subsistema será tocar um atributo da ação
			if (client != null) {
				updateJob("Servicing " + client.getName());	// Ideal para depurar
				
				client.setServiced();
				dispatch(client);		// Ação atendida deixa o subsistema
			}
		}
	}
}

Feedback