Skip to content

Commit 73914e8

Browse files
committed
fixes #120
1 parent 20d1116 commit 73914e8

File tree

3 files changed

+76
-10
lines changed

3 files changed

+76
-10
lines changed

com.minres.coredsl/src/com/minres/coredsl/scoping/CoreDslGlobalScopeProvider.xtend

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import org.eclipse.xtext.EcoreUtil2
1212
import org.eclipse.xtext.resource.IResourceDescription
1313
import org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider
1414
import org.eclipse.xtext.util.IResourceScopeCache
15+
import org.eclipse.emf.common.util.WrappedException
16+
import com.minres.coredsl.validation.XtCoreDslValidator
17+
import org.eclipse.xtext.diagnostics.ExceptionDiagnostic
1518

1619
class CoreDslGlobalScopeProvider extends ImportUriGlobalScopeProvider {
1720

@@ -23,6 +26,9 @@ class CoreDslGlobalScopeProvider extends ImportUriGlobalScopeProvider {
2326
@Inject
2427
IResourceScopeCache cache;
2528

29+
@Inject
30+
XtCoreDslValidator validator;
31+
2632
override protected getImportedUris(Resource resource) {
2733
return cache.get(CoreDslGlobalScopeProvider.getSimpleName(), resource, new Provider<LinkedHashSet<URI>>() {
2834
override get() {
@@ -50,7 +56,13 @@ class CoreDslGlobalScopeProvider extends ImportUriGlobalScopeProvider {
5056
includedUri = includedUri.resolve(URI::createFileURI(currentPath+"/"))
5157
}
5258
if(uniqueImportURIs.add(includedUri)) {
53-
collectImportUris(resource.getResourceSet().getResource(includedUri, true), uniqueImportURIs)
59+
try {
60+
collectImportUris(resource.getResourceSet().getResource(includedUri, true), uniqueImportURIs)
61+
} catch(WrappedException e) {
62+
/* just ignore it */
63+
resource.errors.add(new ScopeProviderDiagnostic(e.cause.message))
64+
//validator.acceptWarning("Could not find file", it.EObjectOrProxy, CoreDslPackage.Literals.IMPORT__IMPORT_URI, 0, "", "")
65+
}
5466
}
5567
]
5668
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package com.minres.coredsl.scoping
2+
3+
import org.eclipse.xtext.diagnostics.Diagnostic
4+
5+
class ScopeProviderDiagnostic implements Diagnostic {
6+
7+
val String message
8+
9+
new(String message) {
10+
this.message = message
11+
}
12+
13+
override getColumnEnd() {
14+
-1
15+
}
16+
17+
override getLength() {
18+
0
19+
}
20+
21+
override getLineEnd() {
22+
-1
23+
}
24+
25+
override getOffset() {
26+
-1
27+
}
28+
29+
override getColumn() {
30+
-1
31+
}
32+
33+
override getLine() {
34+
-1
35+
}
36+
37+
override getLocation() {
38+
null
39+
}
40+
41+
override getMessage() {
42+
message
43+
}
44+
45+
46+
}

com.minres.coredsl/src/com/minres/coredsl/validator/Main.xtend

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import org.eclipse.xtext.validation.Issue
2424
import picocli.CommandLine
2525
import picocli.CommandLine.Option
2626
import picocli.CommandLine.Parameters
27+
import java.io.FileNotFoundException
2728

2829
class Main implements Callable<Integer> {
2930

@@ -61,12 +62,13 @@ class ValidatorMain {
6162
@Inject IResourceValidator validator
6263

6364
def run(Main params) {
64-
params.repositories.forEach[repository, idx|
65-
val projectMapping = new ProjectMapping
66-
projectMapping.projectName = "Repository:"+idx
67-
projectMapping.path = repository
68-
new StandaloneSetup().addProjectMapping(projectMapping)
69-
]
65+
if(params.repositories !== null && params.repositories.size()>0)
66+
params.repositories.forEach[repository, idx|
67+
val projectMapping = new ProjectMapping
68+
projectMapping.projectName = "Repository:"+idx
69+
projectMapping.path = repository
70+
new StandaloneSetup().addProjectMapping(projectMapping)
71+
]
7072
try {
7173
for (file : params.files) {
7274
// Load the resource
@@ -92,17 +94,23 @@ class ValidatorMain {
9294
if (!errors.empty) {
9395
logger.error("Error validating " + resource.URI)
9496
issues.forEach[logger.error(it)]
95-
throw new ParseException("error validating " + resource.URI)
97+
throw new ParseException("Errors validating " + resource.URI)
9698
} else if (!warnings.empty) {
9799
logger.warn("There are warnings validating " + resource.URI)
98100
issues.forEach[logger.warn(it)]
99101
}
100102
}
101103
logger.info('Code validation for ' + file + ' finished')
102104
}
103-
} catch (MalformedParametersException | IllegalArgumentException | ParseException e) {
104-
logger.error("Command line error " + e.message, e)
105+
} catch (ParseException e) {
106+
logger.error(e.message)
105107
return -1
108+
} catch (FileNotFoundException e) {
109+
logger.error(e.message)
110+
return -2
111+
} catch (MalformedParametersException | IllegalArgumentException e) {
112+
logger.error("Command line error " + e.message)
113+
return -3
106114
}
107115
return 0
108116
}

0 commit comments

Comments
 (0)