diff --git a/plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/RDS.xtend b/plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/RDS.xtend new file mode 100644 index 0000000000000000000000000000000000000000..0f891f3d67219327f0a12a498eeb45766275aa6a --- /dev/null +++ b/plugins/org.etsi.mts.tdl.tx/src/org/etsi/mts/tdl/RDS.xtend @@ -0,0 +1,35 @@ +package org.etsi.mts.tdl; + +import com.google.inject.Inject +import java.util.HashMap +import org.eclipse.xtext.naming.QualifiedName +import org.eclipse.xtext.resource.EObjectDescription +import org.eclipse.xtext.resource.IEObjectDescription +import org.eclipse.xtext.resource.impl.DefaultResourceDescriptionStrategy +import org.eclipse.xtext.scoping.impl.ImportUriResolver +import org.eclipse.xtext.util.IAcceptor +import org.eclipse.emf.ecore.EObject + +class RDS extends DefaultResourceDescriptionStrategy { + public static final String INCLUDES = "includes" + @Inject + ImportUriResolver uriResolver + + override createEObjectDescriptions(EObject eObject, IAcceptor<IEObjectDescription> acceptor) { + if(eObject instanceof Package) { + this.createEObjectDescriptionForPackage(eObject, acceptor) + return true + } + else { + super.createEObjectDescriptions(eObject, acceptor) + } + } + + def void createEObjectDescriptionForPackage(Package model, IAcceptor<IEObjectDescription> acceptor) { + val uris = newArrayList() + model.import.forEach[uris.add(uriResolver.apply(it.importedPackage))] + val userData = new HashMap<String,String> + userData.put(INCLUDES, uris.join(",")) + acceptor.accept(EObjectDescription.create(QualifiedName.create(model.eResource.URI.toString), model, userData)) + } +} \ No newline at end of file