You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by si...@apache.org on 2008/09/28 20:20:14 UTC

svn commit: r699873 - in /maven/components/trunk: c.patch maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java

Author: sisbell
Date: Sun Sep 28 11:20:13 2008
New Revision: 699873

URL: http://svn.apache.org/viewvc?rev=699873&view=rev
Log:
Caching of models. This model is not the one returned in the MavenProject so no danger of other components modifying it.

Added:
    maven/components/trunk/c.patch
Modified:
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java

Added: maven/components/trunk/c.patch
URL: http://svn.apache.org/viewvc/maven/components/trunk/c.patch?rev=699873&view=auto
==============================================================================
--- maven/components/trunk/c.patch (added)
+++ maven/components/trunk/c.patch Sun Sep 28 11:20:13 2008
@@ -0,0 +1,94 @@
+Index: maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java
+===================================================================
+--- maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java	(revision 697955)
++++ maven-project/src/main/java/org/apache/maven/project/builder/impl/DefaultProjectBuilder.java	(working copy)
+@@ -46,11 +46,7 @@
+ import java.io.File;
+ import java.io.IOException;
+ import java.io.InputStream;
+-import java.util.ArrayList;
+-import java.util.Arrays;
+-import java.util.Collection;
+-import java.util.Collections;
+-import java.util.List;
++import java.util.*;
+
+ /**
+  * Default implementation of the project builder.
+@@ -72,6 +68,8 @@
+
+     private RepositoryHelper repositoryHelper;
+
++    private HashMap<String, PomClassicDomainModel> cache = new HashMap<String, PomClassicDomainModel>();
++
+     /**
+      * Default constructor
+      */
+@@ -139,6 +137,12 @@
+         }
+
+         PomClassicDomainModel domainModel = new PomClassicDomainModel( pom );
++        if(cache.containsKey(domainModel.getId()))
++        {
++           // System.out.println("CACHE: " + domainModel.getId());
++            return createMavenProject(cache.get(domainModel.getId()), projectBuilderConfiguration);
++        }
++
+         domainModel.setProjectDirectory( projectDirectory );
+
+         List<DomainModel> domainModels = new ArrayList<DomainModel>();
+@@ -181,12 +185,21 @@
+                                                                                                 transformer,
+                                                                                                 importModels,
+                                                                                                 properties ) );
++        transformedDomainModel.setParentFile(parentFile);
++        cache.put(domainModel.getId(), transformedDomainModel);
++        //System.out.println("CACHE SIZE = " + cache.size());
++        return createMavenProject(transformedDomainModel, projectBuilderConfiguration);
++    }
++
++
++    private MavenProject createMavenProject(PomClassicDomainModel domainModel, ProjectBuilderConfiguration config)
++            throws IOException
++    {
+         try
+         {
+-            MavenProject mavenProject = new MavenProject( transformedDomainModel.getModel(), artifactFactory,
+-                                                          mavenTools, null,
+-                                                          projectBuilderConfiguration );
+-            mavenProject.setParentFile( parentFile );
++            MavenProject mavenProject = new MavenProject( domainModel.getModel(), artifactFactory, mavenTools, null,
++                                                          config );
++            mavenProject.setParentFile( domainModel.getParentFile() );
+             return mavenProject;
+         }
+         catch ( InvalidRepositoryException e )
+@@ -240,7 +253,7 @@
+
+         Artifact artifactParent =
+             artifactFactory.createParentArtifact( parent.getGroupId(), parent.getArtifactId(), parent.getVersion() );
+-        artifactResolver.resolve( artifactParent );
++       // artifactParent = artifactResolver.resolve( artifactParent );
+
+         PomClassicDomainModel parentDomainModel = new PomClassicDomainModel( artifactParent.getFile() );
+         if ( !parentDomainModel.matchesParent( domainModel.getModel().getParent() ) )
+@@ -249,17 +262,12 @@
+                 ": Child ID = " + domainModel.getModel().getId() );
+             return domainModels;
+         }
+-        else
+-        {
+-            //  logger.info("Adding pom to hierarchy: Group Id = " + parent.getGroupId() + ", Artifact Id ="
+-            //      + parent.getArtifactId()  + ", Version = " + parent.getVersion() + ", File" + artifactParent.getFile());
+-        }
+-
++        cache.put(parentDomainModel.getId(), parentDomainModel);
+         domainModels.add( parentDomainModel );
+         domainModels.addAll( getDomainModelParentsFromRepository( parentDomainModel, artifactResolver ) );
+         return domainModels;
+     }
+-
++
+     /**
+      * Returns list of domain model parents of the specified domain model. The parent domain models are part
+      *
\ No newline at end of file

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java?rev=699873&r1=699872&r2=699873&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultRepositoryHelper.java Sun Sep 28 11:20:13 2008
@@ -50,12 +50,7 @@
 import java.io.IOException;
 import java.io.Reader;
 import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * This is a temporary class. These methods are originally from the DefaultMavenProjectHelper. This class will be
@@ -79,6 +74,8 @@
 
     private MavenXpp3Reader modelReader;
 
+    private static HashMap<String, Model> cache = new HashMap<String, Model>();
+
     private Logger getLogger()
     {
         return logger;
@@ -116,7 +113,15 @@
 
             File file = projectArtifact.getFile();
             artifact.setFile( file );
-            legacy_model = readModelLegacy( projectId, file, false );
+            if(cache.containsKey(projectId))
+            {
+                legacy_model = cache.get(projectId);
+            }
+            else
+            {
+                legacy_model = readModelLegacy( projectId, file, false );
+                cache.put(projectId, legacy_model);
+            }
 
             String downloadUrl = null;