Search in sources :

Example 1 with Source

use of org.eclipse.xtext.resource.IResourceDescription.Event.Source in project xtext-core by eclipse.

the class DefaultGlobalScopeProvider method getVisibleContainers.

protected List<IContainer> getVisibleContainers(Resource resource) {
    IResourceDescription description = descriptionManager.getResourceDescription(resource);
    IResourceDescriptions resourceDescriptions = getResourceDescriptions(resource);
    String cacheKey = getCacheKey("VisibleContainers", resource.getResourceSet());
    OnChangeEvictingCache.CacheAdapter cache = new OnChangeEvictingCache().getOrCreate(resource);
    List<IContainer> result = null;
    result = cache.get(cacheKey);
    if (result == null) {
        result = containerManager.getVisibleContainers(description, resourceDescriptions);
        // container manager, but it is not aware of a CacheAdapter
        if (resourceDescriptions instanceof IResourceDescription.Event.Source) {
            IResourceDescription.Event.Source eventSource = (Source) resourceDescriptions;
            DelegatingEventSource delegatingEventSource = new DelegatingEventSource(eventSource);
            delegatingEventSource.addListeners(Lists.newArrayList(Iterables.filter(result, IResourceDescription.Event.Listener.class)));
            delegatingEventSource.initialize();
            cache.addCacheListener(delegatingEventSource);
        }
        cache.set(cacheKey, result);
    }
    return result;
}
Also used : IResourceDescription(org.eclipse.xtext.resource.IResourceDescription) OnChangeEvictingCache(org.eclipse.xtext.util.OnChangeEvictingCache) Source(org.eclipse.xtext.resource.IResourceDescription.Event.Source) IResourceDescriptions(org.eclipse.xtext.resource.IResourceDescriptions) IContainer(org.eclipse.xtext.resource.IContainer) Source(org.eclipse.xtext.resource.IResourceDescription.Event.Source)

Aggregations

IContainer (org.eclipse.xtext.resource.IContainer)1 IResourceDescription (org.eclipse.xtext.resource.IResourceDescription)1 Source (org.eclipse.xtext.resource.IResourceDescription.Event.Source)1 IResourceDescriptions (org.eclipse.xtext.resource.IResourceDescriptions)1 OnChangeEvictingCache (org.eclipse.xtext.util.OnChangeEvictingCache)1