@Override public IResourceDescription getResourceDescription(final Resource resource) { if ((resource instanceof JavaResource)) { final boolean initialized = (((JavaResource)resource).isInitialized() || ((JavaResource)resource).isInitializing()); try { if ((!initialized)) { ((JavaResource)resource).eSetDeliver(false); ((JavaResource)resource).installStubs(); } final DefaultResourceDescription result = new DefaultResourceDescription(resource, this.descriptionStrategy, this.cache); if ((!initialized)) { final Consumer<IEObjectDescription> _function = (IEObjectDescription it) -> { it.getEObjectURI(); }; result.getExportedObjects().forEach(_function); } return result; } finally { if ((!initialized)) { ((JavaResource)resource).discardDerivedState(); ((JavaResource)resource).eSetDeliver(true); } } } throw new IllegalArgumentException("Can only handle JavaResources"); }
@Before public void setUp() throws Exception { EObject copy = EcoreUtil.copy(EcorePackage.eINSTANCE); resource = new ResourceImpl(); resource.getContents().add(copy); IQualifiedNameProvider nameProvider = new IQualifiedNameProvider.AbstractImpl() { @Override public QualifiedName getFullyQualifiedName(EObject obj) { if (obj instanceof ENamedElement) return QualifiedName.create(((ENamedElement) obj).getName()); return null; } }; DefaultResourceDescriptionStrategy descriptionStrategy = new DefaultResourceDescriptionStrategy(); descriptionStrategy.setQualifiedNameProvider(nameProvider); resourceDescription = new DefaultResourceDescription(resource, descriptionStrategy) { @Override public Iterable<QualifiedName> getImportedNames() { return importedNames; } }; manager = new DefaultResourceDescriptionManager(); importedNames = Collections.emptySet(); }
@Override public void setUp() throws Exception { super.setUp(); with(new IndexTestLanguageStandaloneSetup()); globalScopeProvider = new ResourceSetGlobalScopeProvider(); nameProvider = new DefaultDeclarativeQualifiedNameProvider(); nameConverter = new IQualifiedNameConverter.DefaultImpl(); final DefaultResourceDescriptionStrategy strategy = new DefaultResourceDescriptionStrategy(); strategy.setQualifiedNameProvider(nameProvider); final DefaultResourceDescriptionManager resourceDescMnr = new DefaultResourceDescriptionManager() { @Override public IResourceDescription getResourceDescription(Resource resource) { DefaultResourceDescription resourceDescription = new DefaultResourceDescription(resource, strategy); return resourceDescription; } }; final DefaultResourceServiceProvider provider = new DefaultResourceServiceProvider() { @Override public Manager getResourceDescriptionManager() { return resourceDescMnr; } }; globalScopeProvider.setGlobalResourceDecriptionProvider(new GlobalResourceDescriptionProvider(new ResourceServiceProviderRegistryImpl() { @Override public IResourceServiceProvider getResourceServiceProvider(URI uri, String contentType) { return provider; } })); CaseInsensitivityHelper caseInsensitivityHelper = new CaseInsensitivityHelper(); globalScopeProvider.setCaseInsensitivityHelper(caseInsensitivityHelper); scopeProvider = new ImportedNamespaceAwareLocalScopeProvider(globalScopeProvider, nameProvider, nameConverter, caseInsensitivityHelper); }
/** * Returns the containers for the given handles, where one of the containers will also include {@code desc} when appropriate. * * @param handles * handles to get containers for, must not be {@code null} * @param desc * description to add, must not be {@code null} * @param resourceDescriptions * resource descriptions, must not be {@code null} * @return list of containers, never {@code null} */ protected List<IContainer> getContainersForHandlesAndResource(final List<String> handles, final IResourceDescription desc, final IResourceDescriptions resourceDescriptions) { List<IContainer> result = getVisibleContainers(handles, resourceDescriptions); if (!result.isEmpty()) { URI descURI = desc.getURI(); for (int i = 0; i < result.size(); i++) { if (result.get(i).getResourceDescription(descURI) != null) { return result; } } // Do *not* add the context resource description itself if we're in the first phase of a build: 'desc' itself // may not be in any consistent state, and adding it to the containers may result in recursive invocations of // getEObjectDescriptions(), leading to a stack overflow since it may in turn invoke getVisibleContainers() again. if (desc instanceof DefaultResourceDescription) { DefaultResourceDescription d = (DefaultResourceDescription) desc; if (BuildPhases.isIndexing(d.getResource())) { return result; } } // the IResourceDescription was found nowhere, add it to the first one that matches the description's domain. IDomain descDomain = mapper.map(descURI); IContainer wrappedContainer = null; int index = 0; for (int i = 0; i < result.size(); i++) { IContainer container = result.get(i); IDomain containerDomain = mapper.map(container); if (containerDomain != null && containerDomain.equals(descDomain)) { wrappedContainer = new DescriptionAddingContainer(desc, container); result.set(index, wrappedContainer); return result; } index++; } // If we get here, we found no container with a matching domain. Add to the first, but use a DescriptionAddingContainer that // will add the description at the end. wrappedContainer = new DescriptionAtEndAddingContainer(desc, result.get(0)); result.set(0, wrappedContainer); } return result; }
@Override public IResourceDescription getResourceDescription(Resource resource) { return new DefaultResourceDescription(resource, resourceDescriptionStrategy, cache); }