-
Notifications
You must be signed in to change notification settings - Fork 62
Expand file tree
/
Copy pathKerMLRuntimeModule.xtend
More file actions
104 lines (89 loc) · 3.5 KB
/
Copy pathKerMLRuntimeModule.xtend
File metadata and controls
104 lines (89 loc) · 3.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/*
* generated by Xtext 2.18.0.M3
*/
package org.omg.kerml.xtext
import com.google.inject.Binder
import com.google.inject.name.Names
import org.eclipse.xtext.linking.ILinker
import org.eclipse.xtext.naming.IQualifiedNameConverter
import org.eclipse.xtext.naming.IQualifiedNameProvider
import org.eclipse.xtext.resource.XtextResource
import org.eclipse.xtext.scoping.IGlobalScopeProvider
import org.eclipse.xtext.resource.IResourceServiceProvider
import org.eclipse.xtext.validation.CompositeEValidator
import org.eclipse.xtext.validation.IResourceValidator
import org.omg.kerml.xtext.library.KerMLLibraryProvider
import org.omg.kerml.xtext.library.LibraryNamespaces
import org.omg.kerml.xtext.linking.KerMLLazyLinkingResource
import org.omg.kerml.xtext.naming.KerMLQualifiedNameConverter
import org.omg.kerml.xtext.naming.KerMLQualifiedNameProvider
import org.omg.kerml.xtext.scoping.KerMLGlobalScopeProvider
import org.omg.kerml.xtext.scoping.KerMLLinker
import org.omg.kerml.xtext.validation.KerMLResourceValidator
import org.omg.sysml.logic.api.IModelLibraryProvider
import org.omg.kerml.xtext.library.ILibraryIndexProvider
import org.omg.kerml.xtext.library.PrecalculatedLibraryIndexProvider
import com.google.inject.Provides
import org.eclipse.xtext.conversion.IValueConverterService
import org.omg.kerml.xtext.conversion.KerMLValueConverterService
import org.omg.sysml.util.SysMLLibraryUtil
/**
* Use this class to register components to be used at runtime / without the Equinox extension registry.
*/
class KerMLRuntimeModule extends AbstractKerMLRuntimeModule {
/**
* Installs the library-provider lookup used by {@link SysMLLibraryUtil} for
* the KerML Xtext runtime.
*
* <p>The lookup resolves the {@link IModelLibraryProvider} from the
* {@link IResourceServiceProvider} associated with the current resource URI so
* library element resolution can use the KerML runtime's injector-backed
* services from static utility code.
*/
new() {
SysMLLibraryUtil.setProviderLookup([
resource |
try {
val serviceProvider = IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(resource?.URI)
if (serviceProvider === null) null else serviceProvider.get(IModelLibraryProvider)
} catch (Exception e) {
System.out.println("[SysMLLibraryUtil] Cannot get library provider: " + e)
null
}
])
}
override Class<? extends IValueConverterService> bindIValueConverterService() {
return KerMLValueConverterService;
}
def Class<? extends IQualifiedNameConverter> bindIQualifiedNameConverter() {
KerMLQualifiedNameConverter
}
def Class<? extends IModelLibraryProvider> bindIModelLLibraryProvider() {
KerMLLibraryProvider
}
override Class<? extends IGlobalScopeProvider> bindIGlobalScopeProvider() {
KerMLGlobalScopeProvider
}
override Class<? extends IQualifiedNameProvider> bindIQualifiedNameProvider() {
KerMLQualifiedNameProvider
}
override Class<? extends ILinker> bindILinker() {
KerMLLinker
}
def void configureUseEObjectValidator(Binder binder) {
binder.bind(Boolean).annotatedWith(Names.named(CompositeEValidator.USE_EOBJECT_VALIDATOR)).toInstance(false);
}
@Provides
def ILibraryIndexProvider getILibraryIndexProvider(){
PrecalculatedLibraryIndexProvider.getInstance
}
def Class<? extends IResourceValidator> bindIResourceValidator() {
KerMLResourceValidator
}
override Class<? extends XtextResource> bindXtextResource() {
KerMLLazyLinkingResource
}
def Class<? extends LibraryNamespaces> bindLibraryNamespaces(){
LibraryNamespaces
}
}