blob: df851d8bf2b4e88df1036d95ade51dbdcbf504db [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Oracle 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:
* Oracle Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.bpel.validator;
import org.eclipse.bpel.validator.model.IProblem;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdapterManager;
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.provisional.core.IMessage;
import org.eclipse.wst.validation.internal.provisional.core.IReporter;
import org.eclipse.wst.validation.internal.provisional.core.IValidationContext;
import org.eclipse.wst.validation.internal.provisional.core.IValidator;
/**
* @author Michal Chmielewski (michal.chmielewski@oracle.com)
* @date Mar 12, 2007
*
*/
@SuppressWarnings({"nls","restriction"})
public class Validator implements IValidator {
boolean bDebug = true;
int mechanism = 1;
Builder fBuilder = new Builder();
IAdapterManager fAdapterManager = Platform.getAdapterManager();
/**
* Create a brand new shiny validator.
*/
public Validator () {
fBuilder.bDebug = bDebug;
}
/**
* (non-Javadoc)
*
* @see org.eclipse.wst.validation.internal.provisional.core.IValidator#cleanup(org.eclipse.wst.validation.internal.provisional.core.IReporter)
*/
public void cleanup (IReporter reporter) {
}
/**
* @see org.eclipse.wst.validation.internal.provisional.core.IValidator#validate(org.eclipse.wst.validation.internal.provisional.core.IValidationContext,
* org.eclipse.wst.validation.internal.provisional.core.IReporter)
*/
public void validate (IValidationContext helper, IReporter reporter)
throws ValidationException {
reporter.removeAllMessages(this);
String s[] = helper.getURIs();
if (s.length < 1) {
return ;
}
for (String f : s) {
p("Starting validation of " + f );
IResource resource = ResourcesPlugin.getWorkspace().getRoot().findMember(f);
if (resource == null || resource.getType() != IResource.FILE) {
p("File " + f + " does not exist and cannot be validated.");
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");
try {
fBuilder.validate(resource, new NullProgressMonitor() );
} catch (CoreException ce) {
Activator.log(ce);
}
} else if (mechanism == 2) {
p("Using mechanism 2: Using reporter and message");
IProblem problems[] = fBuilder.validate( (IFile) resource, new NullProgressMonitor());
for(IProblem p : problems) {
IMessage msg = (IMessage) fAdapterManager.getAdapter(p, IMessage.class);
if (msg != null) {
reporter.addMessage(this, msg);
}
}
}
}
}
void p(String msg) {
if (bDebug) {
System.out.printf("[%1$s]>> %2$s\n", getClass().getName(),msg);
System.out.flush();
}
}
}