blob: 6fbd55e7f9c3487af2d1c8c45b88d2c1bd1005d7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2001, 2007 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.wst.validation.internal.provisional.core;
import org.eclipse.wst.validation.internal.core.ValidationException;
/**
* This is the base interface for all Validators. A Validator is a class which verifies that objects
* follow some rules. For example, in a MOF model which represents an EJB jar, the EJB specification
* determines the rules.
* <p>
* A validator can perform full validation or incremental validation. All validators must implement
* full validation but incremental validation is optional.
* </p>
* <p>
* Each validator must not be tied to any particular workbench implementation.
* </p>
* <p>
* A validator's verification starts when the ValidatorLauncher singleton calls
* <code>validate</code>.
* </p>
* <p>
* <b>Provisional API:</b> This class/interface is part of an interim API that is still under development and expected to
* change significantly before reaching stability. It is being made available at this early stage to solicit feedback
* from pioneering adopters on the understanding that any code that uses this API will almost certainly be broken
* (repeatedly) as the API evolves.
* </p>
*/
public interface IValidator{
/*
* [issue : CS - Perhaps the IValidator should be required to provide a 'name' that can be used describe
* the running validation 'Job'. Then the framework could automatically say something like 'XYZ validator : cleanup'.
* Relying on the IValidator to provide subtask information seems error prone.]
* [issue: LM - Is the cleanup method necessary? Can the framework put a requirement that client validators 'clean up'
* before returning from the validate method? ]
*/
/**
* Perform any resource cleanup once validation is complete. If cleanup will take some time, the
* IValidator should report subtask information to the user through the IReporter parameter. The
* IReporter parameter will not be null.
*
* @param reporter Used for the interaction with the user.
*/
void cleanup(IReporter reporter);
/*
* [issue : CS - I'm curious to understand why the validator is not invoked directly on a file. It seems it should be the
* domain of another API to manage manage incremental file changes and triggering validations accordingly.
* Do we have a current use case in WTP where the validator does anything more validate a file from the changedFiles list?]
*/
/**
* This is the method which performs the validation on the objects.
* <p>
* <code>helper</code> and <code>reporter</code> may not be null. <code>changedFiles</code>
* may be null, if a full build is desired. <br>
* </p>
* @param helper
* Loads an object.
* @param reporter
* Is an instance of an IReporter interface, which is used for interaction with the user.
*
*/
void validate(IValidationContext helper, IReporter reporter) throws ValidationException;
}