/** * */ package org.hyperdata.scute.validate; import org.hyperdata.scute.status.StatusEvent; import org.hyperdata.scute.status.StatusMonitor; import org.hyperdata.scute.status.StatusTask; import org.hyperdata.scute.system.Log; /** * The Class Validator. * * @author danja */ public class Validator extends StatusTask { private Validatable validatable; /** * Instantiates a new validator. * * @param validatable * the validatable */ public Validator(Validatable validatable) { this.validatable = validatable; } public StatusEvent validate() { StatusEvent starting = new StatusEvent(StatusMonitor.AMBER); stateChanged(starting); StatusEvent event = null; try { // ask the Validatable to validate itself event = validatable.validate(); } catch (Exception exception) { // Log.exception(exception); event = new StatusEvent(StatusMonitor.RED, exception.getMessage()); // stateChanged(); } // broadcast results to listeners stateChanged(event); return event; } /* * (non-Javadoc) * * @see java.lang.Runnable#run() */ @Override public void run() { validate(); } /* (non-Javadoc) * @see org.hyperdata.scute.status.Stoppable#stop() */ @Override public void stop() { // ignore - should be short-lived task } }