package org.occiware.clouddesigner.occi.xtext.scoping; import org.eclipse.emf.common.util.URI; import org.eclipse.emf.ecore.EClass; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.EReference; import org.eclipse.emf.ecore.InternalEObject; import org.eclipse.emf.ecore.util.EcoreUtil; import org.eclipse.xtext.linking.lazy.LazyLinker; import org.eclipse.xtext.nodemodel.INode; import org.occiware.clouddesigner.occi.OCCIPackage; public class OCCILinker extends LazyLinker { @Override protected EObject createProxy(EObject obj, INode node, EReference eRef) { if (eRef.equals(OCCIPackage.eINSTANCE.getExtension_Import()) || eRef.equals(OCCIPackage.eINSTANCE.getConfiguration_Use()) ) { EClass referenceType = getProxyType(obj, eRef); final EObject proxy = EcoreUtil.create(referenceType); ((InternalEObject) proxy) .eSetProxyURI(URI.createURI(node.getText().replaceAll("'", "").replaceAll("\"", ""))); return proxy; } return super.createProxy(obj, node, eRef); } }