Author: dennyxu
Date: 2009-08-19 04:25:09 -0400 (Wed, 19 Aug 2009)
New Revision: 17147
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Builder.java
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Validator.java
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/ValidatorHelper.java
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CValidator.java
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/FromValidator.java
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/xpath/XPathVisitor.java
trunk/bpel/plugins/org.eclipse.bpel.xpath10/src/org/eclipse/bpel/xpath10/LiteralExpr.java
Log:
JBIDE-4732:fixed the issues described in the jira :The summary of BPEL validator issue
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Builder.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Builder.java 2009-08-19
08:10:03 UTC (rev 17146)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Builder.java 2009-08-19
08:25:09 UTC (rev 17147)
@@ -4,10 +4,13 @@
* Java JDK dependencies
*/
+import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
+import java.util.List;
import java.util.Map;
+import org.eclipse.bpel.model.Import;
import org.eclipse.bpel.model.Process;
import org.eclipse.bpel.model.resource.BPELResourceSetImpl;
import org.eclipse.bpel.validator.factory.AdapterFactory;
@@ -16,19 +19,23 @@
import org.eclipse.bpel.validator.model.IProblem;
import org.eclipse.bpel.validator.model.Messages;
import org.eclipse.bpel.validator.model.Runner;
+import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceDelta;
+import org.eclipse.core.resources.IResourceVisitor;
import org.eclipse.core.resources.IncrementalProjectBuilder;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdapterManager;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Platform;
import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.wst.wsdl.WSDLElement;
import org.w3c.dom.Element;
@@ -142,6 +149,7 @@
continue;
}
+ fResourceSet.resourceChanged((IFile)resource);
validate ( resource, monitor );
}
}
@@ -152,9 +160,18 @@
*/
@Override
protected void clean (IProgressMonitor monitor) throws CoreException {
-
+ removeProblemsAndTasksFor(getProject());
}
+ public static void removeProblemsAndTasksFor(IResource resource) {
+ try {
+ if (resource != null && resource.exists()) {
+ resource.deleteMarkers(IBPELMarker.ID, false, IResource.DEPTH_INFINITE);
+ }
+ } catch (CoreException e) {
+ // assume there were no problems
+ }
+ }
/**
* Validate the resource using the monitor passed.
*
@@ -182,14 +199,72 @@
// TODO: This should be a better check
if ( file.getName().endsWith(".bpel")) {
- file.deleteMarkers(IBPELMarker.ID, false, IResource.DEPTH_ZERO);
+ file.deleteMarkers(IBPELMarker.ID, true, IResource.DEPTH_INFINITE);
+ deleteMarkersInReferencialResources(file);
makeMarkers ( validate ( file, monitor ) );
}
break;
+
+ case IResource.PROJECT:
+ for(IFile bpelFile : getBPELFilesByProject((IProject)resource)){
+ p("File Resource : " + bpelFile.getName() );
+
+ bpelFile.deleteMarkers(IBPELMarker.ID, true, IResource.DEPTH_INFINITE);
+ deleteMarkersInReferencialResources(bpelFile);
+ makeMarkers ( validate ( bpelFile, monitor ) );
+ }
}
+
+
}
+ private List<IFile> getBPELFilesByProject(IProject project){
+
+ final List<IFile> bpelFolders = new ArrayList<IFile>();
+ IResourceVisitor bpelFolderFinder = new IResourceVisitor() {
+
+ public boolean visit(IResource resource) throws CoreException {
+ if( resource.getType() == IResource.FILE){
+ if("bpel".equals(resource.getFileExtension())){
+ bpelFolders.add((IFile)resource);
+ return false;
+ }
+ }
+ return true;
+ }
+ };
+ try {
+ project.accept(bpelFolderFinder);
+ } catch (CoreException e) {
+ e.printStackTrace();
+ }
+
+ return bpelFolders;
+ }
+ private void deleteMarkersInReferencialResources(IFile bpelFile) throws CoreException{
+
+ fResourceSet.resourceChanged(bpelFile);
+ fReader.read( bpelFile, fResourceSet );
+ Process process = fReader.getProcess();
+
+ p("Delete markers");
+
+ IContainer container = bpelFile.getParent();
+ for(Import impt : process.getImports()){
+ String fileLocation = impt.getLocation();
+ IFile importedFile = container.getFile(new Path(fileLocation));
+ if(importedFile != null && importedFile.exists()){
+ importedFile.deleteMarkers(IBPELMarker.ID, false, IResource.DEPTH_ZERO);
+ }
+ }
+
+ }
+
+
+ public void clearCach(){
+ fResourceSet.getResources().clear();
+ }
/**
* @param file
* @param monitor
@@ -203,7 +278,7 @@
p("Validating BPEL Resource : " + file.getName() );
// Step 1. Read the BPEL process using the Model API.
-
+
fResourceSet.resourceChanged(file);
fReader.read( file, fResourceSet );
Process process = fReader.getProcess();
@@ -274,7 +349,6 @@
Element el = wsdle.getElement();
if (el != null) {
// System.out.println(el.getOwnerDocument().getDocumentURI() + " " +
el.getLocalName() + "----" + obj);
-
el.setUserData("emf.model", obj, null); //$NON-NLS-1$
}
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Validator.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Validator.java 2009-08-19
08:10:03 UTC (rev 17146)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/Validator.java 2009-08-19
08:25:09 UTC (rev 17147)
@@ -14,8 +14,8 @@
import java.util.List;
import org.eclipse.bpel.validator.model.IProblem;
-import org.eclipse.core.resources.IContainer;
import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.IResourceVisitor;
@@ -25,6 +25,7 @@
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Platform;
import org.eclipse.wst.validation.internal.core.ValidationException;
+import org.eclipse.wst.validation.internal.operations.WorkbenchReporter;
import org.eclipse.wst.validation.internal.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
@@ -63,7 +64,6 @@
* @see
org.eclipse.wst.validation.internal.provisional.core.IValidator#cleanup(org.eclipse.wst.validation.internal.provisional.core.IReporter)
*/
public void cleanup (IReporter reporter) {
- // p("Doing cleanup ...");
}
/**
@@ -76,17 +76,11 @@
public void validate (IValidationContext helper, IReporter reporter)
throws ValidationException {
- reporter.removeAllMessages(this);
String s[] = helper.getURIs();
if (s.length < 1) {
- if(helper instanceof ValidatorHelper){
- s = getURIsByProject(((ValidatorHelper)helper).getProject());
- }
- else{
- return ;
- }
+ return ;
}
for (String f : s) {
@@ -98,6 +92,10 @@
continue ;
}
+ //because the validate will validate its referenced artefacts, if those referenced
+ //file was changed, clear the catch to make sure those referenced file to be
reloaded.
+ fBuilder.clearCach();
+
if (mechanism == 1) {
// delegate all the "builder"
p("Using mechanism 1: Calling Builder");
@@ -119,32 +117,7 @@
}
}
- private String[] getURIsByProject(IProject project){
-
- final List<String> bpelFolders = new ArrayList<String>();
- IResourceVisitor bpelFolderFinder = new IResourceVisitor() {
-
- public boolean visit(IResource resource) throws CoreException {
- if( resource.getType() == IResource.FILE){
- if("bpel".equals(resource.getFileExtension())){
- bpelFolders.add(resource.getFullPath().toOSString());
- return false;
- }
- }
- return true;
- }
- };
- try {
- project.accept(bpelFolderFinder);
- } catch (CoreException e) {
- e.printStackTrace();
- }
-
- String[] URIs = new String[bpelFolders.size()];
- return bpelFolders.toArray(URIs);
- }
-
void p(String msg) {
if (bDebug) {
System.out.printf("[%1$s]>> %2$s\n", getClass().getName(),msg);
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/ValidatorHelper.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/ValidatorHelper.java 2009-08-19
08:10:03 UTC (rev 17146)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/ValidatorHelper.java 2009-08-19
08:25:09 UTC (rev 17147)
@@ -10,8 +10,12 @@
*******************************************************************************/
package org.eclipse.bpel.validator;
+import org.eclipse.core.resources.IMarker;
+import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
+import org.eclipse.core.runtime.CoreException;
import org.eclipse.wst.validation.internal.operations.WorkbenchContext;
+import org.eclipse.wst.validation.internal.operations.WorkbenchReporter;
/**
* @author Michal Chmielewski (michal.chmielewski(a)oracle.com)
@@ -24,6 +28,5 @@
public void registerResource(IResource resource) {
getValidationFileURIs().add(resource.getFullPath().toOSString());
}
-
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CValidator.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CValidator.java 2009-08-19
08:10:03 UTC (rev 17146)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/CValidator.java 2009-08-19
08:25:09 UTC (rev 17147)
@@ -277,7 +277,7 @@
* @param toNode
*/
public void compatibleCopyCheck ( INode fromNode, INode toNode ) {
-
+ int i =0;
INode fromTypeNode = getValue(fromNode,"type",null);
INode toTypeNode = getValue(toNode,"type",null);
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/FromValidator.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/FromValidator.java 2009-08-19
08:10:03 UTC (rev 17146)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/rules/FromValidator.java 2009-08-19
08:25:09 UTC (rev 17147)
@@ -421,7 +421,6 @@
sa = 1000
)
public void rule_CheckExpressionVariant_50 () {
-
// not this variant.
if (fVariableNode != null ||
fPropertyNode != null ||
Modified:
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/xpath/XPathVisitor.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/xpath/XPathVisitor.java 2009-08-19
08:10:03 UTC (rev 17146)
+++
trunk/bpel/plugins/org.eclipse.bpel.validator/src/org/eclipse/bpel/validator/xpath/XPathVisitor.java 2009-08-19
08:25:09 UTC (rev 17147)
@@ -161,7 +161,7 @@
if (obj instanceof Number) {
mContext.push( ((Number)obj).doubleValue() * (-1) );
} else {
- mContext.push(0.0);
+ mContext.push(obj);
}
}
Modified:
trunk/bpel/plugins/org.eclipse.bpel.xpath10/src/org/eclipse/bpel/xpath10/LiteralExpr.java
===================================================================
---
trunk/bpel/plugins/org.eclipse.bpel.xpath10/src/org/eclipse/bpel/xpath10/LiteralExpr.java 2009-08-19
08:10:03 UTC (rev 17146)
+++
trunk/bpel/plugins/org.eclipse.bpel.xpath10/src/org/eclipse/bpel/xpath10/LiteralExpr.java 2009-08-19
08:25:09 UTC (rev 17147)
@@ -50,7 +50,7 @@
char ch1 = string.charAt(0);
char ch2 = string.charAt(string.length()-1);
if ( (ch1 == '"' || ch1 == '\'') && ch1 == ch2 ) {
- return string.substring(1, string.length()-2);
+ return string.substring(1, string.length()-1);
}
return string;
}