mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[IDEA-382120] Fix included GradleBuild conversion to DefaultGradleLightBuild
With IntelliJ 2025.3 more in particular ce7ec3afd6 commit,
some refactor has done for composite builds as part of IDEA-370426
to add GradleLightProject.getIdentityPath. However, the GradleBuild
class which doesn't implement hashCode() is defined as key map
for gradleBuildsToConverted in DefaultGradleLightBuild.
This fact is causing NullPointerException with Gradle 6.X since
a different instance is created for same build path, failing
to map included GradleBuild into DefaultGradleLightBuild
closes https://github.com/JetBrains/intellij-community/pull/3304
GitOrigin-RevId: 40836130e29c29b8f493d084fe5f1ba631b0cff9
This commit is contained in:
committed by
intellij-monorepo-bot
parent
8864f33342
commit
864731229f
+6
-5
@@ -10,6 +10,7 @@ import org.jetbrains.annotations.ApiStatus;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.Serializable;
|
||||
import java.nio.file.Path;
|
||||
import java.util.*;
|
||||
@@ -123,11 +124,11 @@ public final class DefaultGradleLightBuild implements GradleLightBuild, Serializ
|
||||
@NotNull Collection<? extends GradleBuild> gradleBuilds,
|
||||
@NotNull GradleVersion gradleVersion
|
||||
) {
|
||||
Map<GradleBuild, DefaultGradleLightBuild> gradleBuildsToConverted = new LinkedHashMap<>();
|
||||
Map<File, DefaultGradleLightBuild> gradleBuildsToConverted = new LinkedHashMap<>();
|
||||
// TODO traverse builds via graph to avoid separated parent build field initialization
|
||||
for (GradleBuild gradleBuild : gradleBuilds) {
|
||||
DefaultGradleLightBuild build = new DefaultGradleLightBuild(gradleBuild, gradleVersion);
|
||||
gradleBuildsToConverted.put(gradleBuild, build);
|
||||
gradleBuildsToConverted.put(gradleBuild.getBuildIdentifier().getRootDir(), build);
|
||||
}
|
||||
setIncludedBuildsHierarchy(gradleBuilds, gradleBuildsToConverted);
|
||||
setBuildSrcHierarchy(gradleBuildsToConverted.values());
|
||||
@@ -137,14 +138,14 @@ public final class DefaultGradleLightBuild implements GradleLightBuild, Serializ
|
||||
/// Sets parent builds for included builds, relying on the data provided by Gradle.
|
||||
private static void setIncludedBuildsHierarchy(
|
||||
@NotNull Collection<? extends GradleBuild> gradleBuilds,
|
||||
Map<GradleBuild, DefaultGradleLightBuild> gradleBuildsToConverted
|
||||
Map<File, DefaultGradleLightBuild> gradleBuildsToConverted
|
||||
) {
|
||||
for (GradleBuild gradleBuild : gradleBuilds) {
|
||||
DefaultGradleLightBuild build = gradleBuildsToConverted.get(gradleBuild);
|
||||
DefaultGradleLightBuild build = gradleBuildsToConverted.get(gradleBuild.getBuildIdentifier().getRootDir());
|
||||
assert build != null;
|
||||
|
||||
for (GradleBuild includedGradleBuild : gradleBuild.getIncludedBuilds()) {
|
||||
DefaultGradleLightBuild buildToUpdate = gradleBuildsToConverted.get(includedGradleBuild);
|
||||
DefaultGradleLightBuild buildToUpdate = gradleBuildsToConverted.get(includedGradleBuild.getBuildIdentifier().getRootDir());
|
||||
assert buildToUpdate != null;
|
||||
buildToUpdate.setParentBuild(build);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user