mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-306034 Performance optimization: iterate over all maven ids -> iterate over those with the required artifactId
GitOrigin-RevId: e887caa1d438b04671505f66e691252e356fa792
This commit is contained in:
committed by
intellij-monorepo-bot
parent
821ebfbb84
commit
a96de4aa84
+35
@@ -0,0 +1,35 @@
|
||||
// Copyright 2000-2022 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package org.jetbrains.idea.maven.model;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
public class MavenWorkspaceMapWrapper {
|
||||
private final MavenWorkspaceMap myWorkspaceMap;
|
||||
|
||||
private final Map<String, Set<MavenId>> myArtifactToIdToMavenIdMapping = new HashMap<>();
|
||||
|
||||
public MavenWorkspaceMapWrapper(MavenWorkspaceMap workspaceMap) {
|
||||
myWorkspaceMap = workspaceMap;
|
||||
|
||||
if (null != myWorkspaceMap) {
|
||||
for (MavenId mavenId : myWorkspaceMap.getAvailableIds()) {
|
||||
if (!myArtifactToIdToMavenIdMapping.containsKey(mavenId.getArtifactId())) {
|
||||
myArtifactToIdToMavenIdMapping.put(mavenId.getArtifactId(), new HashSet<>());
|
||||
}
|
||||
myArtifactToIdToMavenIdMapping.get(mavenId.getArtifactId()).add(mavenId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public MavenWorkspaceMap.Data findFileAndOriginalId(MavenId mavenId) {
|
||||
return myWorkspaceMap.findFileAndOriginalId(mavenId);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public Set<MavenId> getAvailableIdsForArtifactId(String artifactId) {
|
||||
Set<MavenId> ids = myArtifactToIdToMavenIdMapping.get(artifactId);
|
||||
return null == ids ? Collections.emptySet() : ids;
|
||||
}
|
||||
}
|
||||
+8
-5
@@ -20,13 +20,16 @@ import org.apache.maven.artifact.repository.metadata.*;
|
||||
import org.codehaus.plexus.component.annotations.Component;
|
||||
import org.jetbrains.idea.maven.model.MavenId;
|
||||
import org.jetbrains.idea.maven.model.MavenWorkspaceMap;
|
||||
import org.jetbrains.idea.maven.model.MavenWorkspaceMapWrapper;
|
||||
|
||||
import java.util.Objects;
|
||||
|
||||
@Component(role = RepositoryMetadataManager.class, hint = "ide")
|
||||
public class CustomMaven3RepositoryMetadataManager extends DefaultRepositoryMetadataManager {
|
||||
private MavenWorkspaceMap myWorkspaceMap;
|
||||
private MavenWorkspaceMapWrapper myWorkspaceMap;
|
||||
|
||||
public void customize(MavenWorkspaceMap workspaceMap) {
|
||||
myWorkspaceMap = workspaceMap;
|
||||
myWorkspaceMap = new MavenWorkspaceMapWrapper(workspaceMap);
|
||||
}
|
||||
|
||||
public void reset() {
|
||||
@@ -37,7 +40,7 @@ public class CustomMaven3RepositoryMetadataManager extends DefaultRepositoryMeta
|
||||
public void resolve(RepositoryMetadata metadata, RepositoryRequest request) throws RepositoryMetadataResolutionException {
|
||||
super.resolve(metadata, request);
|
||||
|
||||
MavenWorkspaceMap map = myWorkspaceMap;
|
||||
MavenWorkspaceMapWrapper map = myWorkspaceMap;
|
||||
if (map == null) return;
|
||||
|
||||
Metadata data = metadata.getMetadata();
|
||||
@@ -46,8 +49,8 @@ public class CustomMaven3RepositoryMetadataManager extends DefaultRepositoryMeta
|
||||
data.setVersioning(versioning = new Versioning());
|
||||
}
|
||||
|
||||
for (MavenId each : map.getAvailableIds()) {
|
||||
if (each.equals(data.getGroupId(), data.getArtifactId())) {
|
||||
for (MavenId each : map.getAvailableIdsForArtifactId(data.getArtifactId())) {
|
||||
if (Objects.equals(each.getGroupId(), data.getGroupId())) {
|
||||
versioning.addVersion(each.getVersion());
|
||||
}
|
||||
}
|
||||
|
||||
+9
-9
@@ -20,19 +20,22 @@ import org.eclipse.aether.repository.WorkspaceReader;
|
||||
import org.eclipse.aether.repository.WorkspaceRepository;
|
||||
import org.jetbrains.idea.maven.model.MavenId;
|
||||
import org.jetbrains.idea.maven.model.MavenWorkspaceMap;
|
||||
import org.jetbrains.idea.maven.model.MavenWorkspaceMapWrapper;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
public class Workspace3Reader implements WorkspaceReader {
|
||||
|
||||
private final WorkspaceRepository myRepository = new WorkspaceRepository();
|
||||
|
||||
private final MavenWorkspaceMap myWorkspaceMap;
|
||||
private final MavenWorkspaceMapWrapper myWorkspaceMap;
|
||||
|
||||
public Workspace3Reader(MavenWorkspaceMap workspaceMap) {
|
||||
myWorkspaceMap = workspaceMap;
|
||||
myWorkspaceMap = new MavenWorkspaceMapWrapper(workspaceMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -48,16 +51,13 @@ public class Workspace3Reader implements WorkspaceReader {
|
||||
return resolved.getFile(artifact.getExtension());
|
||||
}
|
||||
|
||||
private static boolean equals(String s1, String s2) {
|
||||
return s1 == null ? s2 == null : s1.equals(s2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> findVersions(Artifact artifact) {
|
||||
List<String> res = new ArrayList<String>();
|
||||
List<String> res = new ArrayList<>();
|
||||
|
||||
for (MavenId id : myWorkspaceMap.getAvailableIds()) {
|
||||
if (equals(id.getArtifactId(), artifact.getArtifactId()) && equals(id.getGroupId(), artifact.getGroupId())) {
|
||||
Set<MavenId> ids = myWorkspaceMap.getAvailableIdsForArtifactId(artifact.getArtifactId());
|
||||
for (MavenId id : ids) {
|
||||
if (Objects.equals(id.getGroupId(), artifact.getGroupId())) {
|
||||
String version = id.getVersion();
|
||||
|
||||
if (version != null) {
|
||||
|
||||
+7
-9
@@ -17,6 +17,7 @@ package org.jetbrains.idea.maven.server;
|
||||
|
||||
import org.jetbrains.idea.maven.model.MavenId;
|
||||
import org.jetbrains.idea.maven.model.MavenWorkspaceMap;
|
||||
import org.jetbrains.idea.maven.model.MavenWorkspaceMapWrapper;
|
||||
import org.sonatype.aether.artifact.Artifact;
|
||||
import org.sonatype.aether.repository.WorkspaceReader;
|
||||
import org.sonatype.aether.repository.WorkspaceRepository;
|
||||
@@ -24,6 +25,7 @@ import org.sonatype.aether.repository.WorkspaceRepository;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* @author Sergey Evdokimov
|
||||
@@ -32,10 +34,10 @@ public class Maven30WorkspaceReader implements WorkspaceReader {
|
||||
|
||||
private final WorkspaceRepository myRepository = new WorkspaceRepository();
|
||||
|
||||
private final MavenWorkspaceMap myWorkspaceMap;
|
||||
private final MavenWorkspaceMapWrapper myWorkspaceMap;
|
||||
|
||||
public Maven30WorkspaceReader(MavenWorkspaceMap workspaceMap) {
|
||||
myWorkspaceMap = workspaceMap;
|
||||
myWorkspaceMap = new MavenWorkspaceMapWrapper(workspaceMap);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -51,16 +53,12 @@ public class Maven30WorkspaceReader implements WorkspaceReader {
|
||||
return resolved.getFile(artifact.getExtension());
|
||||
}
|
||||
|
||||
private static boolean equals(String s1, String s2) {
|
||||
return s1 == null ? s2 == null : s1.equals(s2);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> findVersions(Artifact artifact) {
|
||||
List<String> res = new ArrayList<String>();
|
||||
List<String> res = new ArrayList<>();
|
||||
|
||||
for (MavenId id : myWorkspaceMap.getAvailableIds()) {
|
||||
if (equals(id.getArtifactId(), artifact.getArtifactId()) && equals(id.getGroupId(), artifact.getGroupId())) {
|
||||
for (MavenId id : myWorkspaceMap.getAvailableIdsForArtifactId(artifact.getArtifactId())) {
|
||||
if (Objects.equals(id.getGroupId(), artifact.getGroupId())) {
|
||||
String version = id.getVersion();
|
||||
|
||||
if (version != null) {
|
||||
|
||||
Reference in New Issue
Block a user