use of org.eclipse.xtext.validation.Issue in project statecharts by Yakindu.
the class ShadowModelValidationJob method runInternal.
@Override
protected IStatus runInternal(final IProgressMonitor monitor) {
ResourceSet set = new ResourceSetImpl();
try {
if (!resource.isLoaded())
return Status.CANCEL_STATUS;
final Resource shadowResource = set.createResource(resource.getURI());
cloneResource(monitor, shadowResource);
if (monitor.isCanceled())
return Status.CANCEL_STATUS;
final List<Issue> issues = Lists.newArrayList();
try {
issues.addAll(doValidation(monitor, shadowResource));
} catch (Throwable ex) {
return Status.CANCEL_STATUS;
}
validationIssueProcessor.processIssues(issues, monitor);
} catch (Exception ex) {
ex.printStackTrace();
return new Status(IStatus.ERROR, DiagramActivator.PLUGIN_ID, ex.getMessage());
}
return Status.OK_STATUS;
}
use of org.eclipse.xtext.validation.Issue in project n4js by eclipse.
the class N4JSResourceValidator method validate.
@Override
public List<Issue> validate(Resource resource, CheckMode mode, CancelIndicator cancelIndicator) {
if (resource instanceof N4JSResource) {
final N4JSResource resourceCasted = (N4JSResource) resource;
try {
resourceCasted.performPostProcessing(cancelIndicator);
} catch (Throwable th) {
// ignore this exception/error (we will create an issue for it below)
}
if (resourceCasted.isFullyProcessed() && resourceCasted.getPostProcessingThrowable() != null) {
// When getting here, we have an attempt to validate a resource that was post-processed but the
// post-processing failed (i.e. postProcessingThrowable!=null). Validating such a resource will usually
// cause a multitude of follow-up exceptions in many @Check methods (could easily be hundreds). Since,
// EMF/Xtext has the behavior of not aborting the overall validation due to an exception in a single
// @Check method, this will lead to many exceptions, which are all just follow-up issues of the problem
// that caused the post-processing to fail.
// 1) Since this is annoying and misleading, we just ignore all ordinary validation.
// 2) To not overlook the problem, we create a single validation issue (error) pointing out the problem.
// (for a test, see class AvoidFollowUpExceptionsInValidationTest)
final Throwable th = resourceCasted.getPostProcessingThrowable();
if (operationCanceledManager.isOperationCanceledException(th)) {
// do not show errors in case of cancellation
return Collections.emptyList();
}
final Issue issue = createPostProcessingFailedError(resourceCasted, th);
return Collections.singletonList(issue);
}
}
return super.validate(resource, mode, cancelIndicator);
}
use of org.eclipse.xtext.validation.Issue in project n4js by eclipse.
the class IssueExpectations method performMatching.
private void performMatching(Collection<Issue> issues, Collection<IssueMatcher> matchers, List<String> messages) {
Iterator<Issue> issueIt = issues.iterator();
while (issueIt.hasNext() && !matchers.isEmpty()) {
Issue issue = issueIt.next();
Iterator<IssueMatcher> matcherIt = matchers.iterator();
while (matcherIt.hasNext()) {
IssueMatcher matcher = matcherIt.next();
if (matcher.matches(issue)) {
issueIt.remove();
matcherIt.remove();
break;
} else if (messages != null) {
messages.addAll(matcher.explainMismatch(issue));
}
}
}
}
use of org.eclipse.xtext.validation.Issue in project Palladio-Editors-Sirius by PalladioSimulator.
the class RandomVariableXtextAdapter method getXtextValidationIssues.
@Override
public List<Issue> getXtextValidationIssues() {
List<Issue> issues = getValidationJob().createIssues(new NullProgressMonitor());
String warningText = "";
for (Issue issue : issues) {
warningText = warningText + issue.getMessage() + "\n";
}
getDecoration().setDescriptionText(warningText);
return issues;
}
use of org.eclipse.xtext.validation.Issue in project xtext-core by eclipse.
the class ValidationTestHelper method doGetIssuesAsString.
protected StringBuilder doGetIssuesAsString(Resource resource, final Iterable<Issue> issues, StringBuilder result) {
for (Issue issue : issues) {
URI uri = issue.getUriToProblem();
result.append(issue.getSeverity());
result.append(" (");
result.append(issue.getCode());
result.append(") '");
result.append(issue.getMessage());
result.append("'");
if (uri != null) {
EObject eObject = resource.getResourceSet().getEObject(uri, true);
result.append(" on ");
result.append(eObject.eClass().getName());
}
result.append(", offset " + issue.getOffset() + ", length " + issue.getLength());
result.append("\n");
}
return result;
}
Aggregations