Esempio di codice SampleSubsystem.java

Questo è un esempio di SampleSubsystem.java.

SampleSubsystem.java

package test;

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;

/**
 * Sottosistema del motore RPT di esempio
 */

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);			// Consente l'attesa per la visualizzazione di un elemento sulla coda
	}

	/*
	 * Le azioni entrano nel sottosistema per il servizio mediante una chiamata a enqueue().
	 * Un'azione può richiamare un riferimento al sottosistema mediante il metodo 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);
	}

	/*
	 * Messaggio al sottosistema per l'arresto.
	 * 
	 * @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 sullo stato del sottosistema del motore
			client = null;
			
			// Se non è necessario effettuare alcune operazione, attendere
			updateJob("Idle");
			client = (SampleAction)sampleSubsystemQueue.dequeue(pingTime);

			// Questa operazione del sottosistema rimarrà in contatto con un attributo dell'azione
			if (client != null) {
				updateJob("Servicing " + client.getName());	// Good for debugging
				
				client.setServiced();
				dispatch(client);		// L'azione lascia il sottosistema
			}
		}
	}
}

Feedback