summaryrefslogtreecommitdiff
path: root/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java')
-rw-r--r--plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java
index 63a227e23aad..9e8bede06fbe 100644
--- a/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java
+++ b/plugins/maven/maven3-server-impl/src/org/jetbrains/idea/maven/server/Maven3XServerEmbedder.java
@@ -1346,6 +1346,7 @@ public abstract class Maven3XServerEmbedder extends Maven3ServerEmbedder {
return doResolve(info, remoteRepositories);
}
+ @Deprecated
@NotNull
@Override
public List<MavenArtifact> resolveTransitively(@NotNull final List<MavenArtifactInfo> artifacts,
@@ -1372,6 +1373,46 @@ public abstract class Maven3XServerEmbedder extends Maven3ServerEmbedder {
}
@NotNull
+ @Override
+ public MavenArtifactResolveResult resolveArtifactTransitively(
+ @NotNull final List<MavenArtifactInfo> artifacts,
+ @NotNull final List<MavenRemoteRepository> remoteRepositories,
+ MavenToken token) throws RemoteException {
+ MavenServerUtil.checkToken(token);
+
+ try {
+ final MavenExecutionRequest request = createRequest(null, null, null, null);
+
+ final List<MavenArtifact>[] mavenArtifacts = new List[]{null};
+ executeWithMavenSession(request, new Runnable() {
+ @Override
+ public void run() {
+ try {
+ mavenArtifacts[0] = Maven3XServerEmbedder.this.doResolveTransitivelyWithError(artifacts, remoteRepositories);
+ }
+ catch (Exception e) {
+ throw new RuntimeException(e);
+ }
+ }
+ });
+ return new MavenArtifactResolveResult(mavenArtifacts[0], null);
+ }
+ catch (Exception e) {
+ Maven3ServerGlobals.getLogger().warn(e);
+ Artifact transferArtifact = getProblemTransferArtifact(e);
+ String message = getRootMessage(e);
+ MavenProjectProblem problem;
+ if (transferArtifact != null) {
+ MavenArtifact mavenArtifact = MavenModelConverter.convertArtifact(transferArtifact, getLocalRepositoryFile());
+ problem = MavenProjectProblem.createArtifactTransferProblem("", message, true, mavenArtifact);
+ } else {
+ problem = MavenProjectProblem.createStructureProblem("", message);
+ }
+ return new MavenArtifactResolveResult(Collections.<MavenArtifact>emptyList(), problem);
+ }
+ }
+
+ @NotNull
private List<MavenArtifact> doResolveTransitively(@NotNull List<MavenArtifactInfo> artifacts,
@NotNull List<MavenRemoteRepository> remoteRepositories) throws RemoteException {
@@ -1395,6 +1436,24 @@ public abstract class Maven3XServerEmbedder extends Maven3ServerEmbedder {
}
}
+ @NotNull
+ private List<MavenArtifact> doResolveTransitivelyWithError(@NotNull List<MavenArtifactInfo> artifacts,
+ @NotNull List<MavenRemoteRepository> remoteRepositories)
+ throws RemoteException, ArtifactResolutionException, ArtifactNotFoundException {
+ Set<Artifact> toResolve = new LinkedHashSet<Artifact>();
+ for (MavenArtifactInfo each : artifacts) {
+ toResolve.add(createArtifact(each));
+ }
+
+ Artifact project = getComponent(ArtifactFactory.class).createBuildArtifact("temp", "temp", "666", "pom");
+
+ Set<Artifact> res = getComponent(ArtifactResolver.class)
+ .resolveTransitively(toResolve, project, Collections.EMPTY_MAP, myLocalRepository, convertRepositories(remoteRepositories),
+ getComponent(ArtifactMetadataSource.class)).getArtifacts();
+
+ return MavenModelConverter.convertArtifacts(res, new HashMap<Artifact, MavenArtifact>(), getLocalRepositoryFile());
+ }
+
@Override
public Collection<MavenArtifact> resolvePlugin(@NotNull final MavenPlugin plugin,
@NotNull final List<MavenRemoteRepository> repositories,