mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Add ResolveContext object shared between all scheduled resolve tasks;
IDEA-113446 Do not clear data in AndroidExternalApklibDependenciesManager. Instead, store cache in ResolveContext to avoid several resolves of one apklib artifact
This commit is contained in:
@@ -107,7 +107,8 @@ public abstract class MavenImporter {
|
||||
public void resolve(Project project,
|
||||
MavenProject mavenProject,
|
||||
NativeMavenProjectHolder nativeMavenProject,
|
||||
MavenEmbedderWrapper embedder)
|
||||
MavenEmbedderWrapper embedder,
|
||||
ResolveContext context)
|
||||
throws MavenProcessCanceledException {
|
||||
}
|
||||
|
||||
|
||||
@@ -578,7 +578,8 @@ public class MavenProject {
|
||||
@NotNull MavenGeneralSettings generalSettings,
|
||||
@NotNull MavenEmbedderWrapper embedder,
|
||||
@NotNull MavenProjectReader reader,
|
||||
@NotNull MavenProjectReaderProjectLocator locator)
|
||||
@NotNull MavenProjectReaderProjectLocator locator,
|
||||
@NotNull ResolveContext context)
|
||||
throws MavenProcessCanceledException {
|
||||
MavenProjectReaderResult result = reader.resolveProject(generalSettings,
|
||||
embedder,
|
||||
@@ -589,7 +590,7 @@ public class MavenProject {
|
||||
|
||||
if (result.nativeMavenProject != null) {
|
||||
for (MavenImporter eachImporter : getSuitableImporters()) {
|
||||
eachImporter.resolve(project, this, result.nativeMavenProject, embedder);
|
||||
eachImporter.resolve(project, this, result.nativeMavenProject, embedder, context);
|
||||
}
|
||||
}
|
||||
return Pair.create(changes, result.nativeMavenProject);
|
||||
|
||||
+2
-1
@@ -729,6 +729,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
|
||||
toResolve = new LinkedHashSet<MavenProject>(myProjectsToResolve);
|
||||
myProjectsToResolve.clear();
|
||||
}
|
||||
final ResolveContext context = new ResolveContext();
|
||||
|
||||
Iterator<MavenProject> it = toResolve.iterator();
|
||||
while (it.hasNext()) {
|
||||
@@ -741,7 +742,7 @@ public class MavenProjectsManager extends MavenSimpleProjectComponent
|
||||
};
|
||||
|
||||
myResolvingProcessor.scheduleTask(
|
||||
new MavenProjectsProcessorResolvingTask(each, myProjectsTree, getGeneralSettings(), onCompletion));
|
||||
new MavenProjectsProcessorResolvingTask(each, myProjectsTree, getGeneralSettings(), onCompletion, context));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
+5
-2
@@ -24,19 +24,22 @@ import org.jetbrains.idea.maven.utils.MavenProgressIndicator;
|
||||
public class MavenProjectsProcessorResolvingTask extends MavenProjectsProcessorBasicTask {
|
||||
@NotNull private final MavenGeneralSettings myGeneralSettings;
|
||||
@Nullable private final Runnable myOnCompletion;
|
||||
@NotNull private final ResolveContext myContext;
|
||||
|
||||
public MavenProjectsProcessorResolvingTask(@NotNull MavenProject project,
|
||||
@NotNull MavenProjectsTree tree,
|
||||
@NotNull MavenGeneralSettings generalSettings,
|
||||
@Nullable Runnable onCompletion) {
|
||||
@Nullable Runnable onCompletion,
|
||||
@NotNull ResolveContext context) {
|
||||
super(project, tree);
|
||||
myGeneralSettings = generalSettings;
|
||||
myOnCompletion = onCompletion;
|
||||
myContext = context;
|
||||
}
|
||||
|
||||
public void perform(Project project, MavenEmbeddersManager embeddersManager, MavenConsole console, MavenProgressIndicator indicator)
|
||||
throws MavenProcessCanceledException {
|
||||
myTree.resolve(project, myMavenProject, myGeneralSettings, embeddersManager, console, indicator);
|
||||
myTree.resolve(project, myMavenProject, myGeneralSettings, embeddersManager, console, myContext, indicator);
|
||||
if (myOnCompletion != null) myOnCompletion.run();
|
||||
}
|
||||
}
|
||||
|
||||
+12
-1
@@ -1150,12 +1150,23 @@ public class MavenProjectsTree {
|
||||
}
|
||||
}
|
||||
|
||||
@TestOnly
|
||||
public void resolve(@NotNull Project project,
|
||||
@NotNull MavenProject mavenProject,
|
||||
@NotNull MavenGeneralSettings generalSettings,
|
||||
@NotNull MavenEmbeddersManager embeddersManager,
|
||||
@NotNull MavenConsole console,
|
||||
@NotNull MavenProgressIndicator process) throws MavenProcessCanceledException {
|
||||
resolve(project, mavenProject, generalSettings, embeddersManager, console, new ResolveContext(), process);
|
||||
}
|
||||
|
||||
public void resolve(@NotNull Project project,
|
||||
@NotNull MavenProject mavenProject,
|
||||
@NotNull MavenGeneralSettings generalSettings,
|
||||
@NotNull MavenEmbeddersManager embeddersManager,
|
||||
@NotNull MavenConsole console,
|
||||
@NotNull ResolveContext context,
|
||||
@NotNull MavenProgressIndicator process) throws MavenProcessCanceledException {
|
||||
MavenEmbedderWrapper embedder = embeddersManager.getEmbedder(MavenEmbeddersManager.FOR_DEPENDENCIES_RESOLVE);
|
||||
embedder.customizeForResolve(getWorkspaceMap(), console, process);
|
||||
|
||||
@@ -1164,7 +1175,7 @@ public class MavenProjectsTree {
|
||||
process.setText(ProjectBundle.message("maven.resolving.pom", mavenProject.getDisplayName()));
|
||||
process.setText2("");
|
||||
Pair<MavenProjectChanges, NativeMavenProjectHolder> resolveResult =
|
||||
mavenProject.resolve(project, generalSettings, embedder, new MavenProjectReader(), myProjectLocator);
|
||||
mavenProject.resolve(project, generalSettings, embedder, new MavenProjectReader(), myProjectLocator, context);
|
||||
|
||||
fireProjectResolved(Pair.create(mavenProject, resolveResult.first), resolveResult.second);
|
||||
}
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
package org.jetbrains.idea.maven.project;
|
||||
|
||||
import com.intellij.openapi.util.UserDataHolderBase;
|
||||
|
||||
/**
|
||||
* @author Eugene.Kudelevsky
|
||||
*/
|
||||
public class ResolveContext extends UserDataHolderBase {
|
||||
}
|
||||
Reference in New Issue
Block a user