<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0) on Tue Jan 27 04:28:33 EST 2009 -->
<TITLE>
ValidationFramework
</TITLE>

<META NAME="date" CONTENT="2009-01-27">

<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../stylesheet.css" TITLE="Style">

<SCRIPT type="text/javascript">
function windowTitle()
{
    if (location.href.indexOf('is-external=true') == -1) {
        parent.document.title="ValidationFramework";
    }
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>

</HEAD>

<BODY BGCOLOR="white" onload="windowTitle();">
<HR>


<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ValidationFramework.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../serialized-form.html"><FONT CLASS="NavBarFont1"><B>Serialized</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/eclipse/wst/validation/ValidationEvent.html" title="class in org.eclipse.wst.validation"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.ResourceAdder.html" title="class in org.eclipse.wst.validation"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/eclipse/wst/validation/ValidationFramework.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ValidationFramework.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->

<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
org.eclipse.wst.validation</FONT>
<BR>
Class ValidationFramework</H2>
<PRE>
java.lang.Object
  <IMG SRC="../../../../resources/inherit.gif" ALT="extended by "><B>org.eclipse.wst.validation.ValidationFramework</B>
</PRE>
<HR>
<DL>
<DT><PRE>public final class <B>ValidationFramework</B><DT>extends java.lang.Object</DL>
</PRE>

<P>
The central class of the Validation Framework.
 <p>
 This is a singleton class that is accessed through the getDefault() method. 
 <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>
<P>

<P>
<HR>

<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->

<A NAME="nested_class_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Nested Class Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;class</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.ResourceAdder.html" title="class in org.eclipse.wst.validation">ValidationFramework.ResourceAdder</A></B></CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->

<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#addValidationBuilder(IProject)">addValidationBuilder</A></B>(IProject&nbsp;project)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Add the validation builder to the project, so that the project can support
 build time validation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#applyChanges(org.eclipse.wst.validation.MutableProjectSettings, boolean)">applyChanges</A></B>(<A HREF="../../../../org/eclipse/wst/validation/MutableProjectSettings.html" title="class in org.eclipse.wst.validation">MutableProjectSettings</A>&nbsp;settings,
             boolean&nbsp;persist)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Apply the changes that have been been to the validation settings.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#applyChanges(org.eclipse.wst.validation.MutableWorkspaceSettings, boolean)">applyChanges</A></B>(<A HREF="../../../../org/eclipse/wst/validation/MutableWorkspaceSettings.html" title="class in org.eclipse.wst.validation">MutableWorkspaceSettings</A>&nbsp;settings,
             boolean&nbsp;persist)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Apply the changes that have been been to the validation settings.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#clearMessages(IResource, java.lang.String)">clearMessages</A></B>(IResource&nbsp;resource,
              java.lang.String&nbsp;validatorId)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Clear any validation markers that may have been set by this validator.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#disableValidation(IResource)">disableValidation</A></B>(IResource&nbsp;resource)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Disable all validation for the given resource.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#enableValidation(IResource)">enableValidation</A></B>(IResource&nbsp;resource)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Enable validation for the given resource.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>static&nbsp;<A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html" title="class in org.eclipse.wst.validation">ValidationFramework</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getDefault()">getDefault</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the singleton, default instance of this class.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/IDependencyIndex.html" title="interface in org.eclipse.wst.validation">IDependencyIndex</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getDependencyIndex()">getDependencyIndex</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the dependency index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;java.util.Set&lt;<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>&gt;</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getDisabledValidatorsFor(IResource)">getDisabledValidatorsFor</A></B>(IResource&nbsp;resource)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer all the validators that should not validate the resource, either
 because their filters don't support the resource, or the validator has
 been disabled for both build validation and manual validation.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/IPerformanceMonitor.html" title="interface in org.eclipse.wst.validation">IPerformanceMonitor</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getPerformanceMonitor()">getPerformanceMonitor</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer a performance monitor for the validators.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;IEclipsePreferences</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getPreferenceStore()">getPreferenceStore</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the preference store that holds the persisted global validation settings.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/MutableProjectSettings.html" title="class in org.eclipse.wst.validation">MutableProjectSettings</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getProjectSettings(IProject)">getProjectSettings</A></B>(IProject&nbsp;project)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the validation settings that have been defined on the
 project.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/internal/provisional/core/IReporter.html" title="interface in org.eclipse.wst.validation.internal.provisional.core">IReporter</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getReporter(IProject, IProgressMonitor)">getReporter</A></B>(IProject&nbsp;project,
            IProgressMonitor&nbsp;monitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getValidator(java.lang.String)">getValidator</A></B>(java.lang.String&nbsp;id)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<B>Deprecated.</B>&nbsp;<I>Use getValidator(String id, IProject project) with a null project instead.</I></TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getValidator(java.lang.String, IProject)">getValidator</A></B>(java.lang.String&nbsp;id,
             IProject&nbsp;project)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the validator with the given id that is in effect for the given
 project.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getValidators()">getValidators</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer copies of all the registered validators.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getValidatorsConfiguredForProject(IProject)">getValidatorsConfiguredForProject</A></B>(IProject&nbsp;project)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Validators can use project level settings (Project natures and facets) to
 determine if they are applicable to the project or not.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getValidatorsFor(IResource)">getValidatorsFor</A></B>(IResource&nbsp;resource)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer all the validators that are applicable for the given resource.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[]</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getValidatorsFor(IResource, boolean, boolean)">getValidatorsFor</A></B>(IResource&nbsp;resource,
                 boolean&nbsp;isManual,
                 boolean&nbsp;isBuild)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer all the validators that are applicable for the given resource.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/MutableWorkspaceSettings.html" title="class in org.eclipse.wst.validation">MutableWorkspaceSettings</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#getWorkspaceSettings()">getWorkspaceSettings</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer the validation settings that have been defined at the workspace level.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#hasValidators(IResource, boolean, boolean)">hasValidators</A></B>(IResource&nbsp;resource,
              boolean&nbsp;isManual,
              boolean&nbsp;isBuild)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer true if the resource has any enabled validators.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#isLoaded(org.eclipse.wst.validation.Validator)">isLoaded</A></B>(<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>&nbsp;validator)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Answer whether or not the validator has been activated, i.e. has the
 bundle that defines the validator been loaded.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#isProjectSuspended(IProject)">isProjectSuspended</A></B>(IProject&nbsp;project)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This method should be called by any code that is preparing to suspend validation on a
 project.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#isSuspended()">isSuspended</A></B>()</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true if "suspend all" is enabled, false otherwise.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#isSuspended(IProject)">isSuspended</A></B>(IProject&nbsp;project)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if validation will not run on the project because it's been suspended.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#join(IProgressMonitor)">join</A></B>(IProgressMonitor&nbsp;monitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Waits until all validation jobs are finished.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#saveValidators(org.eclipse.wst.validation.Validator[])">saveValidators</A></B>(<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[]&nbsp;validators)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Save the validators settings into the persistent store, there by making their settings the active settings.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#suspendAllValidation(boolean)">suspendAllValidation</A></B>(boolean&nbsp;suspend)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Suspends, or undoes the suspension of, validation on all projects in the
 workbench.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#suspendValidation(IProject, boolean)">suspendValidation</A></B>(IProject&nbsp;project,
                  boolean&nbsp;suspend)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Suspends, or undoes the suspension of, validation on the current project.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/ValidationResults.html" title="class in org.eclipse.wst.validation">ValidationResults</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#validate(IFile, IProgressMonitor)">validate</A></B>(IFile&nbsp;file,
         IProgressMonitor&nbsp;monitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Validate a specific file resource.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../org/eclipse/wst/validation/ValidationResults.html" title="class in org.eclipse.wst.validation">ValidationResults</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#validate(IProject[], boolean, boolean, IProgressMonitor)">validate</A></B>(IProject[]&nbsp;projects,
         boolean&nbsp;isManual,
         boolean&nbsp;isBuild,
         IProgressMonitor&nbsp;monitor)</CODE>

<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Validate the projects.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.Object</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait</CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>

<!-- ============ METHOD DETAIL ========== -->

<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>

<A NAME="getDefault()"><!-- --></A><H3>
getDefault</H3>
<PRE>
public static <A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html" title="class in org.eclipse.wst.validation">ValidationFramework</A> <B>getDefault</B>()</PRE>
<DL>
<DD>Answer the singleton, default instance of this class.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="addValidationBuilder(IProject)"><!-- --></A><H3>
addValidationBuilder</H3>
<PRE>
public void <B>addValidationBuilder</B>(IProject&nbsp;project)</PRE>
<DL>
<DD>Add the validation builder to the project, so that the project can support
 build time validation. It is safe to call this method, if the builder was
 previously added to the project. It will not be added more than once.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>project</CODE> - The project that the builder is added to.</DL>
</DD>
</DL>
<HR>

<A NAME="clearMessages(IResource, java.lang.String)"><!-- --></A><H3>
clearMessages</H3>
<PRE>
public void <B>clearMessages</B>(IResource&nbsp;resource,
                          java.lang.String&nbsp;validatorId)
                   throws CoreException</PRE>
<DL>
<DD>Clear any validation markers that may have been set by this validator.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>resource</CODE> - The resource that may have it's markers cleared.<DD><CODE>validatorId</CODE> - The id of validator that created the marker.
<DT><B>Throws:</B>
<DD><CODE>CoreException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="disableValidation(IResource)"><!-- --></A><H3>
disableValidation</H3>
<PRE>
public void <B>disableValidation</B>(IResource&nbsp;resource)</PRE>
<DL>
<DD>Disable all validation for the given resource. This method instructs
 the framework to not run any validators on the given resource or any of
 it's children. This setting is persistent. Currently this only works with version 2
 validators.
 <p>
 Use the enableValidation method to restore validation.
 </p>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>resource</CODE> - The resource that is having validation disabled. It must be an IFolder or an IFile.<DT><B>See Also:</B><DD><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#enableValidation(IResource)"><CODE>enableValidation(IResource)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="enableValidation(IResource)"><!-- --></A><H3>
enableValidation</H3>
<PRE>
public void <B>enableValidation</B>(IResource&nbsp;resource)</PRE>
<DL>
<DD>Enable validation for the given resource. If the resource was not
 previously disabled this method call has no effect. Currently this only
 works with version 2 validators.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>resource</CODE> - The resource that is having validation re-enabled.<DT><B>See Also:</B><DD><A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#disableValidation(IResource)"><CODE>disableValidation(IResource)</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getDependencyIndex()"><!-- --></A><H3>
getDependencyIndex</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/IDependencyIndex.html" title="interface in org.eclipse.wst.validation">IDependencyIndex</A> <B>getDependencyIndex</B>()</PRE>
<DL>
<DD>Answer the dependency index. Validators can use this to determine which resources depend on which
 other resources.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getPerformanceMonitor()"><!-- --></A><H3>
getPerformanceMonitor</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/IPerformanceMonitor.html" title="interface in org.eclipse.wst.validation">IPerformanceMonitor</A> <B>getPerformanceMonitor</B>()</PRE>
<DL>
<DD>Answer a performance monitor for the validators.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getPreferenceStore()"><!-- --></A><H3>
getPreferenceStore</H3>
<PRE>
public IEclipsePreferences <B>getPreferenceStore</B>()</PRE>
<DL>
<DD>Answer the preference store that holds the persisted global validation settings.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getReporter(IProject, IProgressMonitor)"><!-- --></A><H3>
getReporter</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/internal/provisional/core/IReporter.html" title="interface in org.eclipse.wst.validation.internal.provisional.core">IReporter</A> <B>getReporter</B>(IProject&nbsp;project,
                             IProgressMonitor&nbsp;monitor)</PRE>
<DL>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="getValidatorsFor(IResource, boolean, boolean)"><!-- --></A><H3>
getValidatorsFor</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[] <B>getValidatorsFor</B>(IResource&nbsp;resource,
                                    boolean&nbsp;isManual,
                                    boolean&nbsp;isBuild)</PRE>
<DL>
<DD>Answer all the validators that are applicable for the given resource. A validator is
 still returned even if it has been turned off by the user.
 <p>
 The caller may still need to test if the validator has been turned off by
 the user, by using the isBuildValidation() and isManualValidation()
 methods.
 </p>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>resource</CODE> - The resource that determines which validators are applicable.<DD><CODE>isManual</CODE> - If true then the validator must be turned on for manual validation.
                If false then the isManualValidation setting isn't used to filter
                out validators.<DD><CODE>isBuild</CODE> - If true then the validator must be turned on for build based
                validation. If false then the isBuildValidation setting isn't used
                to filter out validators.<DT><B>See Also:</B><DD><A HREF="../../../../org/eclipse/wst/validation/Validator.html#isBuildValidation()"><CODE>Validator.isBuildValidation()</CODE></A>, 
<A HREF="../../../../org/eclipse/wst/validation/Validator.html#isManualValidation()"><CODE>Validator.isManualValidation()</CODE></A></DL>
</DD>
</DL>
<HR>

<A NAME="getDisabledValidatorsFor(IResource)"><!-- --></A><H3>
getDisabledValidatorsFor</H3>
<PRE>
public java.util.Set&lt;<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>&gt; <B>getDisabledValidatorsFor</B>(IResource&nbsp;resource)</PRE>
<DL>
<DD>Answer all the validators that should not validate the resource, either
 because their filters don't support the resource, or the validator has
 been disabled for both build validation and manual validation.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>resource</CODE> - The resource this is being tested.</DL>
</DD>
</DL>
<HR>

<A NAME="getValidator(java.lang.String)"><!-- --></A><H3>
getValidator</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A> <B>getValidator</B>(java.lang.String&nbsp;id)</PRE>
<DL>
<DD><B>Deprecated.</B>&nbsp;<I>Use getValidator(String id, IProject project) with a null project instead.</I>
<P>
<DD>Answer the global validator with the given id.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - 
<DT><B>Returns:</B><DD>null if the validator is not found</DL>
</DD>
</DL>
<HR>

<A NAME="getValidator(java.lang.String, IProject)"><!-- --></A><H3>
getValidator</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A> <B>getValidator</B>(java.lang.String&nbsp;id,
                              IProject&nbsp;project)</PRE>
<DL>
<DD>Answer the validator with the given id that is in effect for the given
 project.
 <p>
 Individual projects may override the global validation preference
 settings. If this is allowed and if the project has it's own settings,
 then those validators are returned via this method.
 </p>
 <p>
 The following approach is used. For version 1 validators, the validator
 is only returned if it is defined to operate on this project type. This
 is the way that the previous version of the framework did it. For version
 2 validators, they are all returned.
 </p>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>id</CODE> - Validator id.<DD><CODE>project</CODE> - This can be null, in which case all the registered validators are
                checked.
<DT><B>Returns:</B><DD>null if the validator is not found</DL>
</DD>
</DL>
<HR>

<A NAME="getValidators()"><!-- --></A><H3>
getValidators</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[] <B>getValidators</B>()</PRE>
<DL>
<DD>Answer copies of all the registered validators.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>Answer an empty array if there are no validators.</DL>
</DD>
</DL>
<HR>

<A NAME="getProjectSettings(IProject)"><!-- --></A><H3>
getProjectSettings</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/MutableProjectSettings.html" title="class in org.eclipse.wst.validation">MutableProjectSettings</A> <B>getProjectSettings</B>(IProject&nbsp;project)</PRE>
<DL>
<DD>Answer the validation settings that have been defined on the
 project. To "activate" any changes to these settings, the
 <A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#applyChanges(org.eclipse.wst.validation.MutableProjectSettings, boolean)"><CODE>applyChanges(MutableProjectSettings, boolean)</CODE></A> method needs to be
 called.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>project</CODE> - The project who's settings you wish to examine or change.
<DT><B>Returns:</B><DD>Validation settings that apply to the given project.</DL>
</DD>
</DL>
<HR>

<A NAME="getWorkspaceSettings()"><!-- --></A><H3>
getWorkspaceSettings</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/MutableWorkspaceSettings.html" title="class in org.eclipse.wst.validation">MutableWorkspaceSettings</A> <B>getWorkspaceSettings</B>()
                                              throws java.lang.reflect.InvocationTargetException</PRE>
<DL>
<DD>Answer the validation settings that have been defined at the workspace level.
 To "activate" any changes to these settings, the
 <A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.html#applyChanges(org.eclipse.wst.validation.MutableWorkspaceSettings, boolean)"><CODE>applyChanges(MutableWorkspaceSettings, boolean)</CODE></A> method needs to be
 called.
<P>
<DD><DL>

<DT><B>Returns:</B><DD>Validation settings that apply to the entire workspace.
<DT><B>Throws:</B>
<DD><CODE>java.lang.reflect.InvocationTargetException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="applyChanges(org.eclipse.wst.validation.MutableProjectSettings, boolean)"><!-- --></A><H3>
applyChanges</H3>
<PRE>
public void <B>applyChanges</B>(<A HREF="../../../../org/eclipse/wst/validation/MutableProjectSettings.html" title="class in org.eclipse.wst.validation">MutableProjectSettings</A>&nbsp;settings,
                         boolean&nbsp;persist)</PRE>
<DL>
<DD>Apply the changes that have been been to the validation settings.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>settings</CODE> - The project settings.<DD><CODE>persist</CODE> - If true then the changes are persisted to the property files.
            If false the changes are applied to the validators, but are
            not persisted.</DL>
</DD>
</DL>
<HR>

<A NAME="applyChanges(org.eclipse.wst.validation.MutableWorkspaceSettings, boolean)"><!-- --></A><H3>
applyChanges</H3>
<PRE>
public void <B>applyChanges</B>(<A HREF="../../../../org/eclipse/wst/validation/MutableWorkspaceSettings.html" title="class in org.eclipse.wst.validation">MutableWorkspaceSettings</A>&nbsp;settings,
                         boolean&nbsp;persist)</PRE>
<DL>
<DD>Apply the changes that have been been to the validation settings.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>settings</CODE> - The workspace settings.<DD><CODE>persist</CODE> - If true then the changes are persisted to the property files.
            If false the changes are applied to the validators, but are
            not persisted.</DL>
</DD>
</DL>
<HR>

<A NAME="getValidatorsConfiguredForProject(IProject)"><!-- --></A><H3>
getValidatorsConfiguredForProject</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[] <B>getValidatorsConfiguredForProject</B>(IProject&nbsp;project)
                                              throws org.eclipse.wst.validation.internal.ProjectUnavailableError</PRE>
<DL>
<DD>Validators can use project level settings (Project natures and facets) to
 determine if they are applicable to the project or not.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>project</CODE> - The project that the configuration is based on.
<DT><B>Returns:</B><DD>The copies of the validators that are configured to run on this project based
         on the project level settings.
<DT><B>Throws:</B>
<DD><CODE>org.eclipse.wst.validation.internal.ProjectUnavailableError</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="getValidatorsFor(IResource)"><!-- --></A><H3>
getValidatorsFor</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[] <B>getValidatorsFor</B>(IResource&nbsp;resource)</PRE>
<DL>
<DD>Answer all the validators that are applicable for the given resource.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>resource</CODE> - the resource that determines which validators are applicable.</DL>
</DD>
</DL>
<HR>

<A NAME="hasValidators(IResource, boolean, boolean)"><!-- --></A><H3>
hasValidators</H3>
<PRE>
public boolean <B>hasValidators</B>(IResource&nbsp;resource,
                             boolean&nbsp;isManual,
                             boolean&nbsp;isBuild)</PRE>
<DL>
<DD>Answer true if the resource has any enabled validators.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>resource</CODE> - A file, folder or project.<DD><CODE>isManual</CODE> - If true then the validator must be turned on for manual validation.
                If false then the isManualValidation setting isn't used to filter
                out validators.<DD><CODE>isBuild</CODE> - If true then the validator must be turned on for build based
                validation. If false then the isBuildValidation setting isn't used
                to filter out validators.</DL>
</DD>
</DL>
<HR>

<A NAME="isLoaded(org.eclipse.wst.validation.Validator)"><!-- --></A><H3>
isLoaded</H3>
<PRE>
public boolean <B>isLoaded</B>(<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>&nbsp;validator)</PRE>
<DL>
<DD>Answer whether or not the validator has been activated, i.e. has the
 bundle that defines the validator been loaded. We do not want to cause
 unnecessary bundle loading, so this check can be performed by third party
 callers, to prevent making other calls that will force the validator to
 be loaded.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>validator</CODE> - The validator that is being tested.
<DT><B>Returns:</B><DD>true if the validator has already been loaded.</DL>
</DD>
</DL>
<HR>

<A NAME="join(IProgressMonitor)"><!-- --></A><H3>
join</H3>
<PRE>
public void <B>join</B>(IProgressMonitor&nbsp;monitor)
          throws java.lang.InterruptedException,
                 OperationCanceledException</PRE>
<DL>
<DD>Waits until all validation jobs are finished. This method will block the
 calling thread until all such jobs have finished executing, or until this
 thread is interrupted. If there are no validation jobs that are
 currently waiting, running, or sleeping, this method returns immediately.
 Feedback on how the join is progressing is provided to the progress
 monitor.
 <p>
 If this method is called while the job manager is suspended, only jobs
 that are currently running will be joined. Once there are no jobs in the
 family in the <CODE>Job#RUNNING</CODE> state, this method returns.
 </p>
 <p>
 Note that there is a deadlock risk when using join. If the calling thread
 owns a lock or object monitor that the joined thread is waiting for,
 deadlock will occur. This method can also result in starvation of the
 current thread if another thread continues to add jobs of the given
 family, or if a job in the given family reschedules itself in an infinite
 loop.
 </p>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>monitor</CODE> - Progress monitor for reporting progress on how the wait is
                progressing, or <code>null</code> if no progress monitoring is
                required.
<DT><B>Throws:</B>
<DD><CODE>java.lang.InterruptedException</CODE> - if this thread is interrupted while waiting
<DD><CODE>OperationCanceledException</CODE> - if the progress monitor is canceled while waiting</DL>
</DD>
</DL>
<HR>

<A NAME="suspendValidation(IProject, boolean)"><!-- --></A><H3>
suspendValidation</H3>
<PRE>
public void <B>suspendValidation</B>(IProject&nbsp;project,
                              boolean&nbsp;suspend)</PRE>
<DL>
<DD>Suspends, or undoes the suspension of, validation on the current project.
 If <b>suspend</b> is true then validation is suspended and if it's false
 then validation is not suspended on the project. The value of this
 variable is not persisted.
 <p>
 Be <b>very careful</b> when you use this method! Turn validation back on in a
 finally block because if the code which suspended validation crashes, the
 user has no way to reset the suspension. The user will have to shut down
 and restart the workbench to get validation to work again.
 </p>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>project</CODE> - The project that is to be suspended or unsuspended.<DD><CODE>suspend</CODE> - If true, validation on the project will be suspend. If false it will
                not be suspended.</DL>
</DD>
</DL>
<HR>

<A NAME="saveValidators(org.eclipse.wst.validation.Validator[])"><!-- --></A><H3>
saveValidators</H3>
<PRE>
public void <B>saveValidators</B>(<A HREF="../../../../org/eclipse/wst/validation/Validator.html" title="class in org.eclipse.wst.validation">Validator</A>[]&nbsp;validators)
                    throws java.lang.reflect.InvocationTargetException</PRE>
<DL>
<DD>Save the validators settings into the persistent store, there by making their settings the active settings.
 <p>
 A common use of this method would be to change whether particular validators are enabled or not. For example
 if you only wanted the JSP validator enabled, you could use code similar to this:
 <pre>
 ValidationFramework vf = ValidationFramework.getDefault();
 Validator[] vals = vf.getValidators();
 for (Validator v : vals){
   boolean enabled = false;
   if (v.getValidatorClassname().equals("org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator"))enabled = true;
     v.setBuildValidation(enabled);
     v.setManualValidation(enabled);
  }
 vf.saveValidators(vals);
 </pre>
 </p>
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>validators</CODE> - The validators that you are saving.
<DT><B>Throws:</B>
<DD><CODE>java.lang.reflect.InvocationTargetException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="suspendAllValidation(boolean)"><!-- --></A><H3>
suspendAllValidation</H3>
<PRE>
public void <B>suspendAllValidation</B>(boolean&nbsp;suspend)</PRE>
<DL>
<DD>Suspends, or undoes the suspension of, validation on all projects in the
 workbench. If "suspend" is true then validation is suspended and if it's
 "false" then validation is not suspended. The value of this variable is
 not persisted.
 <p>
 Be <b>very careful</b> when you use this method! Turn validation back on in a
 finally block because if the code which suspended validation crashes, the
 user has no way to reset the suspension. The user will have to shut down
 and restart the workbench to get validation to work again.
 </p>
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="isSuspended()"><!-- --></A><H3>
isSuspended</H3>
<PRE>
public boolean <B>isSuspended</B>()</PRE>
<DL>
<DD>Return true if "suspend all" is enabled, false otherwise.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="isSuspended(IProject)"><!-- --></A><H3>
isSuspended</H3>
<PRE>
public boolean <B>isSuspended</B>(IProject&nbsp;project)</PRE>
<DL>
<DD>Returns true if validation will not run on the project because it's been suspended. This
 method checks only the suspension status; if validation cannot run for some other reason (for
 example, there are no enabled validators), yet the IProject is not suspended, this method
 will return true even though validation will not run.
<P>
<DD><DL>
</DL>
</DD>
</DL>
<HR>

<A NAME="isProjectSuspended(IProject)"><!-- --></A><H3>
isProjectSuspended</H3>
<PRE>
public boolean <B>isProjectSuspended</B>(IProject&nbsp;project)</PRE>
<DL>
<DD>This method should be called by any code that is preparing to suspend validation on a
 project. Rather than calling isSuspended(IProject), which will also return true if all validation
 has been suspended.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>project</CODE> - the project that is being tested
<DT><B>Returns:</B><DD>boolean true if the project has been suspended</DL>
</DD>
</DL>
<HR>

<A NAME="validate(IProject[], boolean, boolean, IProgressMonitor)"><!-- --></A><H3>
validate</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/ValidationResults.html" title="class in org.eclipse.wst.validation">ValidationResults</A> <B>validate</B>(IProject[]&nbsp;projects,
                                  boolean&nbsp;isManual,
                                  boolean&nbsp;isBuild,
                                  IProgressMonitor&nbsp;monitor)
                           throws CoreException</PRE>
<DL>
<DD>Validate the projects. Exactly one of isManual or isBuild needs to be true.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>projects</CODE> - The projects to be validated.<DD><CODE>isManual</CODE> - Is this being done as part of a manual validation? i.e. did
            the user select the Validate menu item?<DD><CODE>isBuild</CODE> - Is this being done as part of a build?<DD><CODE>monitor</CODE> - 
<DT><B>Returns:</B><DD>the validation result which is the combined result for all the
         resources that were validated.
<DT><B>Throws:</B>
<DD><CODE>CoreException</CODE></DL>
</DD>
</DL>
<HR>

<A NAME="validate(IFile, IProgressMonitor)"><!-- --></A><H3>
validate</H3>
<PRE>
public <A HREF="../../../../org/eclipse/wst/validation/ValidationResults.html" title="class in org.eclipse.wst.validation">ValidationResults</A> <B>validate</B>(IFile&nbsp;file,
                                  IProgressMonitor&nbsp;monitor)
                           throws CoreException</PRE>
<DL>
<DD>Validate a specific file resource.
<P>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>file</CODE> - The file to be validated.<DD><CODE>monitor</CODE> - Progress monitor.
<DT><B>Returns:</B><DD>the result of validating the file.
<DT><B>Throws:</B>
<DD><CODE>CoreException</CODE></DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>


<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
  <TR ALIGN="center" VALIGN="top">
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="class-use/ValidationFramework.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../serialized-form.html"><FONT CLASS="NavBarFont1"><B>Serialized</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
  <TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1">    <A HREF="../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
  </TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>

<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;<A HREF="../../../../org/eclipse/wst/validation/ValidationEvent.html" title="class in org.eclipse.wst.validation"><B>PREV CLASS</B></A>&nbsp;
&nbsp;<A HREF="../../../../org/eclipse/wst/validation/ValidationFramework.ResourceAdder.html" title="class in org.eclipse.wst.validation"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
  <A HREF="../../../../index.html?org/eclipse/wst/validation/ValidationFramework.html" target="_top"><B>FRAMES</B></A>  &nbsp;
&nbsp;<A HREF="ValidationFramework.html" target="_top"><B>NO FRAMES</B></A>  &nbsp;
&nbsp;<SCRIPT type="text/javascript">
  <!--
  if(window==top) {
    document.writeln('<A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>');
  }
  //-->
</SCRIPT>
<NOSCRIPT>
  <A HREF="../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>


</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
  SUMMARY:&nbsp;<A HREF="#nested_class_summary">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;CONSTR&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->

<HR>

</BODY>
</HTML>
