Gradle: incorrect interning of LibraryData/LibraryDependencyData removed (will be redone in scope of IDEA-218166)

GitOrigin-RevId: f61d619fa0563c72450b9b498b074dfd7e4be103
This commit is contained in:
Anton Makeev
2019-09-03 14:59:03 +00:00
committed by intellij-monorepo-bot
parent 8e5c48160f
commit 127cb52450
4 changed files with 9 additions and 29 deletions
@@ -85,7 +85,7 @@ public class JavaGradleProjectResolver extends AbstractProjectResolverExtension
}
BuildScriptClasspathData buildScriptClasspathData = new BuildScriptClasspathData(GradleConstants.SYSTEM_ID, classpathEntries);
buildScriptClasspathData.setGradleHomeDir(buildScriptClasspathModel != null ? buildScriptClasspathModel.getGradleHomeDir() : null);
ideModule.createChild(BuildScriptClasspathData.KEY, GradleProjectResolverUtil.intern(resolverCtx, buildScriptClasspathData));
ideModule.createChild(BuildScriptClasspathData.KEY, buildScriptClasspathData);
nextResolver.populateModuleExtraModels(gradleModule, ideModule);
}
@@ -19,8 +19,6 @@ import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskId;
import com.intellij.openapi.externalSystem.model.task.ExternalSystemTaskNotificationListener;
import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.util.UserDataHolderBase;
import com.intellij.util.containers.HashSetInterner;
import com.intellij.util.containers.Interner;
import org.gradle.initialization.BuildLayoutParameters;
import org.gradle.tooling.CancellationTokenSource;
import org.gradle.tooling.GradleConnector;
@@ -52,8 +50,6 @@ public class DefaultProjectResolverContext extends UserDataHolderBase implements
@Nullable private String myBuildSrcGroup;
@Nullable private BuildEnvironment myBuildEnvironment;
@NotNull private final Interner myInterner = new HashSetInterner();
public DefaultProjectResolverContext(@NotNull final ExternalSystemTaskId externalSystemTaskId,
@NotNull final String projectPath,
@Nullable final GradleExecutionSettings settings,
@@ -218,10 +214,4 @@ public class DefaultProjectResolverContext extends UserDataHolderBase implements
public BuildEnvironment getBuildEnvironment() {
return myBuildEnvironment;
}
@NotNull
public <T> T intern(@NotNull T value) {
//noinspection unchecked
return (T)myInterner.intern(value);
}
}
@@ -273,7 +273,7 @@ public class GradleBuildSrcProjectsResolver {
DataNode<?> parent = classpathNode.getParent();
assert parent != null;
parent.createChild(BuildScriptClasspathData.KEY, GradleProjectResolverUtil.intern(myResolverContext, buildScriptClasspathData));
parent.createChild(BuildScriptClasspathData.KEY, buildScriptClasspathData);
classpathNode.clear(true);
});
}
@@ -588,7 +588,7 @@ public class GradleProjectResolverUtil {
for (File artifact: projectDependency.getProjectDependencyArtifacts()) {
library.addPath(LibraryPathType.BINARY, artifact.getPath());
}
depOwnerDataNode = ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, intern(resolverCtx, libraryDependencyData));
depOwnerDataNode = ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, libraryDependencyData);
}
else {
depOwnerDataNode = ownerDataNode;
@@ -604,7 +604,7 @@ public class GradleProjectResolverUtil {
moduleDependencyData.setOrder(mergedDependency.getClasspathOrder());
moduleDependencyData.setExported(mergedDependency.getExported());
moduleDependencyData.setModuleDependencyArtifacts(ContainerUtil.map(projectDependencyInfo.dependencyArtifacts, File::getPath));
depOwnerDataNode = ownerDataNode.createChild(ProjectKeys.MODULE_DEPENDENCY, intern(resolverCtx, moduleDependencyData));
depOwnerDataNode = ownerDataNode.createChild(ProjectKeys.MODULE_DEPENDENCY, moduleDependencyData);
}
// put transitive dependencies to the ownerDataNode,
@@ -640,7 +640,7 @@ public class GradleProjectResolverUtil {
libraryDependencyData.setScope(dependencyScope);
libraryDependencyData.setOrder(mergedDependency.getClasspathOrder());
libraryDependencyData.setExported(mergedDependency.getExported());
depOwnerDataNode = ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, intern(resolverCtx, libraryDependencyData));
depOwnerDataNode = ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, libraryDependencyData);
}
else if (mergedDependency instanceof ExternalMultiLibraryDependency) {
final LibraryLevel level = LibraryLevel.MODULE;
@@ -664,7 +664,7 @@ public class GradleProjectResolverUtil {
library.addPath(LibraryPathType.DOC, file.getAbsolutePath());
}
depOwnerDataNode = ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, intern(resolverCtx, libraryDependencyData));
depOwnerDataNode = ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, libraryDependencyData);
}
else if (mergedDependency instanceof FileCollectionDependency) {
final LibraryLevel level = LibraryLevel.MODULE;
@@ -679,7 +679,7 @@ public class GradleProjectResolverUtil {
library.addPath(LibraryPathType.BINARY, file.getAbsolutePath());
}
ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, intern(resolverCtx, libraryDependencyData));
ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, libraryDependencyData);
}
else if (mergedDependency instanceof UnresolvedExternalDependency) {
String libraryName = mergedDependency.getId().getPresentableName();
@@ -691,7 +691,7 @@ public class GradleProjectResolverUtil {
LibraryLevel level = linkProjectLibrary(resolverCtx, ideProject, library) ? LibraryLevel.PROJECT : LibraryLevel.MODULE;
LibraryDependencyData libraryDependencyData = new LibraryDependencyData(ownerModule, library, level);
libraryDependencyData.setScope(dependencyScope);
ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, intern(resolverCtx, libraryDependencyData));
ownerDataNode.createChild(ProjectKeys.LIBRARY_DEPENDENCY, libraryDependencyData);
}
if (depOwnerDataNode != null) {
@@ -731,22 +731,12 @@ public class GradleProjectResolverUtil {
DataNode<LibraryData> libraryData = ExternalSystemApiUtil.find(ideProject, ProjectKeys.LIBRARY,
node -> libraryName.equals(node.getData().getExternalName()));
if (libraryData == null) {
ideProject.createChild(ProjectKeys.LIBRARY, intern(context, library));
ideProject.createChild(ProjectKeys.LIBRARY, library);
return true;
}
return libraryData.getData().equals(library);
}
public static <T> T intern(ProjectResolverContext context, T value) {
// hot fix for hashing issue
return value;
//if (context == null) {
// LOG.warn("ProjectResolverContext should not be null, it is used to intern objects");
// return value;
//}
//return ((DefaultProjectResolverContext)context).intern(value);
}
public static boolean isIdeaTask(final String taskName, @Nullable String group) {
if ((group == null || "ide".equalsIgnoreCase(group)) && StringUtil.containsIgnoreCase(taskName, "idea")) return true;
return "other".equalsIgnoreCase(group) && StringUtil.containsIgnoreCase(taskName, "idea");