@@ -10,6 +10,7 @@ import org.eclipse.xtext.naming.IQualifiedNameConverter
1010import org.eclipse.xtext.naming.IQualifiedNameProvider
1111import org.eclipse.xtext.resource.XtextResource
1212import org.eclipse.xtext.scoping.IGlobalScopeProvider
13+ import org.eclipse.xtext.resource.IResourceServiceProvider
1314import org.eclipse.xtext.validation.CompositeEValidator
1415import org.eclipse.xtext.validation.IResourceValidator
1516import org.omg.kerml.xtext.library.KerMLLibraryProvider
@@ -20,17 +21,40 @@ import org.omg.kerml.xtext.naming.KerMLQualifiedNameProvider
2021import org.omg.kerml.xtext.scoping.KerMLGlobalScopeProvider
2122import org.omg.kerml.xtext.scoping.KerMLLinker
2223import org.omg.kerml.xtext.validation.KerMLResourceValidator
23- import org.omg.sysml.lang.sysml.util .IModelLibraryProvider
24+ import org.omg.sysml.logic.api .IModelLibraryProvider
2425import org.omg.kerml.xtext.library.ILibraryIndexProvider
2526import org.omg.kerml.xtext.library.PrecalculatedLibraryIndexProvider
2627import com.google.inject.Provides
2728import org.eclipse.xtext.conversion.IValueConverterService
2829import org.omg.kerml.xtext.conversion.KerMLValueConverterService
30+ import org.omg.sysml.util.SysMLLibraryUtil
2931
3032/**
3133 * Use this class to register components to be used at runtime / without the Equinox extension registry.
3234 */
3335class KerMLRuntimeModule extends AbstractKerMLRuntimeModule {
36+
37+ /**
38+ * Installs the library-provider lookup used by {@link SysMLLibraryUtil} for
39+ * the KerML Xtext runtime.
40+ *
41+ * <p >The lookup resolves the {@link IModelLibraryProvider} from the
42+ * {@link IResourceServiceProvider} associated with the current resource URI so
43+ * library element resolution can use the KerML runtime's injector-backed
44+ * services from static utility code.
45+ */
46+ new () {
47+ SysMLLibraryUtil . setProviderLookup([
48+ resource |
49+ try {
50+ val serviceProvider = IResourceServiceProvider . Registry . INSTANCE. getResourceServiceProvider(resource? . URI )
51+ if (serviceProvider == = null ) null else serviceProvider. get(IModelLibraryProvider )
52+ } catch (Exception e) {
53+ System . out. println(" [SysMLLibraryUtil] Cannot get library provider: " + e)
54+ null
55+ }
56+ ])
57+ }
3458
3559 override Class<? extends IValueConverterService > bindIValueConverterService () {
3660 return KerMLValueConverterService ;
0 commit comments