Search in sources :

Example 1 with Lazy

use of org.eclipse.n4js.utils.Lazy in project n4js by eclipse.

the class N4HeadlessCompiler method postProcessResources.

/*
	 * ===============================================================================================================
	 *
	 * PROJECT POST-PROCESSING
	 *
	 * ===============================================================================================================
	 */
/**
 * Post processing on the whole project. While validations can trigger post processing in a lazy way, they do not
 * guarantee that all resources will be fully processed. This is an issue in larger project graphs. Unlike in the
 * IDE which can at any point load AST on demand based on the TModel, the HLC does not allow to access AST after
 * unloading therefore we explicitly post process all N4JS resources in the given project.
 *
 * @param markedProject
 *            project to trigger post process.
 */
private void postProcessResources(MarkedProject markedProject) {
    if (logger.isCreateDebugOutput())
        logger.debug(" PostProcessing " + markedProject);
    Iterables.filter(markedProject.resources, resource -> resource.isLoaded()).forEach(resource -> {
        if (resource instanceof N4JSResource) {
            N4JSResource n4jsResource = (N4JSResource) resource;
            // Make sure the resource is fully postprocessed before unloading the AST. Otherwise, resolving
            // cross references to the elements inside the resources from dependent projects will fail.
            n4jsResource.performPostProcessing();
        }
    });
}
Also used : Arrays(java.util.Arrays) SortedSet(java.util.SortedSet) ListIterator(java.util.ListIterator) Inject(com.google.inject.Inject) FileUtils(org.eclipse.n4js.utils.io.FileUtils) IN4JSCore(org.eclipse.n4js.projectModel.IN4JSCore) IResourceDescription(org.eclipse.xtext.resource.IResourceDescription) IN4JSSourceContainer(org.eclipse.n4js.projectModel.IN4JSSourceContainer) HashMultimap(com.google.common.collect.HashMultimap) TreeMultimap(com.google.common.collect.TreeMultimap) Optional(com.google.common.base.Optional) Map(java.util.Map) Path(java.nio.file.Path) Collections2(org.eclipse.n4js.utils.collections.Collections2) N4JSModel(org.eclipse.n4js.internal.N4JSModel) BiMap(com.google.common.collect.BiMap) Predicate(java.util.function.Predicate) Collection(java.util.Collection) IN4JSProject(org.eclipse.n4js.projectModel.IN4JSProject) Set(java.util.Set) IHeadlessLogger(org.eclipse.n4js.generator.headless.logging.IHeadlessLogger) ResourceDescriptionsData(org.eclipse.xtext.resource.impl.ResourceDescriptionsData) Collectors(java.util.stream.Collectors) Sets(com.google.common.collect.Sets) DelegatingIAllContainerAdapter(org.eclipse.xtext.resource.containers.DelegatingIAllContainerAdapter) List(java.util.List) FileBasedWorkspace(org.eclipse.n4js.internal.FileBasedWorkspace) Resource(org.eclipse.emf.ecore.resource.Resource) ResourceType(org.eclipse.n4js.utils.ResourceType) CheckMode(org.eclipse.xtext.validation.CheckMode) Joiner(com.google.common.base.Joiner) Iterables(com.google.common.collect.Iterables) URI(org.eclipse.emf.common.util.URI) IResourceServiceProvider(org.eclipse.xtext.resource.IResourceServiceProvider) HashMap(java.util.HashMap) Multimap(com.google.common.collect.Multimap) N4JSProject(org.eclipse.n4js.internal.N4JSProject) TreeSet(java.util.TreeSet) ResourceSet(org.eclipse.emf.ecore.resource.ResourceSet) HashSet(java.util.HashSet) JavaIoFileSystemAccess(org.eclipse.xtext.generator.JavaIoFileSystemAccess) ImmutableList(com.google.common.collect.ImmutableList) CancelIndicator(org.eclipse.xtext.util.CancelIndicator) LinkedList(java.util.LinkedList) GeneratorException(org.eclipse.n4js.generator.GeneratorException) XtextResource(org.eclipse.xtext.resource.XtextResource) Severity(org.eclipse.xtext.diagnostics.Severity) N4FilebasedWorkspaceResourceSetContainerState(org.eclipse.n4js.internal.N4FilebasedWorkspaceResourceSetContainerState) DecimalFormat(java.text.DecimalFormat) Lazy(org.eclipse.n4js.utils.Lazy) IResourceValidator(org.eclipse.xtext.validation.IResourceValidator) IOException(java.io.IOException) File(java.io.File) N4JSResource(org.eclipse.n4js.resource.N4JSResource) HashBiMap(com.google.common.collect.HashBiMap) Provider(com.google.inject.Provider) Issue(org.eclipse.xtext.validation.Issue) OrderedResourceDescriptionsData(org.eclipse.n4js.resource.OrderedResourceDescriptionsData) Collections(java.util.Collections) XtextResourceSet(org.eclipse.xtext.resource.XtextResourceSet) N4JSResource(org.eclipse.n4js.resource.N4JSResource)

Aggregations

Joiner (com.google.common.base.Joiner)1 Optional (com.google.common.base.Optional)1 BiMap (com.google.common.collect.BiMap)1 HashBiMap (com.google.common.collect.HashBiMap)1 HashMultimap (com.google.common.collect.HashMultimap)1 ImmutableList (com.google.common.collect.ImmutableList)1 Iterables (com.google.common.collect.Iterables)1 Multimap (com.google.common.collect.Multimap)1 Sets (com.google.common.collect.Sets)1 TreeMultimap (com.google.common.collect.TreeMultimap)1 Inject (com.google.inject.Inject)1 Provider (com.google.inject.Provider)1 File (java.io.File)1 IOException (java.io.IOException)1 Path (java.nio.file.Path)1 DecimalFormat (java.text.DecimalFormat)1 Arrays (java.util.Arrays)1 Collection (java.util.Collection)1 Collections (java.util.Collections)1 HashMap (java.util.HashMap)1