243377 validationStarting/Finishing not called properly during clean/auto build
diff --git a/features/org.eclipse.wst.common_core.feature.patch/buildnotes_org.eclipse.wst.common_core.feature.patch.html b/features/org.eclipse.wst.common_core.feature.patch/buildnotes_org.eclipse.wst.common_core.feature.patch.html
index 8f449e6..919c61a 100644
--- a/features/org.eclipse.wst.common_core.feature.patch/buildnotes_org.eclipse.wst.common_core.feature.patch.html
+++ b/features/org.eclipse.wst.common_core.feature.patch/buildnotes_org.eclipse.wst.common_core.feature.patch.html
@@ -2,9 +2,9 @@
 <html>
 
 <head>
-   <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
-   <meta name="Build" content="Build">
-   <title>WTP 3.0.1 Patches</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+<meta name="Build" content="Build">
+<title>WTP 3.0.1 Patches</title>
 </head>
 
 <body>
@@ -13,7 +13,15 @@
 
 <h2>org.eclipse.wst.common_core.feature</h2>
 
-<p>Bug <a href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=243679'>243679</a>. NPE in ValidationRegistryReade</p>
-<p>Bug <a href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=244086'>244086</a>. Build path errors after restart</p>
+<p>Bug <a
+	href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=243679'>243679</a>.
+NPE in ValidationRegistryReade</p>
+<p>Bug <a
+	href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=244086'>244086</a>.
+Build path errors after restart</p>
+<p>Bug <a
+	href='https://bugs.eclipse.org/bugs/show_bug.cgi?id=243377'>243377</a>.
+validationStarting/Finishing not called properly during clean/auto build</p>
 
-</body></html>
\ No newline at end of file
+</body>
+</html>
\ No newline at end of file
diff --git a/features/org.eclipse.wst.common_core.feature.patch/feature.properties b/features/org.eclipse.wst.common_core.feature.patch/feature.properties
index acdaef7..e94e123 100644
--- a/features/org.eclipse.wst.common_core.feature.patch/feature.properties
+++ b/features/org.eclipse.wst.common_core.feature.patch/feature.properties
@@ -28,7 +28,8 @@
 Contains fixes described in the following bugillia(s):\n\
 \n\
 Bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=243679 NPE in ValidationRegistryReade\n\
-Bug https://bugs.eclipse.org/244086 Build path errors after restart\n\
+Bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=244086 Build path errors after restart\n\
+Bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=243377 validationStarting/Finishing not called properly during clean/auto build\n\
 \n\
 
 # "copyright" property - text of the "Feature Update Copyright"
diff --git a/plugins/org.eclipse.wst.validation/vf2/org/eclipse/wst/validation/internal/ValBuilderJob.java b/plugins/org.eclipse.wst.validation/vf2/org/eclipse/wst/validation/internal/ValBuilderJob.java
index b8be3ac..59c6c63 100644
--- a/plugins/org.eclipse.wst.validation/vf2/org/eclipse/wst/validation/internal/ValBuilderJob.java
+++ b/plugins/org.eclipse.wst.validation/vf2/org/eclipse/wst/validation/internal/ValBuilderJob.java
@@ -32,6 +32,8 @@
 import org.eclipse.wst.validation.IDependencyIndex;
 import org.eclipse.wst.validation.ValidationFramework;
 import org.eclipse.wst.validation.ValidationState;
+import org.eclipse.wst.validation.Validator;
+import org.eclipse.wst.validation.internal.model.IValidatorVisitor;
 import org.eclipse.wst.validation.internal.operations.ValidationBuilder;
 import org.eclipse.wst.validation.internal.plugin.ValidationPlugin;
 
@@ -123,6 +125,7 @@
 			run();
 			request = getRequest();
 		}
+		_request = null;
 		
 		Tracing.log("ValBuilderJob-02: Finished"); //$NON-NLS-1$
 		return Status.OK_STATUS;
@@ -131,8 +134,20 @@
 	private void run(){
 		setName(ValMessages.JobName + " " + _request.getProject().getName()); //$NON-NLS-1$
 		try {		
+	        IValidatorVisitor startingVisitor = new IValidatorVisitor(){
+
+	            public void visit(Validator validator, IProject project, ValType valType, 
+	                ValOperation operation, IProgressMonitor monitor) {
+	                
+	                validator.validationStarting(project, operation.getState(), monitor);                   
+	            }               
+	        };
+
+	        ValManager.getDefault().accept(startingVisitor, _request.getProject(), ValType.Build, _request.getOperation(), _monitor);
+		  
 			if (_request.getDelta() == null)fullBuild();
 			else deltaBuild();
+
 			
 		}
 		catch (ProjectUnavailableError e){
@@ -144,6 +159,17 @@
 		catch (CoreException e){
 			ValidationPlugin.getPlugin().handleException(e);
 		}
+		finally {
+		  IValidatorVisitor finishedVisitor = new IValidatorVisitor(){
+
+		    public void visit(Validator validator, IProject project, ValType valType,
+		      ValOperation operation, IProgressMonitor monitor) {
+
+		      validator.validationFinishing(project, operation.getState(), monitor);              
+		    }           
+		  };
+          ValManager.getDefault().accept(finishedVisitor, _request.getProject(), ValType.Build, _request.getOperation(), _monitor);
+		}
 		
 	}