Search in sources :

Example 61 with Issue

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;
}
Also used : Status(org.eclipse.core.runtime.Status) IStatus(org.eclipse.core.runtime.IStatus) ResourceSetImpl(org.eclipse.emf.ecore.resource.impl.ResourceSetImpl) Issue(org.eclipse.xtext.validation.Issue) XMLResource(org.eclipse.emf.ecore.xmi.XMLResource) Resource(org.eclipse.emf.ecore.resource.Resource) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) IOException(java.io.IOException) ExecutionException(org.eclipse.core.commands.ExecutionException)

Example 62 with Issue

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);
}
Also used : Issue(org.eclipse.xtext.validation.Issue) N4JSResource(org.eclipse.n4js.resource.N4JSResource)

Example 63 with Issue

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));
            }
        }
    }
}
Also used : Issue(org.eclipse.xtext.validation.Issue)

Example 64 with 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;
}
Also used : NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) Issue(org.eclipse.xtext.validation.Issue)

Example 65 with Issue

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;
}
Also used : Issue(org.eclipse.xtext.validation.Issue) EObject(org.eclipse.emf.ecore.EObject) URI(org.eclipse.emf.common.util.URI)

Aggregations

Issue (org.eclipse.xtext.validation.Issue)108 Test (org.junit.Test)40 XtextResource (org.eclipse.xtext.resource.XtextResource)35 Resource (org.eclipse.emf.ecore.resource.Resource)23 List (java.util.List)20 IResourceValidator (org.eclipse.xtext.validation.IResourceValidator)20 URI (org.eclipse.emf.common.util.URI)16 ArrayList (java.util.ArrayList)12 XtextResourceSet (org.eclipse.xtext.resource.XtextResourceSet)12 IFile (org.eclipse.core.resources.IFile)11 XtendFile (org.eclipse.xtend.core.xtend.XtendFile)11 IXtextDocument (org.eclipse.xtext.ui.editor.model.IXtextDocument)11 IssueResolution (org.eclipse.xtext.ui.editor.quickfix.IssueResolution)11 XtextEditor (org.eclipse.xtext.ui.editor.XtextEditor)10 Severity (org.eclipse.xtext.diagnostics.Severity)9 IOException (java.io.IOException)8 CoreException (org.eclipse.core.runtime.CoreException)8 ResourceSet (org.eclipse.emf.ecore.resource.ResourceSet)8 StringInputStream (org.eclipse.xtext.util.StringInputStream)8 EObject (org.eclipse.emf.ecore.EObject)6