Author: sisbell Date: Thu Apr 2 00:30:00 2009 New Revision: 761121 URL: http://svn.apache.org/viewvc?rev=761121&view=rev Log: Collapsed methods, moved logic for active profiles from ProjectBuilder to ProfileContext.
Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileContext.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileContext.java URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileContext.java?rev=761121&r1=761120&r2=761121&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileContext.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileContext.java Thu Apr 2 00:30:00 2009 @@ -28,9 +28,13 @@ import org.apache.maven.profiles.matchers.DefaultMatcher; import org.apache.maven.profiles.matchers.ProfileMatcher; import org.apache.maven.profiles.matchers.PropertyMatcher; +import org.apache.maven.project.ProjectBuilderConfiguration; +import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.shared.model.InterpolatorProperty; +import org.apache.maven.model.Model; import org.apache.maven.model.Profile; +import org.codehaus.plexus.PlexusContainer; public class ProfileContext { @@ -55,7 +59,26 @@ this.inactiveProfileIds = profileContextInfo.getInactiveProfileIds(); } - // public Collection<Profile> getActiveProfilesFrom(ProfileManager manaa) + + public static List<Profile> getActiveProfilesFrom(ProjectBuilderConfiguration config, Model model, PlexusContainer container) + throws ProfileActivationException + { + List<Profile> projectProfiles = new ArrayList<Profile>(); + ProfileManager externalProfileManager = config.getGlobalProfileManager(); + + ProfileActivationContext profileActivationContext = (externalProfileManager == null) ? new ProfileActivationContext( config.getExecutionProperties(), false ): + externalProfileManager.getProfileActivationContext(); + + if(externalProfileManager != null) + { + projectProfiles.addAll( externalProfileManager.getActiveProfiles() ); + } + + ProfileManager profileManager = new DefaultProfileManager( container, profileActivationContext ); + profileManager.addProfiles( model.getProfiles() ); + projectProfiles.addAll( profileManager.getActiveProfiles() ); + return projectProfiles; + } public Collection<Profile> getActiveProfiles() { 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=761121&r1=761120&r2=761121&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 Thu Apr 2 00:30:00 2009 @@ -306,34 +306,10 @@ String projectId = safeVersionlessKey( model.getGroupId(), model.getArtifactId() ); - List<Profile> projectProfiles = new ArrayList<Profile>(); - ProfileManager externalProfileManager = config.getGlobalProfileManager(); - - ProfileActivationContext profileActivationContext = (externalProfileManager == null) ? new ProfileActivationContext( config.getExecutionProperties(), false ): - externalProfileManager.getProfileActivationContext(); - - if(externalProfileManager != null) - { - //System.out.println("PROFILES = " + externalProfileManager.getProfilesById().toString()); - - try - { - projectProfiles.addAll( externalProfileManager.getActiveProfiles() ); - } - catch ( ProfileActivationException e ) - { - throw new ProjectBuildingException( projectId, "Failed to activate external profiles.", projectDescriptor, - e ); - } - } - - ProfileManager profileManager = new DefaultProfileManager( container, profileActivationContext ); - profileManager.addProfiles( model.getProfiles() ); - //System.out.println("PROFILE POM: COUNT = " + model.getProfiles().size()); + List<Profile> projectProfiles; try { - //System.out.println("PROFILE POM - ACTIVE: COUNT = " + profileManager.getActiveProfiles( model ).size() +"," + projectProfiles.size()); - projectProfiles.addAll( profileManager.getActiveProfiles() ); + projectProfiles = ProfileContext.getActiveProfilesFrom(config, model, container); } catch ( ProfileActivationException e ) { @@ -388,19 +364,85 @@ return project; } - private PomClassicDomainModel buildWithoutProfiles( String projectId, File pomFile, ProjectBuilderConfiguration projectBuilderConfiguration ) throws ProjectBuildingException, IOException - { - + { List<String> activeProfileIds = ( projectBuilderConfiguration != null && projectBuilderConfiguration.getGlobalProfileManager() != null && projectBuilderConfiguration.getGlobalProfileManager() .getProfileActivationContext() != null ) ? projectBuilderConfiguration.getGlobalProfileManager().getProfileActivationContext().getExplicitlyActiveProfileIds() : new ArrayList<String>(); List<String> inactiveProfileIds = ( projectBuilderConfiguration != null && projectBuilderConfiguration.getGlobalProfileManager() != null && projectBuilderConfiguration .getGlobalProfileManager().getProfileActivationContext() != null ) ? projectBuilderConfiguration.getGlobalProfileManager().getProfileActivationContext().getExplicitlyInactiveProfileIds() : new ArrayList<String>(); - - return buildModel( pomFile, new ProfileContextInfo(null, activeProfileIds, inactiveProfileIds), projectBuilderConfiguration ); + + ProfileContextInfo profileInfo = new ProfileContextInfo(null, activeProfileIds, inactiveProfileIds); + PomClassicDomainModel domainModel = new PomClassicDomainModel( pomFile ); + domainModel.setProjectDirectory( pomFile.getParentFile() ); + domainModel.setMostSpecialized( true ); + + List<DomainModel> domainModels = new ArrayList<DomainModel>(); + + domainModels.add( domainModel ); + ArtifactRepository localRepository = projectBuilderConfiguration.getLocalRepository(); + List<ArtifactRepository> remoteRepositories = projectBuilderConfiguration.getRemoteRepositories(); + + File parentFile = null; + int lineageCount = 0; + if ( domainModel.getParentId() != null ) + { + List<DomainModel> mavenParents; + if ( isParentLocal( domainModel.getRelativePathOfParent(), pomFile.getParentFile() ) ) + { + mavenParents = getDomainModelParentsFromLocalPath( domainModel, localRepository, remoteRepositories, pomFile.getParentFile() ); + } + else + { + mavenParents = getDomainModelParentsFromRepository( domainModel, localRepository, remoteRepositories ); + } + + if ( mavenParents.size() > 0 ) + { + PomClassicDomainModel dm = (PomClassicDomainModel) mavenParents.get( 0 ); + parentFile = dm.getFile(); + domainModel.setParentFile( parentFile ); + lineageCount = mavenParents.size(); + } + + domainModels.addAll( mavenParents ); + } + + domainModels.add( convertToDomainModel( getSuperModel(), false ) ); + List<DomainModel> profileModels = new ArrayList<DomainModel>(); + //Process Profiles + for(DomainModel domain : domainModels) + { + PomClassicDomainModel dm = (PomClassicDomainModel) domain; + + if(!dm.getModel().getProfiles().isEmpty()) + { + ProfileContext profileContext1 = new ProfileContext( dm.getModel().getProfiles(), profileInfo ); + Collection<Profile> profiles = profileContext1.getActiveProfiles(); + if(!profiles.isEmpty()) + { + profileModels.add(ProcessorContext.mergeProfilesIntoModel( profileContext1.getActiveProfiles(), dm )); + } + else + { + profileModels.add( dm ); + } + } + else + { + profileModels.add( dm ); + } + } + + PomClassicDomainModel transformedDomainModel = ProcessorContext.build( profileModels, null ); + + // Lineage count is inclusive to add the POM read in itself. + transformedDomainModel.setLineageCount( lineageCount + 1 ); + transformedDomainModel.setParentFile( parentFile ); + + return transformedDomainModel; } private void validateModel( Model model, File pomFile ) @@ -450,85 +492,7 @@ } } - private PomClassicDomainModel buildModel( File pom, ProfileContextInfo profileInfo, ProjectBuilderConfiguration config ) - throws IOException - { - if ( pom == null ) - { - throw new IllegalArgumentException( "pom: null" ); - } - - PomClassicDomainModel domainModel = new PomClassicDomainModel( pom ); - domainModel.setProjectDirectory( pom.getParentFile() ); - domainModel.setMostSpecialized( true ); - - List<DomainModel> domainModels = new ArrayList<DomainModel>(); - - domainModels.add( domainModel ); - ArtifactRepository localRepository = config.getLocalRepository(); - List<ArtifactRepository> remoteRepositories = config.getRemoteRepositories(); - - File parentFile = null; - int lineageCount = 0; - if ( domainModel.getParentId() != null ) - { - List<DomainModel> mavenParents; - if ( isParentLocal( domainModel.getRelativePathOfParent(), pom.getParentFile() ) ) - { - mavenParents = getDomainModelParentsFromLocalPath( domainModel, localRepository, remoteRepositories, pom.getParentFile() ); - } - else - { - mavenParents = getDomainModelParentsFromRepository( domainModel, localRepository, remoteRepositories ); - } - - if ( mavenParents.size() > 0 ) - { - PomClassicDomainModel dm = (PomClassicDomainModel) mavenParents.get( 0 ); - parentFile = dm.getFile(); - domainModel.setParentFile( parentFile ); - lineageCount = mavenParents.size(); - } - - domainModels.addAll( mavenParents ); - } - - domainModels.add( convertToDomainModel( getSuperModel(), false ) ); - List<DomainModel> profileModels = new ArrayList<DomainModel>(); - //Process Profiles - for(DomainModel domain : domainModels) - { - PomClassicDomainModel dm = (PomClassicDomainModel) domain; - - if(!dm.getModel().getProfiles().isEmpty()) - { - ProfileContext profileContext1 = new ProfileContext( dm.getModel().getProfiles(), profileInfo ); - Collection<Profile> profiles = profileContext1.getActiveProfiles(); - if(!profiles.isEmpty()) - { - profileModels.add(ProcessorContext.mergeProfilesIntoModel( profileContext1.getActiveProfiles(), dm )); - } - else - { - profileModels.add( dm ); - } - } - else - { - profileModels.add( dm ); - } - } - - PomClassicDomainModel transformedDomainModel = ProcessorContext.build( profileModels, null ); - - // Lineage count is inclusive to add the POM read in itself. - transformedDomainModel.setLineageCount( lineageCount + 1 ); - transformedDomainModel.setParentFile( parentFile ); - - return transformedDomainModel; - } - - private PomClassicDomainModel convertToDomainModel( Model model, boolean isMostSpecialized ) + private static PomClassicDomainModel convertToDomainModel( Model model, boolean isMostSpecialized ) throws IOException { if ( model == null ) @@ -562,7 +526,7 @@ * @return true if the relative path of the specified parent references a pom, otherwise returns * fals */ - private boolean isParentLocal( String relativePath, File projectDirectory ) + private static boolean isParentLocal( String relativePath, File projectDirectory ) { try {