You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by gn...@apache.org on 2022/03/10 07:13:11 UTC
[maven] 10/12: Fix m-deploy-p ITs
This is an automated email from the ASF dual-hosted git repository.
gnodet pushed a commit to branch mvn4
in repository https://gitbox.apache.org/repos/asf/maven.git
commit bacfa84cf8b5a6eaef3d63b03f9c42dda93e486f
Author: Guillaume Nodet <gn...@gmail.com>
AuthorDate: Wed Mar 9 07:54:59 2022 +0100
Fix m-deploy-p ITs
---
.../main/java/org/apache/maven/api/Project.java | 11 ++++--
.../maven/internal/impl/DefaultArtifact.java | 27 +++++++++++++++
.../apache/maven/internal/impl/DefaultProject.java | 14 +++++++-
.../maven/internal/impl/DefaultProjectManager.java | 39 +++++++++++-----------
.../apache/maven/internal/impl/DefaultSession.java | 4 +--
5 files changed, 70 insertions(+), 25 deletions(-)
diff --git a/maven-core-api/src/main/java/org/apache/maven/api/Project.java b/maven-core-api/src/main/java/org/apache/maven/api/Project.java
index 9fa9c79..386dda4 100644
--- a/maven-core-api/src/main/java/org/apache/maven/api/Project.java
+++ b/maven-core-api/src/main/java/org/apache/maven/api/Project.java
@@ -50,12 +50,19 @@ public interface Project
@Nonnull
Model getModel();
- @Nonnull
+ /**
+ * Returns the path to the pom file for this project.
+ * A project is usually read from the file system and this will point to
+ * the file. In some cases, a transient project can be created which
+ * will not point to an actual pom file.
+ * @return the path of the pom
+ */
Path getPomPath();
default Path getBasedir()
{
- return getPomPath().getParent();
+ Path pomPath = getPomPath();
+ return pomPath != null ? pomPath.getParent() : null;
}
@Nonnull
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
index fd902fb..37b669a 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultArtifact.java
@@ -98,4 +98,31 @@ public class DefaultArtifact implements Artifact
{
return Optional.ofNullable( artifact.getFile() ).map( File::toPath );
}
+
+ @Override
+ public boolean equals( Object o )
+ {
+ if ( this == o )
+ {
+ return true;
+ }
+ if ( o == null || getClass() != o.getClass() )
+ {
+ return false;
+ }
+ DefaultArtifact that = (DefaultArtifact) o;
+ return artifact.equals( that.artifact );
+ }
+
+ @Override
+ public int hashCode()
+ {
+ return Objects.hash( artifact );
+ }
+
+ @Override
+ public String toString()
+ {
+ return artifact.toString();
+ }
}
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProject.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProject.java
index e15386b..5677cf9 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProject.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProject.java
@@ -22,6 +22,7 @@ package org.apache.maven.internal.impl;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
+import java.io.File;
import java.nio.file.Path;
import java.util.Collection;
import java.util.Collections;
@@ -48,6 +49,16 @@ public class DefaultProject implements Project
this.project = project;
}
+ public DefaultSession getSession()
+ {
+ return session;
+ }
+
+ public MavenProject getProject()
+ {
+ return project;
+ }
+
@Nonnull
@Override
public String getGroupId()
@@ -94,7 +105,8 @@ public class DefaultProject implements Project
@Override
public Path getPomPath()
{
- return project.getFile().toPath();
+ File file = project.getFile();
+ return file != null ? file.toPath() : null;
}
@Nonnull
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
index ba27d0b..079d181 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultProjectManager.java
@@ -25,11 +25,10 @@ import java.nio.file.Path;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.stream.Collectors;
+import org.apache.maven.RepositoryUtils;
import org.apache.maven.api.Artifact;
import org.apache.maven.api.Node;
import org.apache.maven.api.Project;
@@ -40,10 +39,6 @@ import org.apache.maven.api.services.ProjectManager;
public class DefaultProjectManager implements ProjectManager
{
- private final Map<Project, Path> paths = new ConcurrentHashMap<>();
- private final Map<Project, Collection<Artifact>> attachedArtifacts = new ConcurrentHashMap<>();
- private final Map<Project, List<String>> compileSourceRoots = new ConcurrentHashMap<>();
- private final Map<Project, List<String>> testCompileSourceRoots = new ConcurrentHashMap<>();
private final ArtifactManager artifactManager;
public DefaultProjectManager( ArtifactManager artifactManager )
@@ -55,51 +50,55 @@ public class DefaultProjectManager implements ProjectManager
@Override
public Optional<Path> getPath( Project project )
{
- return Optional.ofNullable( paths.get( project ) );
+ throw new UnsupportedOperationException();
}
@Nonnull
@Override
public Collection<Artifact> getAttachedArtifacts( Project project )
{
- Collection<Artifact> attached = attachedArtifacts.get( project );
- return attached != null ? Collections.unmodifiableCollection( attached ) : Collections.emptyList();
+ DefaultSession session = ( (DefaultProject ) project ).getSession();
+ Collection<Artifact> attached = ( ( DefaultProject ) project ).getProject().getAttachedArtifacts().stream()
+ .map( RepositoryUtils::toArtifact )
+ .map( session::getArtifact )
+ .collect( Collectors.toList() );
+ return Collections.unmodifiableCollection( attached );
}
@Override
public void attachArtifact( Project project, Artifact artifact, Path path )
{
- attachedArtifacts.computeIfAbsent( project, p -> new CopyOnWriteArrayList<>() )
- .add( artifact );
+ ( ( DefaultProject ) project ).getProject().addAttachedArtifact(
+ RepositoryUtils.toArtifact( ( ( DefaultProject ) project ).getSession().toArtifact( artifact ) ) );
artifactManager.setPath( artifact, path );
}
@Override
public List<String> getCompileSourceRoots( Project project )
{
- List<String> roots = compileSourceRoots.get( project );
- return roots != null ? Collections.unmodifiableList( roots ) : Collections.emptyList();
+ List<String> roots = ( ( DefaultProject ) project ).getProject().getCompileSourceRoots();
+ return Collections.unmodifiableList( roots );
}
@Override
public void addCompileSourceRoot( Project project, String sourceRoot )
{
- compileSourceRoots.computeIfAbsent( project, p -> new CopyOnWriteArrayList<>() )
- .add( sourceRoot );
+ List<String> roots = ( ( DefaultProject ) project ).getProject().getCompileSourceRoots();
+ roots.add( sourceRoot );
}
@Override
public List<String> getTestCompileSourceRoots( Project project )
{
- List<String> roots = testCompileSourceRoots.get( project );
- return roots != null ? Collections.unmodifiableList( roots ) : Collections.emptyList();
+ List<String> roots = ( ( DefaultProject ) project ).getProject().getTestCompileSourceRoots();
+ return Collections.unmodifiableList( roots );
}
@Override
public void addTestCompileSourceRoot( Project project, String sourceRoot )
{
- testCompileSourceRoots.computeIfAbsent( project, p -> new CopyOnWriteArrayList<>() )
- .add( sourceRoot );
+ List<String> roots = ( ( DefaultProject ) project ).getProject().getTestCompileSourceRoots();
+ roots.add( sourceRoot );
}
@Override
diff --git a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
index 2671c3c..39a181a 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/impl/DefaultSession.java
@@ -91,7 +91,7 @@ public class DefaultSession implements Session
= Collections.synchronizedMap( new WeakHashMap<>() );
private final Map<org.eclipse.aether.repository.RemoteRepository, RemoteRepository> allRepositories
= Collections.synchronizedMap( new WeakHashMap<>() );
- private final Map<MavenProject, Project> allProjects
+ private final Map<String, Project> allProjects
= Collections.synchronizedMap( new WeakHashMap<>() );
private final Map<org.eclipse.aether.graph.Dependency, Dependency> allDependencies
= Collections.synchronizedMap( new WeakHashMap<>() );
@@ -310,7 +310,7 @@ public class DefaultSession implements Session
public Project getProject( MavenProject project )
{
- return allProjects.computeIfAbsent( project, p -> new DefaultProject( this, p ) );
+ return allProjects.computeIfAbsent( project.getId(), id -> new DefaultProject( this, project ) );
}
public List<org.eclipse.aether.repository.RemoteRepository> toRepositories( List<RemoteRepository> repositories )