Author: brett Date: Tue Jan 10 14:15:46 2006 New Revision: 367812 URL: http://svn.apache.org/viewcvs?rev=367812&view=rev Log: reduce some confusion - cache CachedModel associations instead of MavenProject instances
Modified: maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Modified: maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java URL: http://svn.apache.org/viewcvs/maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=367812&r1=367811&r2=367812&view=diff ============================================================================== --- maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original) +++ maven/components/branches/maven-2.0.x/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Tue Jan 10 14:15:46 2006 @@ -289,8 +289,7 @@ Model model = readModel( "unknown", projectDescriptor, true ); // Always cache files in the source tree over those in the repository - MavenProject p = new MavenProject( model ); - p.setFile( projectDescriptor ); + CachedModel cachedModel = new CachedModel( projectDescriptor, model ); String modelKey = createCacheKey( model.getGroupId(), model.getArtifactId(), model.getVersion() ); if ( modelCache.containsKey( modelKey ) ) @@ -299,7 +298,7 @@ "Duplicate project ID found in " + projectDescriptor.getAbsolutePath() ); } - modelCache.put( modelKey, p ); + modelCache.put( modelKey, cachedModel ); MavenProject project = build( projectDescriptor.getAbsolutePath(), model, localRepository, buildArtifactRepositories( getSuperModel() ), @@ -375,10 +374,10 @@ artifact.getVersion(), artifact.getScope() ); } - MavenProject project = getCachedProject( projectArtifact.getGroupId(), projectArtifact.getArtifactId(), - projectArtifact.getVersion() ); + CachedModel cachedModel = getCachedProject( projectArtifact.getGroupId(), projectArtifact.getArtifactId(), + projectArtifact.getVersion() ); Model model; - if ( project == null ) + if ( cachedModel == null ) { String projectId = ArtifactUtils.versionlessKey( projectArtifact ); @@ -434,7 +433,7 @@ } else { - model = project.getModel(); + model = cachedModel.getModel(); } return model; @@ -696,9 +695,8 @@ if ( !modelCache.containsKey( key ) ) { // clone the model because the profile injection below will modify this instance - MavenProject p = new MavenProject( ModelUtils.cloneModel( model ) ); - p.setFile( project.getFile() ); - modelCache.put( key, p ); + CachedModel cachedModel = new CachedModel( project.getFile(), ModelUtils.cloneModel( model ) ); + modelCache.put( key, cachedModel ); } List activeProfiles = project.getActiveProfiles(); @@ -879,12 +877,12 @@ // the only way this will have a value is if we find the parent on disk... File parentDescriptor = null; - MavenProject p = + CachedModel cachedModel = getCachedProject( parentModel.getGroupId(), parentModel.getArtifactId(), parentModel.getVersion() ); - if ( p != null ) + if ( cachedModel != null ) { - model = p.getModel(); - parentDescriptor = p.getFile(); + model = cachedModel.getModel(); + parentDescriptor = cachedModel.getDescriptor(); } else { @@ -1158,9 +1156,9 @@ } } - private MavenProject getCachedProject( String groupId, String artifactId, String version ) + private CachedModel getCachedProject( String groupId, String artifactId, String version ) { - return (MavenProject) modelCache.get( createCacheKey( groupId, artifactId, version ) ); + return (CachedModel) modelCache.get( createCacheKey( groupId, artifactId, version ) ); } private static String createCacheKey( String groupId, String artifactId, String version ) @@ -1365,5 +1363,28 @@ throws ContextException { this.container = (PlexusContainer) context.get( PlexusConstants.PLEXUS_KEY ); + } + + private static class CachedModel + { + private File descriptor; + + private Model model; + + public CachedModel( File descriptor, Model model ) + { + this.descriptor = descriptor; + this.model = model; + } + + public File getDescriptor() + { + return descriptor; + } + + public Model getModel() + { + return model; + } } }