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 ) {