Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
58 changes: 32 additions & 26 deletions maven-core/src/main/java/org/apache/maven/project/MavenProject.java
Original file line number Diff line number Diff line change
Expand Up @@ -111,10 +111,6 @@ public class MavenProject

private Set<Artifact> resolvedArtifacts;

private ArtifactFilter artifactFilter;

private Set<Artifact> artifacts;

private Artifact parentArtifact;

private Set<Artifact> pluginArtifacts;
Expand Down Expand Up @@ -151,8 +147,8 @@ public class MavenProject

private Artifact artifact;

// calculated.
private Map<String, Artifact> artifactMap;
private final ThreadLocal<ArtifactsHolder> threadLocalArtifactsHolder =
ThreadLocal.withInitial( ArtifactsHolder::new );

private Model originalModel;

Expand Down Expand Up @@ -695,10 +691,11 @@ public void addLicense( License license )

public void setArtifacts( Set<Artifact> artifacts )
{
this.artifacts = artifacts;
ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
artifactsHolder.artifacts = artifacts;

// flush the calculated artifactMap
artifactMap = null;
artifactsHolder.artifactMap = null;
}

/**
Expand All @@ -711,34 +708,36 @@ public void setArtifacts( Set<Artifact> artifacts )
*/
public Set<Artifact> getArtifacts()
{
if ( artifacts == null )
ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
if ( artifactsHolder.artifacts == null )
{
if ( artifactFilter == null || resolvedArtifacts == null )
if ( artifactsHolder.artifactFilter == null || resolvedArtifacts == null )
{
artifacts = new LinkedHashSet<>();
artifactsHolder.artifacts = new LinkedHashSet<>();
}
else
{
artifacts = new LinkedHashSet<>( resolvedArtifacts.size() * 2 );
artifactsHolder.artifacts = new LinkedHashSet<>( resolvedArtifacts.size() * 2 );
for ( Artifact artifact : resolvedArtifacts )
{
if ( artifactFilter.include( artifact ) )
if ( artifactsHolder.artifactFilter.include( artifact ) )
{
artifacts.add( artifact );
artifactsHolder.artifacts.add( artifact );
}
}
}
}
return artifacts;
return artifactsHolder.artifacts;
}

public Map<String, Artifact> getArtifactMap()
{
if ( artifactMap == null )
ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
if ( artifactsHolder.artifactMap == null )
{
artifactMap = ArtifactUtils.artifactMapByVersionlessId( getArtifacts() );
artifactsHolder.artifactMap = ArtifactUtils.artifactMapByVersionlessId( getArtifacts() );
}
return artifactMap;
return artifactsHolder.artifactMap;
}

public void setPluginArtifacts( Set<Artifact> pluginArtifacts )
Expand Down Expand Up @@ -1073,7 +1072,7 @@ else if ( !( other instanceof MavenProject ) )
MavenProject that = (MavenProject) other;

return Objects.equals( getArtifactId(), that.getArtifactId() )
&& Objects.equals( getGroupId(), that.getGroupId() )
&& Objects.equals( getGroupId(), that.getGroupId() )
&& Objects.equals( getVersion(), that.getVersion() );
}

Expand Down Expand Up @@ -1433,8 +1432,9 @@ public DependencyFilter getExtensionDependencyFilter()
public void setResolvedArtifacts( Set<Artifact> artifacts )
{
this.resolvedArtifacts = ( artifacts != null ) ? artifacts : Collections.<Artifact>emptySet();
this.artifacts = null;
this.artifactMap = null;
ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
artifactsHolder.artifacts = null;
artifactsHolder.artifactMap = null;
}

/**
Expand All @@ -1447,9 +1447,10 @@ public void setResolvedArtifacts( Set<Artifact> artifacts )
*/
public void setArtifactFilter( ArtifactFilter artifactFilter )
{
this.artifactFilter = artifactFilter;
this.artifacts = null;
this.artifactMap = null;
ArtifactsHolder artifactsHolder = threadLocalArtifactsHolder.get();
artifactsHolder.artifactFilter = artifactFilter;
artifactsHolder.artifacts = null;
artifactsHolder.artifactMap = null;
}

/**
Expand Down Expand Up @@ -1844,7 +1845,6 @@ public Map<String, Artifact> getReportArtifactMap()
{
reportArtifactMap = ArtifactUtils.artifactMapByVersionlessId( getReportArtifacts() );
}

return reportArtifactMap;
}

Expand All @@ -1869,7 +1869,6 @@ public Map<String, Artifact> getExtensionArtifactMap()
{
extensionArtifactMap = ArtifactUtils.artifactMapByVersionlessId( getExtensionArtifacts() );
}

return extensionArtifactMap;
}

Expand Down Expand Up @@ -1991,4 +1990,11 @@ public void setProjectBuildingRequest( ProjectBuildingRequest projectBuildingReq
{
this.projectBuilderConfiguration = projectBuildingRequest;
}

private static class ArtifactsHolder
{
private ArtifactFilter artifactFilter;
private Set<Artifact> artifacts;
private Map<String, Artifact> artifactMap;
}
}