You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jd...@apache.org on 2008/01/16 03:20:12 UTC

svn commit: r612333 - in /maven/components/trunk: maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/ maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/ maven-embedder/src/test/erro...

Author: jdcasey
Date: Tue Jan 15 18:20:08 2008
New Revision: 612333

URL: http://svn.apache.org/viewvc?rev=612333&view=rev
Log:
Adding more unit tests for error reporting. Almost done with project-based errors now.

Added:
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/pom.xml   (with props)
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/ext/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/ext/App.java   (with props)
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/plexus/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/plexus/components.xml   (with props)
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/project/
    maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/project/pom.xml   (with props)
Modified:
    maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java
    maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java
    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/ModelUtils.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
    maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java

Added: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/pom.xml?rev=612333&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/pom.xml (added)
+++ maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/pom.xml Tue Jan 15 18:20:08 2008
@@ -0,0 +1,38 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.errortest</groupId>
+  <artifactId>testReportActivatorLookupError-ext</artifactId>
+  <version>1</version>
+  
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.3.1</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <version>2.3</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-install-plugin</artifactId>
+          <version>2.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>2.2</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>2.1</version>
+        </plugin>
+        <plugin>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>2.0.2</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+</project>

Propchange: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/ext/App.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/ext/App.java?rev=612333&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/ext/App.java (added)
+++ maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/ext/App.java Tue Jan 15 18:20:08 2008
@@ -0,0 +1,13 @@
+package org.ext;
+
+/**
+ * Hello world!
+ *
+ */
+public class App 
+{
+    public static void main( String[] args )
+    {
+        System.out.println( "Hello World!" );
+    }
+}

Propchange: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/ext/App.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/java/org/ext/App.java
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/plexus/components.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/plexus/components.xml?rev=612333&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/plexus/components.xml (added)
+++ maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/plexus/components.xml Tue Jan 15 18:20:08 2008
@@ -0,0 +1,16 @@
+<?xml version="1.0"?>
+<component-set>
+  <components>
+    <component>
+      <role>org.apache.maven.profiles.activation.ProfileActivator</role>
+      <role-hint>faulty</role-hint>
+      <implementation>org.ext.App</implementation>
+      <requirements>
+        <requirement>
+          <role>org.apache.maven.artifact.ArtifactResolver</role>
+          <field-name>artifactResolver</field-name>
+        </requirement>
+      </requirements>
+    </component>
+  </components>
+</component-set>
\ No newline at end of file

Propchange: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/ext/src/main/resources/META-INF/plexus/components.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Added: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/project/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/project/pom.xml?rev=612333&view=auto
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/project/pom.xml (added)
+++ maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/project/pom.xml Tue Jan 15 18:20:08 2008
@@ -0,0 +1,46 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.errortest</groupId>
+  <artifactId>testReportActivatorLookupError</artifactId>
+  <version>1</version>
+  
+  <profiles>
+    <profile>
+      <id>test-profile</id>
+      <activation>
+        <property>
+          <name>java.version</name>
+        </property>
+      </activation>
+    </profile>
+  </profiles>
+  
+  <build>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.errortest</groupId>
+        <artifactId>testReportActivatorLookupError-ext</artifactId>
+        <version>1</version>
+      </extension>
+    </extensions>
+  </build>
+</project>

Propchange: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/project/pom.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: maven/components/trunk/maven-embedder/src/test/error-reporting-projects/testReportActivatorLookupError/project/pom.xml
------------------------------------------------------------------------------
    svn:keywords = "Author Date Id Revision"

Modified: maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java (original)
+++ maven/components/trunk/maven-embedder/src/test/java/org/apache/maven/error/ErrorReporterPointcutTest.java Tue Jan 15 18:20:08 2008
@@ -754,11 +754,17 @@
         MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( projectDir )
                                                                           .setShowErrors( true )
                                                                           .setErrorReporter( reporter )
+//                                                                          .setErrorReporter( new DummyCoreErrorReporter() )
                                                                           .setGoals( Arrays.asList( new String[] {
                                                                               "initialize"
                                                                           } ) );
 
-        maven.execute( request );
+        MavenExecutionResult result = maven.execute( request );
+
+//        if ( result.hasExceptions() )
+//        {
+//            reportExceptions( result, projectDir );
+//        }
 
         reporterCtl.verify();
     }
@@ -766,33 +772,39 @@
     public void testReportActivatorLookupError()
         throws IOException
     {
-//        if ( !checkOnline() )
+        if ( !checkOnline() )
+        {
+            return;
+        }
+
+        File projectDir = prepareProjectDir();
+
+        buildTestAccessory( new File( projectDir, "ext" ) );
+
+        File project = new File( projectDir, "project" );
+
+        reporter.reportActivatorLookupError( null, null, null, null, null );
+        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
+        reporterCtl.setVoidCallable();
+
+        reporterCtl.replay();
+
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( project )
+                                                                          .setShowErrors( true )
+                                                                          .setErrorReporter( reporter )
+//                                                                          .setErrorReporter( new DummyCoreErrorReporter() )
+                                                                          .setGoals( Arrays.asList( new String[] {
+                                                                              "initialize"
+                                                                          } ) );
+
+        MavenExecutionResult result = maven.execute( request );
+
+//        if ( result.hasExceptions() )
 //        {
-//            return;
+//            reportExceptions( result, project );
 //        }
-//
-//        File projectDir = prepareProjectDir();
-//
-//        buildTestAccessory( new File( projectDir, "ext" ) );
-//
-//        File project = new File( projectDir, "project" );
-//
-//        reporter.reportActivatorLookupError( null, null, null, null );
-//        reporterCtl.setMatcher( MockControl.ALWAYS_MATCHER );
-//        reporterCtl.setVoidCallable();
-//
-//        reporterCtl.replay();
-//
-//        MavenExecutionRequest request = new DefaultMavenExecutionRequest().setBaseDirectory( project )
-//                                                                          .setShowErrors( true )
-//                                                                          .setErrorReporter( reporter )
-//                                                                          .setGoals( Arrays.asList( new String[] {
-//                                                                              "initialize"
-//                                                                          } ) );
-//
-//        maven.execute( request );
-//
-//        reporterCtl.verify();
+
+        reporterCtl.verify();
     }
 
     public void testReportBadDependencyVersion()

Modified: maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj (original)
+++ maven/components/trunk/maven-project/src/main/aspect/org/apache/maven/project/aspect/ProfileErrorReporterAspect.aj Tue Jan 15 18:20:08 2008
@@ -8,8 +8,10 @@
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.profiles.build.DefaultProfileAdvisor;
+import org.apache.maven.profiles.build.ProfileAdvisor;
 import org.apache.maven.model.Profile;
 import org.apache.maven.profiles.DefaultProfileManager;
+import org.apache.maven.profiles.ProfileManager;
 import org.apache.maven.profiles.MavenProfilesBuilder;
 import org.apache.maven.profiles.ProfilesRoot;
 import org.apache.maven.artifact.repository.ArtifactRepository;
@@ -32,29 +34,19 @@
     extends AbstractProjectErrorReporterAspect
 {
 
-    protected pointcut componentLookupException( ComponentLookupException cause ):
-        handler( ComponentLookupException )
-        && args( cause )
-        && notWithinAspect();
+    private pointcut within_pMgr_isActiveExec( Profile profile, ProfileActivationContext context ):
+        withincode( boolean DefaultProfileManager.isActive( Profile, ProfileActivationContext ) )
+        && args( profile, context );
 
     private pointcut pMgr_isActiveExec( Profile profile, ProfileActivationContext context ):
         execution( boolean DefaultProfileManager.isActive( Profile, ProfileActivationContext ) )
-        && args( profile, context )
-        && notWithinAspect();
+        && args( profile, context );
 
     private pointcut pAdv_applyActivatedProfiles( Model model, File pomFile ):
         execution( private List DefaultProfileAdvisor.applyActivatedProfiles( Model, File, .. ) )
         && args( model, pomFile, .. )
         && notWithinAspect();
 
-    private pointcut applyActivatedProfiles_ComponentLookupException( Model model,
-                                                                      File pomFile,
-                                                                      Profile profile ):
-        call( List PlexusContainer+.lookupList( .. ) )
-        && cflow( pAdv_applyActivatedProfiles( model, pomFile ) )
-        && cflow( pMgr_isActiveExec( profile, ProfileActivationContext ) )
-        && notWithinAspect();
-
     // =========================================================================
     // Call Stack:
     // =========================================================================
@@ -68,27 +60,48 @@
     //         <-- ProfileActivationException
     // <------ ProjectBuildingException
     // =========================================================================
-    after( Model model, File pomFile, Profile profile )
+    after( Model model, File pomFile, Profile profile, ProfileActivationContext context )
         throwing( ComponentLookupException cause ):
-            applyActivatedProfiles_ComponentLookupException( model, pomFile, profile )
+            call( List PlexusContainer+.lookupList( .. ) )
+            && cflow( pAdv_applyActivatedProfiles( model, pomFile ) )
+            && cflow( pMgr_isActiveExec( profile, context ) )
     {
-        getReporter().reportActivatorLookupError( model.getId(), pomFile, profile, cause );
+        getReporter().reportActivatorLookupError( model, pomFile, profile, context, cause );
     }
 
-    protected pointcut profileActivatorCall( ProfileActivator activator ):
-        call( * ProfileActivator+.*( .. ) )
-        && target( activator )
-        && notWithinAspect();
+    private pointcut pAdv_getArtifactRepositoriesFromActiveProfiles_1( Model model, File pomFile ):
+        execution( LinkedHashSet ProfileAdvisor+.getArtifactRepositoriesFromActiveProfiles( Model, File, ProfileManager ) )
+        && args( model, pomFile, * );
 
-    private pointcut applyActivatedProfiles_ActivatorThrown( ProfileActivator activator,
-                                                                      Model model,
-                                                                      File pomFile,
-                                                                      Profile profile,
-                                                                      ProfileActivationContext context ):
-        profileActivatorCall( activator )
-        && cflow( pAdv_applyActivatedProfiles( model, pomFile ) )
-        && cflow( pMgr_isActiveExec( profile, context ) )
-        && notWithinAspect();
+    private pointcut pAdv_getArtifactRepositoriesFromActiveProfiles_2( Model model, File pomFile ):
+        execution( LinkedHashSet ProfileAdvisor+.getArtifactRepositoriesFromActiveProfiles( Model, File, boolean, ProfileActivationContext ) )
+        && args( model, pomFile, *, * );
+
+    private pointcut pAdv_getArtifactRepos( Model model, File pomFile ):
+        pAdv_getArtifactRepositoriesFromActiveProfiles_1( model, pomFile )
+        || pAdv_getArtifactRepositoriesFromActiveProfiles_2( model, pomFile );
+
+    // =========================================================================
+    // Call Stack:
+    // =========================================================================
+    // DefaultProfileAdvisor.applyActivatedProfiles(..)
+    // DefaultProfileAdvisor.applyActivatedExternalProfiles(..)
+    // --> DefaultProfileAdvisor.getArtifactRepositoriesFromActiveProfiles(..)
+    //     --> DefaultProfileManager.getActiveProfiles(..)
+    //         --> DefaultProfileManager.isActive(..) (private)
+    //             --> PlexusContainer.lookupList(..)
+    //             <-- ComponentLookupException
+    //         <-- ProfileActivationException
+    // <------ ProjectBuildingException
+    // =========================================================================
+    after( Model model, File pomFile, Profile profile, ProfileActivationContext context )
+        throwing( ComponentLookupException cause ):
+            call( List PlexusContainer+.lookupList( .. ) )
+            && cflow( pAdv_getArtifactRepos( model, pomFile ) )
+            && cflow( pMgr_isActiveExec( profile, context ) )
+    {
+        getReporter().reportActivatorLookupError( model, pomFile, profile, context, cause );
+    }
 
     // =========================================================================
     // Call Stack:
@@ -105,9 +118,12 @@
     // =========================================================================
     after( ProfileActivator activator, Model model, File pomFile, Profile profile, ProfileActivationContext context )
         throwing( ProfileActivationException cause ):
-            applyActivatedProfiles_ActivatorThrown( activator, model, pomFile, profile, context )
+            call( * ProfileActivator+.*( .. ) )
+            && target( activator )
+            && cflow( pAdv_applyActivatedProfiles( model, pomFile ) )
+            && cflow( pMgr_isActiveExec( profile, context ) )
     {
-        getReporter().reportActivatorError( activator, model.getId(), pomFile, profile, context, cause );
+        getReporter().reportActivatorError( activator, model, pomFile, profile, context, cause );
     }
 
     private pointcut pAdv_loadExternalProjectProfiles( Model model, File pomFile ):
@@ -115,14 +131,6 @@
         && args( *, model, pomFile )
         && notWithinAspect();
 
-    private pointcut loadExternalProfiles_profileBuilding( Model model,
-                                                       File pomFile,
-                                                       File projectDir ):
-        call( ProfilesRoot MavenProfilesBuilder+.buildProfiles( File ) )
-        && cflow( pAdv_loadExternalProjectProfiles( model, pomFile ) )
-        && args( projectDir )
-        && notWithinAspect();
-
     // =========================================================================
     // Call Stack:
     // =========================================================================
@@ -136,7 +144,9 @@
     // =========================================================================
     after( Model model, File pomFile, File projectDir )
         throwing( IOException cause ):
-           loadExternalProfiles_profileBuilding( model, pomFile, projectDir )
+            call( ProfilesRoot MavenProfilesBuilder+.buildProfiles( File ) )
+            && cflow( pAdv_loadExternalProjectProfiles( model, pomFile ) )
+            && args( projectDir )
     {
         getReporter().reportErrorLoadingExternalProfilesFromFile( model, pomFile, projectDir, cause );
     }
@@ -154,7 +164,9 @@
     // =========================================================================
     after( Model model, File pomFile, File projectDir )
         throwing( XmlPullParserException cause ):
-           loadExternalProfiles_profileBuilding( model, pomFile, projectDir )
+            call( ProfilesRoot MavenProfilesBuilder+.buildProfiles( File ) )
+            && cflow( pAdv_loadExternalProjectProfiles( model, pomFile ) )
+            && args( projectDir )
     {
         getReporter().reportErrorLoadingExternalProfilesFromFile( model, pomFile, projectDir, cause );
     }
@@ -164,45 +176,6 @@
         && args( *, pomFile, projectId )
         && notWithinAspect();
 
-    private pointcut getArtifactRepositoriesFromActiveProfiles_ComponentLookupException( String projectId,
-                                                                                          File pomFile,
-                                                                                          Profile profile ):
-        call( List PlexusContainer+.lookupList( .. ) )
-        && cflow( pAdv_getArtifactRepositoriesFromActiveProfiles( projectId, pomFile ) )
-        && cflow( pMgr_isActiveExec( profile, ProfileActivationContext ) )
-        && notWithinAspect();
-
-    // =========================================================================
-    // Call Stack:
-    // =========================================================================
-    // DefaultProfileAdvisor.applyActivatedProfiles(..)
-    // DefaultProfileAdvisor.applyActivatedExternalProfiles(..)
-    // --> DefaultProfileAdvisor.getArtifactRepositoriesFromActiveProfiles(..)
-    //     --> DefaultProfileManager.getActiveProfiles(..)
-    //         --> DefaultProfileManager.isActive(..) (private)
-    //             --> PlexusContainer.lookupList(..)
-    //             <-- ComponentLookupException
-    //         <-- ProfileActivationException
-    // <------ ProjectBuildingException
-    // =========================================================================
-    after( String projectId, File pomFile, Profile profile )
-        throwing( ComponentLookupException cause ):
-            getArtifactRepositoriesFromActiveProfiles_ComponentLookupException( projectId, pomFile, profile )
-    {
-        getReporter().reportActivatorLookupError( projectId, pomFile, profile, cause );
-    }
-
-    private pointcut getArtifactRepositoriesFromActiveProfiles_ActivatorThrown( ProfileActivator activator,
-                                                                      String projectId,
-                                                                      File pomFile,
-                                                                      Profile profile,
-                                                                      ProfileActivationContext context ):
-        profileActivatorCall( activator )
-        && cflow( pAdv_getArtifactRepositoriesFromActiveProfiles( projectId, pomFile ) )
-        && cflow( pMgr_isActiveExec( profile, context ) )
-        && within( DefaultProfileManager )
-        && notWithinAspect();
-
     // =========================================================================
     // Call Stack:
     // =========================================================================
@@ -216,22 +189,17 @@
     //         <------ ProfileActivationException
     // <------ ProjectBuildingException
     // =========================================================================
-    after( ProfileActivator activator, String projectId, File pomFile, Profile profile, ProfileActivationContext context )
+    after( ProfileActivator activator, Model model, File pomFile, Profile profile, ProfileActivationContext context )
         throwing( ProfileActivationException cause ):
-            getArtifactRepositoriesFromActiveProfiles_ActivatorThrown( activator, projectId, pomFile, profile, context )
+            call( * ProfileActivator+.*( .. ) )
+            && target( activator )
+            && cflow( pAdv_getArtifactRepos( model, pomFile ) )
+            && cflow( pMgr_isActiveExec( profile, context ) )
+            && within( DefaultProfileManager )
     {
-        getReporter().reportActivatorError( activator, projectId, pomFile, profile, context, cause );
+        getReporter().reportActivatorError( activator, model, pomFile, profile, context, cause );
     }
 
-    private pointcut getArtifactRepositoriesFromActiveProfiles_InvalidRepository( Repository repo,
-                                                                                String projectId,
-                                                                                File pomFile ):
-        call( ArtifactRepository MavenTools+.buildArtifactRepository( Repository ) )
-        && args( repo )
-        && cflow( pAdv_getArtifactRepositoriesFromActiveProfiles( projectId, pomFile ) )
-        && within( DefaultProfileAdvisor )
-        && notWithinAspect();
-
     // =========================================================================
     // Call Stack:
     // =========================================================================
@@ -242,11 +210,14 @@
     //     <-- InvalidRepositoryException
     // <-- ProjectBuildingException
     // =========================================================================
-    after( Repository repo, String projectId, File pomFile )
+    after( Repository repo, Model model, File pomFile )
         throwing( InvalidRepositoryException cause ):
-            getArtifactRepositoriesFromActiveProfiles_InvalidRepository( repo, projectId, pomFile )
+            call( ArtifactRepository MavenTools+.buildArtifactRepository( Repository ) )
+            && args( repo )
+            && cflow( pAdv_getArtifactRepos( model, pomFile ) )
+            && within( DefaultProfileAdvisor )
     {
-        getReporter().reportInvalidRepositoryWhileGettingRepositoriesFromProfiles( repo, projectId, pomFile, cause );
+        getReporter().reportInvalidRepositoryWhileGettingRepositoriesFromProfiles( repo, model, pomFile, cause );
     }
 
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/DefaultProfileManager.java Tue Jan 15 18:20:08 2008
@@ -20,14 +20,17 @@
  */
 
 import org.apache.maven.model.Activation;
+import org.apache.maven.model.Model;
 import org.apache.maven.model.Profile;
 import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.profiles.activation.ProfileActivator;
+import org.apache.maven.project.ModelUtils;
 import org.apache.maven.realm.DefaultMavenRealmManager;
 import org.apache.maven.realm.MavenRealmManager;
 import org.codehaus.plexus.PlexusContainer;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
 import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
 import org.codehaus.plexus.logging.Logger;
@@ -167,68 +170,92 @@
         }
     }
 
-    /* (non-Javadoc)
-    * @see org.apache.maven.profiles.ProfileManager#getActiveProfiles()
-    */
     public List getActiveProfiles()
         throws ProfileActivationException
     {
-        List activeFromPom = new ArrayList();
-        List activeExternal = new ArrayList();
+         return getActiveProfiles( null );
+    }
+
+    public List getActiveProfiles( Model model )
+        throws ProfileActivationException
+    {
+        MavenRealmManager realmManager = profileActivationContext.getRealmManager();
 
-        for ( Iterator it = profilesById.entrySet().iterator(); it.hasNext(); )
+        ClassRealm projectRealm = null;
+        ClassRealm oldLookupRealm = null;
+
+        if ( ( model != null ) && ( realmManager != null ) )
         {
-            Map.Entry entry = (Entry) it.next();
+            projectRealm = realmManager.getProjectRealm( ModelUtils.getGroupId( model ), model.getArtifactId(), ModelUtils.getVersion( model ) );
+            oldLookupRealm = container.setLookupRealm( projectRealm );
+        }
 
-            String profileId = (String) entry.getKey();
-            Profile profile = (Profile) entry.getValue();
+        try
+        {
+            List activeFromPom = new ArrayList();
+            List activeExternal = new ArrayList();
 
-            boolean shouldAdd = false;
-            if ( profileActivationContext.isExplicitlyActive( profileId ) )
-            {
-                shouldAdd = true;
-            }
-            else if ( !profileActivationContext.isExplicitlyInactive( profileId ) && isActive( profile, profileActivationContext ) )
+            for ( Iterator it = profilesById.entrySet().iterator(); it.hasNext(); )
             {
-                shouldAdd = true;
-            }
+                Map.Entry entry = (Entry) it.next();
 
-            if ( shouldAdd )
-            {
-                if ( "pom".equals( profile.getSource() ) )
+                String profileId = (String) entry.getKey();
+                Profile profile = (Profile) entry.getValue();
+
+                boolean shouldAdd = false;
+                if ( profileActivationContext.isExplicitlyActive( profileId ) )
                 {
-                    activeFromPom.add( profile );
+                    shouldAdd = true;
                 }
-                else
+                else if ( !profileActivationContext.isExplicitlyInactive( profileId ) && isActive( profile, profileActivationContext ) )
                 {
-                    activeExternal.add( profile );
+                    shouldAdd = true;
                 }
-            }
-        }
 
-        if ( activeFromPom.isEmpty() )
-        {
-            List defaultIds = profileActivationContext.getActiveByDefaultProfileIds();
+                if ( shouldAdd )
+                {
+                    if ( "pom".equals( profile.getSource() ) )
+                    {
+                        activeFromPom.add( profile );
+                    }
+                    else
+                    {
+                        activeExternal.add( profile );
+                    }
+                }
+            }
 
-            for ( Iterator it = defaultIds.iterator(); it.hasNext(); )
+            if ( activeFromPom.isEmpty() )
             {
-                String profileId = (String) it.next();
-
-                Profile profile = (Profile) profilesById.get( profileId );
+                List defaultIds = profileActivationContext.getActiveByDefaultProfileIds();
 
-                if ( profile != null )
+                for ( Iterator it = defaultIds.iterator(); it.hasNext(); )
                 {
-                    activeFromPom.add( profile );
+                    String profileId = (String) it.next();
+
+                    Profile profile = (Profile) profilesById.get( profileId );
+
+                    if ( profile != null )
+                    {
+                        activeFromPom.add( profile );
+                    }
                 }
             }
-        }
 
-        List allActive = new ArrayList( activeFromPom.size() + activeExternal.size() );
+            List allActive = new ArrayList( activeFromPom.size() + activeExternal.size() );
 
-        allActive.addAll( activeExternal );
-        allActive.addAll( activeFromPom );
+            allActive.addAll( activeExternal );
+            allActive.addAll( activeFromPom );
 
-        return allActive;
+            return allActive;
+        }
+        finally
+        {
+            if ( projectRealm != null )
+            {
+                container.setLookupRealm( oldLookupRealm );
+            }
+        }
     }
 
     private boolean isActive( Profile profile, ProfileActivationContext context )

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/ProfileManager.java Tue Jan 15 18:20:08 2008
@@ -19,6 +19,7 @@
  * under the License.
  */
 
+import org.apache.maven.model.Model;
 import org.apache.maven.model.Profile;
 import org.apache.maven.profiles.activation.ProfileActivationContext;
 import org.apache.maven.profiles.activation.ProfileActivationException;
@@ -59,6 +60,9 @@
 
     void setProfileActivationContext( ProfileActivationContext profileActivationContext );
 
+    /**
+     * @deprecated Use {@link ProfileManager#getActiveProfiles(Model)} instead.
+     */
     List getActiveProfiles()
         throws ProfileActivationException;
 
@@ -80,4 +84,7 @@
      * @deprecated Use {@link ProfileActivationContext} methods instead.
      */
     List getIdsActivatedByDefault();
+
+    List getActiveProfiles( Model model )
+        throws ProfileActivationException;
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/DefaultProfileAdvisor.java Tue Jan 15 18:20:08 2008
@@ -110,7 +110,7 @@
         {
             try
             {
-                activeProfiles = profileManager.getActiveProfiles();
+                activeProfiles = profileManager.getActiveProfiles( model );
             }
             catch ( ProfileActivationException e )
             {
@@ -164,9 +164,9 @@
         return profileManager;
     }
 
-    public LinkedHashSet getArtifactRepositoriesFromActiveProfiles( ProfileManager profileManager,
+    public LinkedHashSet getArtifactRepositoriesFromActiveProfiles( Model model,
                                                                     File pomFile,
-                                                                    String modelId )
+                                                                    ProfileManager profileManager )
         throws ProjectBuildingException
     {
 
@@ -179,12 +179,12 @@
         {
             try
             {
-                activeExternalProfiles = profileManager.getActiveProfiles();
+                activeExternalProfiles = profileManager.getActiveProfiles( model );
             }
             catch ( ProfileActivationException e )
             {
                 throw new ProjectBuildingException(
-                                                    modelId,
+                                                    model.getId(),
                                                     "Failed to compute active profiles for repository aggregation.",
                                                     pomFile, e );
             }
@@ -207,7 +207,7 @@
                         }
                         catch ( InvalidRepositoryException e )
                         {
-                            throw new ProjectBuildingException( modelId, e.getMessage(), e );
+                            throw new ProjectBuildingException( model.getId(), e.getMessage(), e );
                         }
 
                         remoteRepositories.add( artifactRepo );
@@ -230,7 +230,7 @@
                                                              useProfilesXml,
                                                              activationContext );
 
-        return getArtifactRepositoriesFromActiveProfiles( profileManager, pomFile, model.getId() );
+        return getArtifactRepositoriesFromActiveProfiles( model, pomFile, profileManager );
     }
 
     private void loadExternalProjectProfiles( ProfileManager profileManager,

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/profiles/build/ProfileAdvisor.java Tue Jan 15 18:20:08 2008
@@ -38,9 +38,9 @@
 
     String ROLE = ProfileAdvisor.class.getName();
 
-    LinkedHashSet getArtifactRepositoriesFromActiveProfiles( ProfileManager profileManager,
+    LinkedHashSet getArtifactRepositoriesFromActiveProfiles( Model model,
                                                              File pomFile,
-                                                             String modelId )
+                                                             ProfileManager profileManager )
         throws ProjectBuildingException;
 
     LinkedHashSet getArtifactRepositoriesFromActiveProfiles( Model model,

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=612333&r1=612332&r2=612333&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 Tue Jan 15 18:20:08 2008
@@ -225,14 +225,20 @@
 
         superModel = ModelUtils.cloneModel( superModel );
 
-        List activeProfiles;
+        List activeProfiles = new ArrayList();
         if ( profileManager != null )
         {
-            activeProfiles = profileAdvisor.applyActivatedExternalProfiles( superModel, null, profileManager );
-        }
-        else
-        {
-            activeProfiles = Collections.EMPTY_LIST;
+            List activated = profileAdvisor.applyActivatedProfiles( superModel, null, false, profileManager.getProfileActivationContext() );
+            if ( !activated.isEmpty() )
+            {
+                activeProfiles.addAll( activated );
+            }
+
+            activated = profileAdvisor.applyActivatedExternalProfiles( superModel, null, profileManager );
+            if ( !activated.isEmpty() )
+            {
+                activeProfiles.addAll( activated );
+            }
         }
 
         MavenProject project = new MavenProject( superModel );
@@ -593,13 +599,13 @@
         }
 
         LinkedHashSet activeInSuperPom = new LinkedHashSet();
-        List activated = profileAdvisor.applyActivatedExternalProfiles( superModel, projectDescriptor, externalProfileManager );
+        List activated = profileAdvisor.applyActivatedProfiles( superModel, projectDescriptor, validProfilesXmlLocation, profileActivationContext );
         if ( !activated.isEmpty() )
         {
             activeInSuperPom.addAll( activated );
         }
 
-        activated = profileAdvisor.applyActivatedProfiles( superModel, projectDescriptor, validProfilesXmlLocation, profileActivationContext );
+        activated = profileAdvisor.applyActivatedExternalProfiles( superModel, projectDescriptor, externalProfileManager );
         if ( !activated.isEmpty() )
         {
             activeInSuperPom.addAll( activated );

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/ModelUtils.java Tue Jan 15 18:20:08 2008
@@ -1121,4 +1121,30 @@
         return new ArrayList( depsMap.values() );
     }
 
+    public static String getGroupId( Model model )
+    {
+        Parent parent = model.getParent();
+
+        String groupId = model.getGroupId();
+        if ( ( parent != null ) && ( groupId == null ) )
+        {
+            groupId = parent.getGroupId();
+        }
+
+        return groupId;
+    }
+
+    public static String getVersion( Model model )
+    {
+        Parent parent = model.getParent();
+
+        String version = model.getVersion();
+        if ( ( parent != null ) && ( version == null ) )
+        {
+            version = parent.getVersion();
+        }
+
+        return version;
+    }
+
 }

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/build/model/DefaultModelLineageBuilder.java Tue Jan 15 18:20:08 2008
@@ -291,9 +291,9 @@
             context = new DefaultProfileActivationContext( System.getProperties(), false );
         }
 
-        LinkedHashSet profileRepos = profileAdvisor.getArtifactRepositoriesFromActiveProfiles( profileManager,
+        LinkedHashSet profileRepos = profileAdvisor.getArtifactRepositoriesFromActiveProfiles( model,
                                                                                                pomFile,
-                                                                                               model.getId() );
+                                                                                               profileManager );
 
         getLogger().debug( "Got external-profile repositories: " + profileRepos );
 

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/DefaultProjectErrorReporter.java Tue Jan 15 18:20:08 2008
@@ -115,7 +115,7 @@
      * @see org.apache.maven.project.error.ProjectErrorReporter#reportActivatorErrorWhileApplyingProfiles(org.apache.maven.profiles.activation.ProfileActivator, org.apache.maven.model.Model, java.io.File, org.apache.maven.model.Profile, org.apache.maven.profiles.activation.ProfileActivationContext, org.apache.maven.profiles.activation.ProfileActivationException)
      */
     public void reportActivatorError( ProfileActivator activator,
-                                      String projectId,
+                                      Model model,
                                       File pomFile,
                                       Profile profile,
                                       ProfileActivationContext context,
@@ -139,9 +139,9 @@
         writer.write( NEWLINE );
         writer.write( cause.getMessage() );
 
-        addStandardInfo( projectId, pomFile, writer );
+        addStandardInfo( model.getId(), pomFile, writer );
         addTips( ProjectErrorTips.getTipsForActivatorError( activator,
-                                                            projectId,
+                                                            model.getId(),
                                                             pomFile,
                                                             profile,
                                                             context,
@@ -153,9 +153,10 @@
     /**
      * @see org.apache.maven.project.error.ProjectErrorReporter#reportActivatorLookupError(java.lang.String, java.io.File, org.apache.maven.model.Profile, org.codehaus.plexus.component.repository.exception.ComponentLookupException)
      */
-    public void reportActivatorLookupError( String projectId,
+    public void reportActivatorLookupError( Model model,
                                             File pomFile,
                                             Profile profile,
+                                            ProfileActivationContext context,
                                             ComponentLookupException cause )
     {
         StringWriter writer = new StringWriter();
@@ -174,8 +175,8 @@
         writer.write( NEWLINE );
         writer.write( cause.getMessage() );
 
-        addStandardInfo( projectId, pomFile, writer );
-        addTips( ProjectErrorTips.getTipsForActivatorLookupError( projectId,
+        addStandardInfo( model.getId(), pomFile, writer );
+        addTips( ProjectErrorTips.getTipsForActivatorLookupError( model.getId(),
                                                                   pomFile,
                                                                   profile,
                                                                   cause ), writer );
@@ -252,7 +253,7 @@
      * @see org.apache.maven.project.error.ProjectErrorReporter#reportInvalidRepositoryWhileGettingRepositoriesFromProfiles(org.apache.maven.model.Repository, java.lang.String, java.io.File, org.apache.maven.artifact.InvalidRepositoryException)
      */
     public void reportInvalidRepositoryWhileGettingRepositoriesFromProfiles( Repository repo,
-                                                                             String projectId,
+                                                                             Model model,
                                                                              File pomFile,
                                                                              InvalidRepositoryException cause )
     {
@@ -271,8 +272,8 @@
         writer.write( NEWLINE );
         writer.write( cause.getMessage() );
 
-        addStandardInfo( projectId, pomFile, writer );
-        addTips( ProjectErrorTips.getTipsForInvalidRepositorySpec( repo, projectId, pomFile, cause ),
+        addStandardInfo( model.getId(), pomFile, writer );
+        addTips( ProjectErrorTips.getTipsForInvalidRepositorySpec( repo, model.getId(), pomFile, cause ),
                  writer );
 
         registerBuildError( cause, writer.toString(), cause.getCause() );

Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java?rev=612333&r1=612332&r2=612333&view=diff
==============================================================================
--- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java (original)
+++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/error/ProjectErrorReporter.java Tue Jan 15 18:20:08 2008
@@ -55,7 +55,7 @@
      * </pre>
      */
     void reportActivatorError( ProfileActivator activator,
-                               String projectId,
+                               Model model,
                                File pomFile,
                                Profile profile,
                                ProfileActivationContext context,
@@ -77,9 +77,10 @@
      * &lt;------ ProjectBuildingException
      * </pre>
      */
-    void reportActivatorLookupError( String projectId,
+    void reportActivatorLookupError( Model model,
                                      File pomFile,
                                      Profile profile,
+                                     ProfileActivationContext context,
                                      ComponentLookupException cause );
 
     /**
@@ -131,7 +132,7 @@
      * </pre>
      */
     void reportInvalidRepositoryWhileGettingRepositoriesFromProfiles( Repository repo,
-                                                                      String projectId,
+                                                                      Model model,
                                                                       File pomFile,
                                                                       InvalidRepositoryException cause );