package net.sf.taverna.t2.activities.rest;

import net.sf.taverna.t2.visit.VisitKind;
import net.sf.taverna.t2.visit.Visitor;

/**
 * A <code>RESTActivityHealthCheck</code> is a kind of visit that determines
 * if the corresponding REST activity in a workflow will work during a workflow run.
 *
 * @author Sergejs Aleksejevs
 */
public class RESTActivityHealthCheck extends VisitKind {

	// The following values indicate the type of results that can be associated
	// with a VisitReport generated by a health-checking visitor.

	public static final int CORRECTLY_CONFIGURED = 0;
	public static final int GENERAL_CONFIG_PROBLEM = 10;

	@Override
	public Class<? extends Visitor<?>> getVisitorClass() {
		return RESTActivityHealthChecker.class;
	}

	private static class Singleton {
		private static RESTActivityHealthCheck instance = new RESTActivityHealthCheck();
	}

	public static RESTActivityHealthCheck getInstance() {
		return Singleton.instance;
	}
}
