package org.xpect.services; import org.eclipse.emf.ecore.EObject; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtext.resource.IFragmentProvider; import org.xpect.XpectFile; import org.xpect.XpectInvocation; public class XpectFragmentProvider implements IFragmentProvider { protected String getFragment(XpectInvocation obj) { return obj.getId(); } public String getFragment(EObject obj, Fallback fallback) { if (obj instanceof XpectInvocation) return getFragment((XpectInvocation) obj); return fallback.getFragment(obj); } public EObject getEObject(Resource resource, String fragment, Fallback fallback) { if (fragment != null && fragment.contains("~")) for (EObject obj : resource.getContents()) if (obj instanceof XpectFile) return ((XpectFile) obj).getInvocation(fragment); return fallback.getEObject(fragment); } }