Search in sources :

Example 6 with IQualifiedNameProvider

use of org.eclipse.xtext.naming.IQualifiedNameProvider in project xtext-core by eclipse.

the class TestLanguageRenameService method getElementWithIdentifierAt.

@Override
protected EObject getElementWithIdentifierAt(XtextResource xtextResource, int offset) {
    if (offset >= 0) {
        if (xtextResource != null) {
            IParseResult parseResult = xtextResource.getParseResult();
            if (parseResult != null) {
                ICompositeNode rootNode = parseResult.getRootNode();
                if (rootNode != null) {
                    ILeafNode leaf = NodeModelUtils.findLeafNodeAtOffset(rootNode, offset);
                    if (leaf != null && isIdentifier(leaf)) {
                        EObject element = eObjectAtOffsetHelper.resolveElementAt(xtextResource, offset);
                        if (element != null) {
                            IQualifiedNameProvider nameProvider = xtextResource.getResourceServiceProvider().get(IQualifiedNameProvider.class);
                            QualifiedName fqn = nameProvider.getFullyQualifiedName(element);
                            if (fqn != null) {
                                String leafText = NodeModelUtils.getTokenText(leaf);
                                if (fqn.getSegmentCount() == 1 && Objects.equal(fqn.toString(), leafText) || Objects.equal(fqn.getLastSegment(), leafText)) {
                                    return element;
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    return null;
}
Also used : ILeafNode(org.eclipse.xtext.nodemodel.ILeafNode) IQualifiedNameProvider(org.eclipse.xtext.naming.IQualifiedNameProvider) EObject(org.eclipse.emf.ecore.EObject) QualifiedName(org.eclipse.xtext.naming.QualifiedName) ICompositeNode(org.eclipse.xtext.nodemodel.ICompositeNode) IParseResult(org.eclipse.xtext.parser.IParseResult)

Example 7 with IQualifiedNameProvider

use of org.eclipse.xtext.naming.IQualifiedNameProvider in project xtext-core by eclipse.

the class PartialLinkingTest method setUp.

@Override
public void setUp() throws Exception {
    super.setUp();
    with(ReferenceGrammarTestLanguageStandaloneSetup.class);
    IQualifiedNameConverter nameConverter = new IQualifiedNameConverter.DefaultImpl();
    IQualifiedNameProvider nameProvider = new DefaultDeclarativeQualifiedNameProvider();
    ImportUriGlobalScopeProvider globalScopeProvider = new ImportUriGlobalScopeProvider();
    globalScopeProvider.setImportResolver(new ImportUriResolver());
    globalScopeProvider.setCache(IResourceScopeCache.NullImpl.INSTANCE);
    final ResourceDescriptionsProvider provider = new ResourceDescriptionsProvider();
    provider.setResourceDescriptions(new Provider<IResourceDescriptions>() {

        @Override
        public IResourceDescriptions get() {
            return new IResourceDescriptions.NullImpl();
        }
    });
    globalScopeProvider.setResourceDescriptionsProvider(provider);
    globalScopeProvider.setLoadOnDemandDescriptions(new Provider<LoadOnDemandResourceDescriptions>() {

        @Override
        public LoadOnDemandResourceDescriptions get() {
            return PartialLinkingTest.this.get(LoadOnDemandResourceDescriptions.class);
        }
    });
    CaseInsensitivityHelper caseInsensitivityHelper = new CaseInsensitivityHelper();
    globalScopeProvider.setCaseInsensitivityHelper(caseInsensitivityHelper);
    scopeProvider = new ImportedNamespaceAwareLocalScopeProvider(globalScopeProvider, nameProvider, nameConverter, caseInsensitivityHelper);
    modelAsText = "spielplatz 1 {\n" + "  kind( Bommel1 1)\n" + "  kind( Bommel2 2)\n" + "  kind( Bommel3 3)\n" + "  erwachsener( Bob 4)\n" + "  erwachsener( Joe 5)\n" + "  familie( Familienname Bob Joe Bommel2 )\n" + "}";
    resource = getResourceFromString(modelAsText);
    assertTrue(resource.getErrors().toString(), resource.getErrors().isEmpty());
    model = resource.getParseResult().getRootASTElement();
    final Iterator<EObject> iter = model.eAllContents();
    while (iter.hasNext() && context == null) {
        final EObject candidate = iter.next();
        final String className = candidate.eClass().getName();
        if (className.endsWith("Familie"))
            context = candidate;
    }
    reference = (EReference) context.eClass().getEStructuralFeature("kinder");
}
Also used : DefaultDeclarativeQualifiedNameProvider(org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider) ImportedNamespaceAwareLocalScopeProvider(org.eclipse.xtext.scoping.impl.ImportedNamespaceAwareLocalScopeProvider) IQualifiedNameConverter(org.eclipse.xtext.naming.IQualifiedNameConverter) ImportUriResolver(org.eclipse.xtext.scoping.impl.ImportUriResolver) ResourceDescriptionsProvider(org.eclipse.xtext.resource.impl.ResourceDescriptionsProvider) ImportUriGlobalScopeProvider(org.eclipse.xtext.scoping.impl.ImportUriGlobalScopeProvider) IQualifiedNameProvider(org.eclipse.xtext.naming.IQualifiedNameProvider) IResourceDescriptions(org.eclipse.xtext.resource.IResourceDescriptions) CaseInsensitivityHelper(org.eclipse.xtext.scoping.impl.CaseInsensitivityHelper) EObject(org.eclipse.emf.ecore.EObject) LoadOnDemandResourceDescriptions(org.eclipse.xtext.scoping.impl.LoadOnDemandResourceDescriptions)

Aggregations

IQualifiedNameProvider (org.eclipse.xtext.naming.IQualifiedNameProvider)7 EObject (org.eclipse.emf.ecore.EObject)4 Check (com.avaloq.tools.ddk.check.check.Check)2 IPluginElement (org.eclipse.pde.core.plugin.IPluginElement)2 IPluginObject (org.eclipse.pde.core.plugin.IPluginObject)2 Before (org.junit.Before)2 NoSuchElementException (java.util.NoSuchElementException)1 ENamedElement (org.eclipse.emf.ecore.ENamedElement)1 ResourceImpl (org.eclipse.emf.ecore.resource.impl.ResourceImpl)1 ResourceSetImpl (org.eclipse.emf.ecore.resource.impl.ResourceSetImpl)1 IPluginAttribute (org.eclipse.pde.core.plugin.IPluginAttribute)1 DefaultDeclarativeQualifiedNameProvider (org.eclipse.xtext.naming.DefaultDeclarativeQualifiedNameProvider)1 IQualifiedNameConverter (org.eclipse.xtext.naming.IQualifiedNameConverter)1 QualifiedName (org.eclipse.xtext.naming.QualifiedName)1 ICompositeNode (org.eclipse.xtext.nodemodel.ICompositeNode)1 ILeafNode (org.eclipse.xtext.nodemodel.ILeafNode)1 IParseResult (org.eclipse.xtext.parser.IParseResult)1 IResourceDescriptions (org.eclipse.xtext.resource.IResourceDescriptions)1 XtextResource (org.eclipse.xtext.resource.XtextResource)1 DefaultResourceDescription (org.eclipse.xtext.resource.impl.DefaultResourceDescription)1