|
@@ -1,8 +1,10 @@
|
|
|
package org.yakindu.sct.generator.genmodel.scoping;
|
|
|
|
|
|
+import org.eclipse.core.runtime.Assert;
|
|
|
import org.eclipse.emf.ecore.EClass;
|
|
|
import org.eclipse.emf.ecore.resource.Resource;
|
|
|
import org.eclipse.emf.ecore.resource.ResourceSet;
|
|
|
+import org.eclipse.emf.ecore.util.EcoreUtil;
|
|
|
import org.eclipse.xtext.resource.IEObjectDescription;
|
|
|
import org.eclipse.xtext.scoping.IScope;
|
|
|
import org.eclipse.xtext.scoping.impl.DefaultGlobalScopeProvider;
|
|
@@ -10,6 +12,8 @@ import org.eclipse.xtext.scoping.impl.SimpleScope;
|
|
|
import org.yakindu.sct.generator.genmodel.extensions.LibraryExtensions;
|
|
|
import org.yakindu.sct.generator.genmodel.extensions.LibraryExtensions.LibraryDescriptor;
|
|
|
import org.yakindu.sct.generator.genmodel.resource.FeatureResourceDescription;
|
|
|
+import org.yakindu.sct.model.sgen.GeneratorModel;
|
|
|
+import org.yakindu.sct.model.sgen.SGenPackage;
|
|
|
|
|
|
import com.google.common.base.Predicate;
|
|
|
import com.google.common.collect.Iterables;
|
|
@@ -36,11 +40,19 @@ public class SGenGlobalScopeProvider extends DefaultGlobalScopeProvider {
|
|
|
.getScope(resource, ignoreCase, type, filter);
|
|
|
Iterable<IEObjectDescription> allElements = defaultScope
|
|
|
.getAllElements();
|
|
|
+ // get the generator id
|
|
|
+ GeneratorModel generatorModel = (GeneratorModel) EcoreUtil
|
|
|
+ .getObjectByType(resource.getContents(),
|
|
|
+ SGenPackage.Literals.GENERATOR_MODEL);
|
|
|
+ Assert.isNotNull(generatorModel);
|
|
|
+ String generatorId = generatorModel.getGeneratorId();
|
|
|
+
|
|
|
Iterable<LibraryDescriptor> libraryDescriptor = LibraryExtensions
|
|
|
- .getLibraryDescriptor();
|
|
|
+ .getLibraryDescriptor(generatorId);
|
|
|
for (LibraryDescriptor desc : libraryDescriptor) {
|
|
|
Resource library = resourceSet.getResource(desc.getURI(), true);
|
|
|
- FeatureResourceDescription description = new FeatureResourceDescription(library);
|
|
|
+ FeatureResourceDescription description = new FeatureResourceDescription(
|
|
|
+ library);
|
|
|
injector.injectMembers(description);
|
|
|
allElements = Iterables.concat(allElements,
|
|
|
description.getExportedObjectsByType(type));
|