You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2007/11/08 21:15:21 UTC
svn commit: r593287 - in /maven/components/trunk/maven-project/src:
main/java/org/apache/maven/project/build/
test/java/org/apache/maven/project/inheritance/t03/
test/java/org/apache/maven/project/inheritance/t04/
test/java/org/apache/maven/project/inh...
Author: jdcasey
Date: Thu Nov 8 12:15:20 2007
New Revision: 593287
URL: http://svn.apache.org/viewvc?rev=593287&view=rev
Log:
Clean up the caching to use weak hashmaps, to conserve some memory in large builds.
Modified:
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/ProjectBuildCache.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/ProjectInheritanceTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t04/ProjectInheritanceTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t05/ProjectInheritanceTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t06/ProjectInheritanceTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t07/ProjectInheritanceTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t08/ProjectInheritanceTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t10/ProjectInheritanceTest.java
maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t11/ProjectInheritanceTest.java
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/ProjectBuildCache.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/ProjectBuildCache.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/ProjectBuildCache.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/ProjectBuildCache.java Thu Nov 8 12:15:20 2007
@@ -30,6 +30,7 @@
import java.io.File;
import java.util.HashMap;
import java.util.Map;
+import java.util.WeakHashMap;
/**
* This cache is meant to provide a reference of the project instances that are in the current build
@@ -37,30 +38,30 @@
* to store inter-project references as such in MavenProject instances. An ArtifactResolver instance
* will be used that can utilize this cache, but will also wrap the "default" ArtifactResolver
* instance, so that can be used as a target for replacement implementations.
- *
+ *
* To retrieve from the build context: buildContext.retrieve( new ProjectBuildCache( false ) );
- *
+ *
* @author jdcasey
*/
public class ProjectBuildCache
implements ManagedBuildData
{
-
+
private static final String BUILD_CONTEXT_KEY = ProjectBuildCache.class.getName();
-
+
private static final String PROJECT_CACHE = "project-cache";
-
+
private static final String POM_FILE_CACHE = "pom-file-cache";
-
+
private Map projectCache;
-
+
private Map pomFileCache;
-
+
public ProjectBuildCache()
{
this( true );
}
-
+
/**
* @param liveInstance If false, this instance's state is meant to be retrieved from the build
* context. If true, this instance can serve as the authoritative instance where the cache is
@@ -70,26 +71,26 @@
{
if ( liveInstance )
{
- projectCache = new HashMap();
- pomFileCache = new HashMap();
+ projectCache = new WeakHashMap();
+ pomFileCache = new WeakHashMap();
}
}
-
+
public void cacheProject( MavenProject project )
{
projectCache.put( generateCacheKey( project ), project );
}
-
+
public MavenProject getCachedProject( String groupId, String artifactId, String version )
{
return (MavenProject) projectCache.get( generateCacheKey( groupId, artifactId, version ) );
}
-
+
public MavenProject getCachedProject( Artifact artifact )
{
return (MavenProject) projectCache.get( generateCacheKey( artifact ) );
}
-
+
public MavenProject getCachedProject( MavenProject exampleInstance )
{
return (MavenProject) projectCache.get( generateCacheKey( exampleInstance ) );
@@ -99,7 +100,7 @@
{
pomFileCache.put( generateCacheKey( model ), modelFile );
}
-
+
public File getCachedModelFile( Artifact artifact )
{
return (File) pomFileCache.get( generateCacheKey( artifact ) );
@@ -118,10 +119,10 @@
public Map getData()
{
Map data = new HashMap( 2 );
-
+
data.put( PROJECT_CACHE, projectCache );
data.put( POM_FILE_CACHE, pomFileCache );
-
+
return data;
}
@@ -132,8 +133,8 @@
public void setData( Map data )
{
- this.projectCache = (Map) data.get( PROJECT_CACHE );
- this.pomFileCache = (Map) data.get( POM_FILE_CACHE );
+ projectCache = (Map) data.get( PROJECT_CACHE );
+ pomFileCache = (Map) data.get( POM_FILE_CACHE );
}
public void store( BuildContextManager buildContextManager )
@@ -146,11 +147,11 @@
public static ProjectBuildCache read( BuildContextManager buildContextManager )
{
BuildContext buildContext = buildContextManager.readBuildContext( true );
-
+
ProjectBuildCache cache = new ProjectBuildCache();
-
+
buildContext.retrieve( cache );
-
+
return cache;
}
@@ -160,7 +161,7 @@
String groupId = model.getGroupId();
- if ( groupId == null && modelParent != null )
+ if ( ( groupId == null ) && ( modelParent != null ) )
{
groupId = modelParent.getGroupId();
}
@@ -169,29 +170,29 @@
String version = model.getVersion();
- if ( version == null && modelParent != null )
+ if ( ( version == null ) && ( modelParent != null ) )
{
version = modelParent.getVersion();
}
return generateCacheKey( groupId, artifactId, version );
}
-
+
private static String generateCacheKey( Parent parent )
{
return generateCacheKey( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
}
-
+
private static String generateCacheKey( Artifact artifact )
{
return generateCacheKey( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion() );
}
-
+
private static String generateCacheKey( MavenProject project )
{
return generateCacheKey( project.getGroupId(), project.getArtifactId(), project.getVersion() );
}
-
+
private static String generateCacheKey( String groupId, String artifactId, String version )
{
return groupId + ":" + artifactId + ":" + version;
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t03/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -55,15 +55,15 @@
{
File localRepo = getLocalRepositoryPath();
File pom0 = new File( localRepo, "p0/pom.xml" );
-
+
File pom0Basedir = pom0.getParentFile();
-
+
File pom1 = new File( pom0Basedir, "p1/pom.xml" );
-
+
// load everything...
MavenProject project0 = getProject( pom0 );
MavenProject project1 = getProject( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
}
}
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t04/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t04/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t04/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t04/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -30,7 +30,7 @@
/**
* Verifies the version of a dependency listed in a parent's
* dependencyManagement section is chosen over another version of the same
- * dependency, listed transitively.
+ * dependency, listed transitively.
*
* @author <a href="mailto:pschneider@gmail.com">Patrick Schneider</a>
* @version $Id$
@@ -65,12 +65,12 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
Set set = project1.getArtifacts();
assertNotNull("No artifacts", set);
assertTrue("No Artifacts", set.size() > 0);
assertTrue("Set size should be 3, is " + set.size(), set.size() == 3);
-
+
Iterator iter = set.iterator();
while (iter.hasNext()) {
Artifact artifact = (Artifact)iter.next();
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t05/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t05/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t05/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t05/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -61,7 +61,7 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
Set set = project1.getArtifacts();
assertNotNull("No artifacts", set);
assertTrue("No Artifacts", set.size() > 0);
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t06/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t06/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t06/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t06/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -61,7 +61,7 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
Set set = project1.getArtifacts();
assertNotNull("No artifacts", set);
assertTrue("No Artifacts", set.size() > 0);
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t07/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t07/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t07/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t07/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -19,22 +19,13 @@
* under the License.
*/
-import java.io.File;
-import java.util.List;
-import java.util.Set;
-import java.util.Iterator;
-
-import org.apache.maven.model.Build;
-import org.apache.maven.model.MailingList;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.PluginExecution;
-import org.apache.maven.model.Dependency;
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase;
-import org.apache.maven.artifact.Artifact;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.logging.LoggerManager;
-import org.codehaus.plexus.logging.Logger;
+
+import java.io.File;
+import java.util.Iterator;
+import java.util.Set;
/**
* A test which demonstrates maven's dependency management
@@ -70,14 +61,14 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
System.out.println("Project " + project1.getId() + " " + project1);
Set set = project1.getArtifacts();
assertNotNull("No artifacts", set);
assertTrue("No Artifacts", set.size() > 0);
Iterator iter = set.iterator();
assertTrue("Set size should be 3, is " + set.size(), set.size() == 3);
-
+
while (iter.hasNext())
{
Artifact artifact = (Artifact)iter.next();
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t08/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t08/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t08/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t08/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -61,14 +61,14 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
System.out.println("Project " + project1.getId() + " " + project1);
Set set = project1.getArtifacts();
assertNotNull("No artifacts", set);
assertTrue("No Artifacts", set.size() > 0);
Iterator iter = set.iterator();
assertTrue("Set size should be 4, is " + set.size(), set.size() == 4);
-
+
while (iter.hasNext())
{
Artifact artifact = (Artifact)iter.next();
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t09/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -18,23 +18,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-import java.io.File;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Iterator;
-
-import org.apache.maven.model.Build;
-import org.apache.maven.model.MailingList;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.PluginExecution;
-import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase;
-import org.apache.maven.artifact.Artifact;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.logging.LoggerManager;
-import org.codehaus.plexus.logging.Logger;
+
+import java.io.File;
+import java.util.Map;
/**
* Verifies exclusions listed in dependencyManagement are valid for
@@ -59,7 +47,7 @@
/**
* How the test project is set up:
- *
+ *
* 1. dependencyManagement lists dependencies on a & b,
* with an exclusion on c in b.
* 2. the child project lists a dependency on project a only
@@ -82,13 +70,13 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
Map map = project1.getArtifactMap();
assertNotNull("No artifacts", map);
assertTrue("No Artifacts", map.size() > 0);
assertTrue("Set size should be 2, is " + map.size(), map.size() == 2);
-
+
assertTrue("maven-test:t09-a is not in the project", map.containsKey( "maven-test:t09-a" ));
assertTrue("maven-test:t09-b is not in the project", map.containsKey( "maven-test:t09-b" ));
@@ -101,7 +89,7 @@
* project b. We will pick up project c in this case because no
* restrictions were placed on d. This demonstrates that a, b, c, & d will
* all be collected.
- *
+ *
* @throws Exception
*/
public void testDependencyManagementExclusionDoesNotOverrideGloballyForTransitives()
@@ -117,7 +105,7 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project2 = getProjectWithDependencies( pom2 );
- assertEquals( pom0Basedir, project2.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project2.getParent().getBasedir().getCanonicalFile() );
Map map = project2.getArtifactMap();
assertNotNull( "No artifacts", map );
assertTrue( "No Artifacts", map.size() > 0 );
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t10/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t10/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t10/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t10/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -19,29 +19,18 @@
* under the License.
*/
-import java.io.File;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Iterator;
-
-import org.apache.maven.model.Build;
-import org.apache.maven.model.MailingList;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.PluginExecution;
-import org.apache.maven.model.Dependency;
+import org.apache.maven.artifact.Artifact;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase;
-import org.apache.maven.artifact.Artifact;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.logging.LoggerManager;
-import org.codehaus.plexus.logging.Logger;
+
+import java.io.File;
+import java.util.Map;
/**
* Verifies scope inheritence of direct and transitive dependencies.
- *
+ *
* Should show three behaviors:
- *
+ *
* 1. dependencyManagement should override the scope of transitive dependencies.
* 2. Direct dependencies should override the scope of dependencyManagement.
* 3. Direct dependencies should inherit scope from dependencyManagement when
@@ -77,27 +66,27 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
System.out.println("Project " + project1.getId() + " " + project1);
Map map = project1.getArtifactMap();
assertNotNull("No artifacts", map);
assertTrue("No Artifacts", map.size() > 0);
assertTrue("Set size should be 3, is " + map.size(), map.size() == 3);
-
+
Artifact a = (Artifact) map.get("maven-test:t10-a");
Artifact b = (Artifact) map.get("maven-test:t10-b");
Artifact c = (Artifact) map.get("maven-test:t10-c");
-
+
assertNotNull( a );
assertNotNull( b );
assertNotNull( c );
// inherited from depMgmt
assertTrue("Incorrect scope for " + a.getDependencyConflictId(), a.getScope().equals("test"));
-
+
// transitive dep, overridden b depMgmt
assertTrue("Incorrect scope for " + b.getDependencyConflictId(), b.getScope().equals("runtime"));
-
+
// direct dep, overrides depMgmt
assertTrue("Incorrect scope for " + c.getDependencyConflictId(), c.getScope().equals("runtime"));
Modified: maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t11/ProjectInheritanceTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t11/ProjectInheritanceTest.java?rev=593287&r1=593286&r2=593287&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t11/ProjectInheritanceTest.java (original)
+++ maven/components/trunk/maven-project/src/test/java/org/apache/maven/project/inheritance/t11/ProjectInheritanceTest.java Thu Nov 8 12:15:20 2007
@@ -19,23 +19,10 @@
* under the License.
*/
-import java.io.File;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Iterator;
-
-import org.apache.maven.model.Build;
-import org.apache.maven.model.MailingList;
-import org.apache.maven.model.Plugin;
-import org.apache.maven.model.PluginExecution;
-import org.apache.maven.model.Dependency;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.inheritance.AbstractProjectInheritanceTestCase;
-import org.apache.maven.artifact.Artifact;
-import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.codehaus.plexus.logging.LoggerManager;
-import org.codehaus.plexus.logging.Logger;
+
+import java.io.File;
/**
* Verifies scope of root project is preserved regardless of parent depenedency management.
@@ -71,7 +58,7 @@
MavenProject project0 = getProjectWithDependencies( pom0 );
MavenProject project1 = getProjectWithDependencies( pom1 );
- assertEquals( pom0Basedir, project1.getParent().getBasedir() );
+ assertEquals( pom0Basedir, project1.getParent().getBasedir().getCanonicalFile() );
assertNull( "dependencyManagement has overwritten the scope of the currently building child project",
project1.getArtifact().getScope() );
}