Author: sisbell
Date: Sat Sep 27 21:52:53 2008
New Revision: 699773

URL: http://svn.apache.org/viewvc?rev=699773&view=rev
Log:
Removed use of workspace from project builder. In the build of trunk, there 
were about 50K of calls from MavenMetadataSource to the project builder. I put 
a simple hashmap cache in the metadata source to reduce calls to dozens.

Modified:
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
    
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=699773&r1=699772&r2=699773&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
 Sat Sep 27 21:52:53 2008
@@ -132,11 +132,7 @@
     public MavenProject build( File projectDescriptor, 
ProjectBuilderConfiguration config )
         throws ProjectBuildingException
     {
-        MavenProject project = projectWorkspace.getProject( projectDescriptor 
);
-
-        if ( project == null )
-        {
-            project = readModelFromLocalPath( "unknown", projectDescriptor, 
new PomArtifactResolver(
+            MavenProject project = readModelFromLocalPath( "unknown", 
projectDescriptor, new PomArtifactResolver(
                 config.getLocalRepository(), 
repositoryHelper.buildArtifactRepositories(
                 getSuperProject( config, projectDescriptor, true ).getModel() 
), artifactResolver ), config );
 
@@ -152,8 +148,6 @@
             project.setFile( projectDescriptor );
 
             setBuildOutputDirectoryOnParent( project );
-
-        }
         return project;
     }
 
@@ -170,21 +164,11 @@
         return buildFromRepository( artifact, remoteArtifactRepositories, 
localRepository );
     }
 
-
     public MavenProject buildFromRepository( Artifact artifact, List 
remoteArtifactRepositories,
                                              ArtifactRepository 
localRepository )
         throws ProjectBuildingException
     {
-        MavenProject project = null;
-        if ( !Artifact.LATEST_VERSION.equals( artifact.getVersion() ) &&
-            !Artifact.RELEASE_VERSION.equals( artifact.getVersion() ) )
-        {
-            project =
-                projectWorkspace.getProject( artifact.getGroupId(), 
artifact.getArtifactId(), artifact.getVersion() );
-        }
         File f = artifact.getFile();
-        if ( project == null )
-        {
             repositoryHelper.findModelFromRepository( artifact, 
remoteArtifactRepositories, localRepository );
 
             ProjectBuilderConfiguration config =
@@ -195,10 +179,9 @@
             artifactRepositories.addAll( 
repositoryHelper.buildArtifactRepositories(
                 getSuperProject( config, artifact.getFile(), false 
).getModel() ) );
 
-            project = readModelFromLocalPath( "unknown", artifact.getFile(), 
new PomArtifactResolver(
+            MavenProject project = readModelFromLocalPath( "unknown", 
artifact.getFile(), new PomArtifactResolver(
                 config.getLocalRepository(), artifactRepositories, 
artifactResolver ), config );
             project = buildInternal( project.getModel(), config, 
artifact.getFile(), project.getParentFile(), false );
-        }
 
         artifact.setFile( f );
         project.setVersion( artifact.getVersion() );
@@ -440,9 +423,6 @@
                                                                                
externalProfileManager ) );
         project.setActiveProfiles( projectProfiles );
 
-        projectWorkspace.storeProjectByCoordinate( project );
-        projectWorkspace.storeProjectByFile( project );
-
         return project;
     }
 

Modified: 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
URL: 
http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=699773&r1=699772&r2=699773&view=diff
==============================================================================
--- 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 (original)
+++ 
maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java
 Sat Sep 27 21:52:53 2008
@@ -56,12 +56,7 @@
 import org.codehaus.plexus.util.StringUtils;
 
 import java.io.File;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
+import java.util.*;
 
 /**
  * @author Jason van Zyl
@@ -149,6 +144,8 @@
         return artifact.getGroupId() + ":" + artifact.getArtifactId() + ":" + 
artifact.getVersion();
     }
 
+    private HashMap<String, MavenProject> hm = new HashMap<String, 
MavenProject>();
+    
     private ProjectRelocation retrieveRelocatedProject( Artifact artifact, 
ArtifactRepository localRepository,
                                                         
List<ArtifactRepository> remoteRepositories )
         throws ArtifactMetadataRetrievalException
@@ -184,44 +181,55 @@
             }
             else
             {
-                try
+
+                if(hm.containsKey(pomArtifact.getId()))
                 {
-                    project =
-                        mavenProjectBuilder.buildFromRepository( pomArtifact, 
remoteRepositories, localRepository );
+                    project = hm.get(pomArtifact.getId());
                 }
-                catch ( InvalidProjectModelException e )
+                else
                 {
-                    handleInvalidOrMissingMavenPOM( artifact, e );
-
-                    if ( getLogger().isDebugEnabled() )
+                    try
                     {
-                        getLogger().debug( "Reason: " + e.getMessage() );
+                        project =
+                            mavenProjectBuilder.buildFromRepository( 
pomArtifact, remoteRepositories, localRepository );
+                        hm.put(pomArtifact.getId(), project);
 
-                        ModelValidationResult validationResult = 
e.getValidationResult();
+                    }
+                    catch ( InvalidProjectModelException e )
+                    {
+                        handleInvalidOrMissingMavenPOM( artifact, e );
 
-                        if ( validationResult != null )
+                        if ( getLogger().isDebugEnabled() )
                         {
-                            getLogger().debug( "\nValidation Errors:" );
-                            for ( Iterator i = 
validationResult.getMessages().iterator(); i.hasNext(); )
+                            getLogger().debug( "Reason: " + e.getMessage() );
+
+                            ModelValidationResult validationResult = 
e.getValidationResult();
+
+                            if ( validationResult != null )
                             {
-                                getLogger().debug( i.next().toString() );
+                                getLogger().debug( "\nValidation Errors:" );
+                                for ( Iterator i = 
validationResult.getMessages().iterator(); i.hasNext(); )
+                                {
+                                    getLogger().debug( i.next().toString() );
+                                }
+                                getLogger().debug( "\n" );
+                            }
+                            else
+                            {
+                                getLogger().debug( "", e );
                             }
-                            getLogger().debug( "\n" );
-                        }
-                        else
-                        {
-                            getLogger().debug( "", e );
                         }
+
+                        project = null;
                     }
+                    catch ( ProjectBuildingException e )
+                    {
+                        handleInvalidOrMissingMavenPOM( artifact, e );
 
-                    project = null;
+                        project = null;
+                    }
                 }
-                catch ( ProjectBuildingException e )
-                {
-                    handleInvalidOrMissingMavenPOM( artifact, e );
 
-                    project = null;
-                }
 
                 if ( project != null )
                 {


Reply via email to