[maven] IDEA-359760 get rid of NativeMavenProjectHolder usage

GitOrigin-RevId: 6ebb36554664d812dd0a0e087d59598a46861263
This commit is contained in:
Dmitry Kichinsky
2024-09-27 15:18:56 +02:00
committed by intellij-monorepo-bot
parent 79e7db2e77
commit 21164d9381
8 changed files with 4 additions and 159 deletions

View File

@@ -58,20 +58,17 @@ public class MavenServerExecutionResult implements Serializable {
public final String dependencyHash;
public final boolean dependencyResolutionSkipped;
public final Map<String, String> mavenModelMap;
public final NativeMavenProjectHolder nativeMavenProject;
public final Collection<String> activatedProfiles;
public ProjectData(@NotNull MavenModel mavenModel,
@Nullable String dependencyHash,
boolean dependencyResolutionSkipped,
Map<String, String> mavenModelMap,
NativeMavenProjectHolder nativeMavenProject,
Collection<String> activatedProfiles) {
this.mavenModel = mavenModel;
this.dependencyHash = dependencyHash;
this.dependencyResolutionSkipped = dependencyResolutionSkipped;
this.mavenModelMap = mavenModelMap;
this.nativeMavenProject = nativeMavenProject;
this.activatedProfiles = activatedProfiles;
}

View File

@@ -1,35 +0,0 @@
package org.jetbrains.idea.maven.server;
import org.apache.maven.project.MavenProject;
import org.jetbrains.annotations.NotNull;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
public class RemoteNativeMaven3ProjectHolder implements NativeMavenProjectHolder {
private static final Map<Integer, Reference<RemoteNativeMaven3ProjectHolder>> myMap = new HashMap<Integer, Reference<RemoteNativeMaven3ProjectHolder>>();
private final MavenProject myMavenProject;
public RemoteNativeMaven3ProjectHolder(@NotNull MavenProject mavenProject) {
myMavenProject = mavenProject;
myMap.put(getId(), new WeakReference<RemoteNativeMaven3ProjectHolder>(this));
}
@Override
public int getId() {
return System.identityHashCode(this);
}
@NotNull
public static MavenProject findProjectById(int id) {
Reference<RemoteNativeMaven3ProjectHolder> reference = myMap.get(id);
RemoteNativeMaven3ProjectHolder result = reference == null ? null : reference.get();
if (result == null) {
throw new RuntimeException("NativeMavenProjectHolder not found for id: " + id);
}
return result.myMavenProject;
}
}

View File

@@ -331,20 +331,11 @@ public class Maven3XProjectResolver {
problems.addAll(myEmbedder.collectProblems(mavenProject.getFile(), Collections.singleton(e), modelProblems));
}
RemoteNativeMaven3ProjectHolder holder = new RemoteNativeMaven3ProjectHolder(mavenProject);
try {
UnicastRemoteObject.exportObject(holder, 0);
}
catch (RemoteException e) {
throw new RuntimeException(e);
}
Collection<String> activatedProfiles = Maven3XProfileUtil.collectActivatedProfiles(mavenProject);
Map<String, String> mavenModelMap = Maven3ModelConverter.convertToMap(mavenProject.getModel());
MavenServerExecutionResult.ProjectData data =
new MavenServerExecutionResult.ProjectData(model, dependencyHash, dependencyResolutionSkipped, mavenModelMap,
holder, activatedProfiles);
new MavenServerExecutionResult.ProjectData(model, dependencyHash, dependencyResolutionSkipped, mavenModelMap, activatedProfiles);
Collection<MavenProjectProblem> unresolvedProblems = new HashSet<>();
collectUnresolvedArtifactProblems(file, dependencyResolutionResult, unresolvedProblems);
return new MavenServerExecutionResult(data, problems, Collections.emptySet(), unresolvedProblems);

View File

@@ -349,20 +349,11 @@ public class Maven40ProjectResolver {
problems.addAll(myEmbedder.collectProblems(mavenProject.getFile(), Collections.singleton(e), modelProblems));
}
RemoteNativeMaven40ProjectHolder holder = new RemoteNativeMaven40ProjectHolder(mavenProject);
try {
UnicastRemoteObject.exportObject(holder, 0);
}
catch (RemoteException e) {
throw new RuntimeException(e);
}
Collection<String> activatedProfiles = Maven40ProfileUtil.collectActivatedProfiles(mavenProject);
Map<String, String> mavenModelMap = Maven40ModelConverter.convertToMap(mavenProject.getModel());
MavenServerExecutionResult.ProjectData data =
new MavenServerExecutionResult.ProjectData(model, dependencyHash, dependencyResolutionSkipped, mavenModelMap,
holder, activatedProfiles);
new MavenServerExecutionResult.ProjectData(model, dependencyHash, dependencyResolutionSkipped, mavenModelMap, activatedProfiles);
if (null == model.getBuild() || null == model.getBuild().getDirectory()) {
data = null;
}

View File

@@ -1,37 +0,0 @@
// Copyright 2000-2023 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
package com.intellij.maven.server.m40.utils;
import org.apache.maven.project.MavenProject;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.idea.maven.server.NativeMavenProjectHolder;
import java.lang.ref.Reference;
import java.lang.ref.WeakReference;
import java.util.HashMap;
import java.util.Map;
public class RemoteNativeMaven40ProjectHolder implements NativeMavenProjectHolder {
private static final Map<Integer, Reference<RemoteNativeMaven40ProjectHolder>> myMap = new HashMap<>();
private final MavenProject myMavenProject;
public RemoteNativeMaven40ProjectHolder(@NotNull MavenProject mavenProject) {
myMavenProject = mavenProject;
myMap.put(getId(), new WeakReference<>(this));
}
@Override
public int getId() {
return System.identityHashCode(this);
}
@NotNull
public static MavenProject findProjectById(int id) {
Reference<RemoteNativeMaven40ProjectHolder> reference = myMap.get(id);
RemoteNativeMaven40ProjectHolder result = reference == null ? null : reference.get();
if (result == null) {
throw new RuntimeException("NativeMavenProjectHolder not found for id: " + id);
}
return result.myMavenProject;
}
}

View File

@@ -16,19 +16,15 @@ import com.intellij.openapi.util.io.FileUtil
import com.intellij.openapi.util.text.StringUtil
import com.intellij.pom.java.LanguageLevel
import com.intellij.util.Consumer
import com.intellij.util.ExceptionUtil
import com.intellij.util.containers.ContainerUtil
import org.jdom.Element
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.idea.maven.execution.SyncBundle
import org.jetbrains.idea.maven.importing.MavenAnnotationProcessorConfiguratorUtil.getProcessorArtifactInfos
import org.jetbrains.idea.maven.importing.MavenWorkspaceConfigurator.*
import org.jetbrains.idea.maven.model.MavenArtifactInfo
import org.jetbrains.idea.maven.model.MavenId
import org.jetbrains.idea.maven.project.*
import org.jetbrains.idea.maven.server.MavenEmbedderWrapper
import org.jetbrains.idea.maven.server.NativeMavenProjectHolder
import org.jetbrains.idea.maven.utils.MavenProcessCanceledException
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.project.MavenProjectsTree
import org.jetbrains.jps.model.java.compiler.ProcessorConfigProfile
import org.jetbrains.jps.model.java.impl.compiler.ProcessorConfigProfileImpl
import org.jetbrains.jps.util.JpsPathUtil
@@ -120,45 +116,6 @@ class MavenAnnotationProcessorConfigurator : MavenApplicableConfigurator("org.ap
val mavenProjectModules: List<ModuleWithType<Module>>,
val processorModuleNames: List<String>)
@Throws(MavenProcessCanceledException::class)
fun resolve(project: Project,
mavenProject: MavenProject,
nativeMavenProject: NativeMavenProjectHolder,
embedder: MavenEmbedderWrapper) {
val config = getConfig(mavenProject, "annotationProcessorPaths")
if (config == null) return
val artifactsInfo = getProcessorArtifactInfos(config)
if (artifactsInfo.isEmpty()) {
return
}
val externalArtifacts: MutableList<MavenArtifactInfo> = ArrayList()
val mavenProjectsManager = MavenProjectsManager.getInstance(project)
val tree = mavenProjectsManager.projectsTree
for (info in artifactsInfo) {
val mavenArtifact = tree.findProject(MavenId(info.groupId, info.artifactId, info.version))
if (mavenArtifact == null) {
externalArtifacts.add(info)
}
}
try {
val annotationProcessors = embedder
.resolveArtifactTransitively(ArrayList(externalArtifacts), ArrayList(mavenProject.remoteRepositories))
if (annotationProcessors.problem != null) {
MavenResolveResultProblemProcessor.notifySyncForProblem(project, annotationProcessors.problem!!)
}
else {
mavenProject.addAnnotationProcessors(annotationProcessors.mavenResolvedArtifacts)
}
}
catch (e: Exception) {
val message = if (e.message != null) e.message else ExceptionUtil.getThrowableText(e)
MavenProjectsManager.getInstance(project).syncConsole.addWarning(SyncBundle.message("maven.sync.annotation.processor.problem"), message!!)
}
}
private fun configureProfiles(project: Project,
tree: MavenProjectsTree,
projectsWithModules: Iterable<MavenProjectWithProcessorModules>,

View File

@@ -18,8 +18,6 @@ import org.jetbrains.annotations.ApiStatus
import org.jetbrains.idea.maven.MavenDisposable
import org.jetbrains.idea.maven.project.MavenProject
import org.jetbrains.idea.maven.project.MavenProjectsManager
import org.jetbrains.idea.maven.server.MavenEmbedderWrapper
import org.jetbrains.idea.maven.server.NativeMavenProjectHolder
import org.jetbrains.idea.maven.utils.MavenLog
import org.jetbrains.jps.model.java.compiler.JpsJavaCompilerOptions
@@ -37,21 +35,6 @@ private val LOG = Logger.getInstance(MavenCompilerConfigurator::class.java)
@ApiStatus.Internal
class MavenCompilerConfigurator : MavenApplicableConfigurator("org.apache.maven.plugins", "maven-compiler-plugin"),
MavenWorkspaceConfigurator {
fun resolve(project: Project,
mavenProject: MavenProject,
nativeMavenProject: NativeMavenProjectHolder,
embedder: MavenEmbedderWrapper) {
if (!super.isApplicable(mavenProject)) return
if (!Registry.`is`("maven.import.compiler.arguments", true) || !MavenProjectsManager.getInstance(project).importingSettings.isAutoDetectCompiler) return
val defaultCompilerExtension = MavenCompilerExtension.EP_NAME.extensions.find {
it.resolveDefaultCompiler(project, mavenProject, embedder)
}
if (project.getUserData(DEFAULT_COMPILER_EXTENSION) == null) {
project.putUserData(DEFAULT_COMPILER_EXTENSION, defaultCompilerExtension)
}
}
override fun beforeModelApplied(context: MavenWorkspaceConfigurator.MutableModelContext) {
var defaultCompilerExtension = context.project.getUserData(DEFAULT_COMPILER_EXTENSION)
context.putUserData(DEFAULT_COMPILER_EXTENSION, null)

View File

@@ -42,7 +42,6 @@ class MavenProjectResolverResult(@JvmField val mavenModel: MavenModel,
@JvmField val dependencyResolutionSkipped: Boolean,
@JvmField val nativeModelMap: Map<String, String>,
@JvmField val activatedProfiles: MavenExplicitProfiles,
val nativeMavenProject: NativeMavenProjectHolder?,
@JvmField val readingProblems: MutableCollection<MavenProjectProblem>,
@JvmField val unresolvedArtifactIds: MutableSet<MavenId>,
val unresolvedProblems: Collection<MavenProjectProblem>)
@@ -348,7 +347,6 @@ class MavenProjectResolver(private val myProject: Project) {
projectData.dependencyResolutionSkipped,
projectData.mavenModelMap,
MavenExplicitProfiles(projectData.activatedProfiles, explicitProfiles.disabledProfiles),
projectData.nativeMavenProject,
result.problems,
result.unresolvedArtifacts,
result.unresolvedProblems))