content: /*
   * Copyright (c) 2002-2003 by OpenSymphony
   * All rights reserved.
   */
  package com.opensymphony.workflow.util;
  
  import com.opensymphony.workflow.InvalidWorkflowDescriptorException;
  
  /**
   * Abstact base class for elements that can be validated.
   * 
   * @author <a href="mailto:vorburger@users.sourceforge.net">Michael
   *         Vorburger</a>
   * @version $Revision: 1.2 $
   */
  public interface Validatable {
  	// ~ Methods
  	// ////////////////////////////////////////////////////////////////
  
  	/**
  	 * Validate this element, and propagate validation to all contained
  	 * sub-elements. Should throw an InvalidWorkflowDescriptorException with
  	 * details in message if the element is invalid. Validity checks should be
  	 * checks that cannot be encapsulated in the DTD.
  	 * 
  	 * Validation has to be called explicitly on writting, a writeXML() does not
  	 * validate implicitly; it *IS* thus possible to write invalid descriptor
  	 * files. This could be useful for e.g. a graphical workflow definition
  	 * editor which would like to write incomplete definitions. Validation *IS*
  	 * performed on loading a workflow definition.
  	 * 
  	 * @see com.opensymphony.workflow.loader.WorkflowLoader#load
  	 * @throws InvalidWorkflowDescriptorException
  	 */
  	public void validate() throws InvalidWorkflowDescriptorException;
  }
  