/** * Store the file deltas (VMD <=>Set[IFileDelta]) if the file deltas haven't been loaded. If the * deltas have already been loaded, return without doing anything. */ private void loadFileDeltas(IProgressMonitor monitor) throws CoreException { // Although, for a full build, we don't build up a list of changed // files, we do need to notify each IWorkbenchContext that an // IResource has been filtered in. // It's a full validation if the IResourceDelta is null and the // Object[] (or IResource[]) is also null. // i.e., it's a full validation if no incremental input has been set. setFullValidate((getDelta() == null) && (_fileDeltas == null)); if (isFullValidate()) { _fileDeltas = FilterUtil.loadDeltas(monitor, getEnabledValidators(), getProject()); } else { _fileDeltas = FilterUtil.loadDeltas(monitor, getEnabledValidators(), getDelta()); // traverse, // and process, each resource in the delta tree } }
/** * Return true if, given the enabled validators and file deltas, there is work for this * operation to do. */ public boolean isNecessary(IProgressMonitor monitor) throws CoreException, OperationCanceledException { Set enabledValidators = getEnabledValidators(); if ((enabledValidators == null) || (enabledValidators.size() == 0)) { return false; } if (isFullValidate()) { return true; } Iterator iterator = enabledValidators.iterator(); while (iterator.hasNext()) { ValidatorMetaData vmd = (ValidatorMetaData) iterator.next(); if (isValidationNecessary(vmd, getFileDeltas(monitor, vmd))) { return true; } } return false; }
/** * @param delta * @return */ private void getFileResourceDeltaInFolder(IResourceDelta delta, List inputFiles) { IResourceDelta[] resourceDelta = delta.getAffectedChildren(); for (int i = 0; i < resourceDelta.length; i++) { IResource resource = resourceDelta[i].getResource(); if (resource instanceof IFile) { inputFiles.add(resource); } else if (resource instanceof IFolder) getFileResourceDeltaInFolder(resourceDelta[i], inputFiles); } }
checkCanceled(reporter); reporter.getProgressMonitor().beginTask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_PROGRESSMONITOR_TITLE), getUnitsOfWork()); IValidator validator = null; ValidatorMetaData vmd = null; iterator = getEnabledValidators().iterator(); if( isFork() && (valInstance != null) && valInstance instanceof IValidatorJob ){ try { delta = getFileDeltas(reporter.getProgressMonitor(), vmd); } catch (CoreException e) { e.printStackTrace(); boolean willRun = (isForce() || isValidationNecessary(vmd, delta)); if( willRun ){ jobValidators.add( vmd ); launchJobs( jobValidators, reporter ); delta = getFileDeltas(reporter.getProgressMonitor(), vmd); boolean willRun = (isForce() || isValidationNecessary(vmd, delta)); if (logger.isLoggingLevel(Level.FINEST)) { TimeEntry entry = ValidationPlugin.getTimeEntry(); entry.setSourceID("ValidationOperation.validate(WorkbenchReporter)"); //$NON-NLS-1$ entry.setProjectName(getProject().getName()); entry.setToolName(vmd.getValidatorUniqueName()); entry.setElapsedTime(0); buffer.append(" "); //$NON-NLS-1$
checkCanceled(reporter); delta = getFileDeltas(reporter.getProgressMonitor(), vmd); boolean willRun = (isForce() || isValidationNecessary(vmd, delta)); if (!willRun) { continue; logger.write(Level.SEVERE, entry); String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}); reporter.displaySubtask(mssg); workbenchcontext = vmd.createHelper( getProject() ); initValidateContext( delta, workbenchcontext ); vmd.addHelper((IValidatorJob)validator, workbenchcontext); checkCanceled(reporter); checkCanceled(reporter); removeOldMessages(reporter, validator, vmd, delta); launchValidatorJob( reporter, (IValidatorJob)validator, vmd, workbenchcontext, delta); logger.write(Level.SEVERE, entry); String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}); reporter.displaySubtask(mssg);
return; if (ValidatorManager.getManager().isSuspended(getProject())) { return; if (!areValidatorsEnabled()) { final WorkbenchReporter reporter = new WorkbenchReporter(getProject(), progressMonitor); checkCanceled(reporter); preValidate(reporter); validate(reporter); validateReferencialFiles(reporter); } catch (CoreException exc) { if (logger.isLoggingLevel(Level.SEVERE)) { TimeEntry entry = ValidationPlugin.getTimeEntry(); entry.setSourceID("ValidationOperation.run(WorkbenchMonitor)"); //$NON-NLS-1$ entry.setProjectName(getProject().getName()); entry.setToolName("ValidationOperation"); //$NON-NLS-1$ entry.setElapsedTime(finish - start);
checkCanceled(reporter); Logger logger = ValidationPlugin.getPlugin().getMsgLogger(); ((WorkbenchContext) helper).setRuleGroup(getRuleGroup()); String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_STARTING_VALIDATION, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}); reporter.displaySubtask(message); if (logger.isLoggingLevel(Level.FINEST)) { getLaunchedValidators().add(vmd); TimeEntry entry = ValidationPlugin.getTimeEntry(); entry.setSourceID("ValidationOperation.launchValidator"); //$NON-NLS-1$ entry.setProjectName(getProject().getName()); entry.setToolName(vmd.getValidatorUniqueName()); entry.setElapsedTime(finish - start); if (logger.isLoggingLevel(Level.FINE)) { StringBuffer buffer = new StringBuffer(); if (isFullValidate()) { buffer.append("EVERYTHING"); //$NON-NLS-1$ } else { buffer.append("NOTHING"); //$NON-NLS-1$ } else { buffer.append(getDeltaAsString(delta)); message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}); reporter.displaySubtask(message); } catch (MessageLimitException exc) {
void internalValidate(final WorkbenchReporter reporter, final IValidator validator, final ValidatorMetaData vmd,final IWorkbenchContext aContext, final IFileDelta[] delta) throws OperationCanceledException { final Logger logger = ValidationPlugin.getPlugin().getMsgLogger(); try { checkCanceled(reporter); removeOldMessages(reporter, validator, vmd, delta); launchValidator(reporter, validator, vmd, aContext, delta); } catch (OperationCanceledException exc) { logger.write(Level.SEVERE, entry); String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}); reporter.displaySubtask(mssg);
/** * @deprecated Will be removed in Milestone 3. */ protected void terminateCleanup(WorkbenchReporter reporter) { Set enabledValidators = getEnabledValidators(); Iterator iterator = enabledValidators.iterator(); ValidatorMetaData vmd = null; while (iterator.hasNext()) { vmd = (ValidatorMetaData) iterator.next(); reporter.displaySubtask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_VALIDATOR_CLEANUP, new String[]{vmd.getValidatorDisplayName()})); try { reporter.removeAllMessages(vmd.getValidator()); } catch (InstantiationException exc) { // Remove the vmd from the reader's list ValidationRegistryReader.getReader().disableValidator(vmd); // Log the reason for the disabled validator final Logger logger = ValidationPlugin.getPlugin().getMsgLogger(); if (logger.isLoggingLevel(Level.SEVERE)) { LogEntry entry = ValidationPlugin.getLogEntry(); entry.setSourceID("ValidationOperation::terminateCleanup"); //$NON-NLS-1$ entry.setTargetException(exc); logger.write(Level.SEVERE, entry); } continue; } addCancelTask(vmd); reporter.displaySubtask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_VALIDATOR_TERMINATED, new String[]{getProject().getName(), vmd.getValidatorDisplayName()})); } }
InternalValidatorManager.getManager().removeOperationTasks(getProject(), vmd); checkCanceled(reporter); Logger logger = ValidationPlugin.getPlugin().getMsgLogger(); try { if (isFullValidate()) { String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_START_REMOVING_OLD_MESSAGES, new String[]{vmd.getValidatorDisplayName(), getProject().getName()}); reporter.displaySubtask(message); reporter.removeAllMessages(validator); message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_FINISH_REMOVING_OLD_MESSAGES, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}); reporter.displaySubtask(message); } else { String message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_START_REMOVING_OLD_MESSAGES, new String[]{vmd.getValidatorDisplayName(), getProject().getName()}); reporter.displaySubtask(message); for (int i = 0; i < delta.length; i++) { message = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_FINISH_REMOVING_OLD_MESSAGES, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}); reporter.displaySubtask(message); logger.write(Level.SEVERE, entry); String mssg = ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_ENDING_VALIDATION_ABNORMALLY, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}); reporter.displaySubtask(mssg);
return; checkCanceled(reporter); Logger logger = ValidationPlugin.getPlugin().getMsgLogger(); ((WorkbenchContext) helper).setRuleGroup(getRuleGroup()); getLaunchedValidators().add(vmd);
/** * @param reporter * @param referencialFileValidator */ private void refFileValidateFileDelta(WorkbenchReporter reporter, ReferencialFileValidator refFileValidator) { IResourceDelta[] resourceDelta = _delta.getAffectedChildren(IResourceDelta.ADDED | IResourceDelta.CHANGED | IResourceDelta.REMOVED); List inputFiles = new ArrayList(); // A list of IFile's List referencingFiles = new ArrayList(); if (resourceDelta != null && resourceDelta.length > 0) { for (int i = 0; i < resourceDelta.length; i++) { IResource resource = resourceDelta[i].getResource(); if (resource instanceof IFolder) { getFileResourceDeltaInFolder(resourceDelta[i], inputFiles); } else if (resource instanceof IFile) inputFiles.add(resource); } List rFilesToValidate = refFileValidator.getReferencedFile(inputFiles); if (rFilesToValidate != null && !rFilesToValidate.isEmpty()) referencingFiles.addAll(rFilesToValidate); try { if (!referencingFiles.isEmpty()) validateReferencingFiles(reporter, referencingFiles); } catch (Exception e) { Logger.getLogger().log(e); } } }
/** * @param reporter * @param referencialFileValidator */ private void postValidateProject(WorkbenchReporter reporter, ReferencialFileValidator refFileValidator) { Set set = ValidationRegistryReader.getReader().getValidatorMetaData(_project); Iterator it = set.iterator(); while (it.hasNext()) { ValidatorMetaData data = (ValidatorMetaData) it.next(); List filters = data.getNameFilters(); List files = getAllFilesForFilter(filters); if (!files.isEmpty()) { List fileForValidation = refFileValidator.getReferencedFile(files); try { validateReferencingFiles(reporter, fileForValidation); } catch (Exception e) { Logger.getLogger().log(e); } } } }
addCancelTask(vmd); reporter.displaySubtask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_VALIDATOR_TERMINATED, new String[]{getProject().getName(), vmd.getValidatorDisplayName()})); while (iterator.hasNext()) { vmd = (ValidatorMetaData) iterator.next(); addCancelTask(vmd); reporter.displaySubtask(ResourceHandler.getExternalizedMessage(ResourceConstants.VBF_STATUS_VALIDATOR_TERMINATED, new String[]{getProject().getName(), vmd.getValidatorDisplayName()}));
private IFileDelta[] getFileDeltas(IProgressMonitor monitor, ValidatorMetaData vmd) throws CoreException { Set result = (Set) getFileDeltas(monitor).get(vmd); if (result == null) { return new IFileDelta[0]; } IFileDelta[] temp = new IFileDelta[result.size()]; result.toArray(temp); return temp; }
protected boolean areValidatorsEnabled() { return (getEnabledValidators().size() != 0); }
protected void preValidate(WorkbenchReporter reporter) throws CoreException, OperationCanceledException { // Load the input. getFileDeltas(reporter.getProgressMonitor()); }