This is an automated email from the ASF dual-hosted git repository.

rfscholte pushed a commit to branch MNG-6656
in repository https://gitbox.apache.org/repos/asf/maven.git

commit 91f87994a4fb93aa7f90e82c69eb73b05a9302b6
Author: rfscholte <[email protected]>
AuthorDate: Tue Oct 15 00:12:17 2019 +0200

    [MNG-6656] Enable maven.experimental.buildconsumer by default
---
 .../project/AbstractMavenProjectTestCase.java      |  35 ++++--
 .../apache/maven/project/ProjectClasspathTest.java |   1 +
 .../maven/project/DefaultProjectBuilder.java       |   2 +-
 .../maven/AbstractCoreMavenComponentTestCase.java  |  24 +++--
 .../project/AbstractMavenProjectTestCase.java      |  33 ++++--
 .../project/DefaultMavenProjectBuilderTest.java    |  16 ++-
 .../apache/maven/project/PomConstructionTest.java  |  14 ++-
 .../apache/maven/project/ProjectBuilderTest.java   |   8 ++
 .../maven/repository/TestRepositorySystem.java     |   4 +-
 .../settings/PomConstructionWithSettingsTest.java  |  27 ++++-
 .../java/org/apache/maven/feature/Features.java    |   2 +-
 .../maven/model/building/DefaultModelBuilder.java  | 119 ++++++++++++---------
 .../validation/DefaultModelValidatorTest.java      |  12 ++-
 .../xml/sax/filter/AbstractEventXMLFilter.java     |   8 +-
 .../maven/xml/sax/filter/ParentXMLFilter.java      |   8 +-
 .../maven/xml/sax/filter/ParentXMLFilterTest.java  |   3 +
 16 files changed, 215 insertions(+), 101 deletions(-)

diff --git 
a/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
 
b/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
index 7e3f7e6..7aa6585 100644
--- 
a/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
+++ 
b/maven-compat/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
@@ -23,11 +23,13 @@ import java.net.URL;
 import java.util.Arrays;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.building.ModelBuildingException;
 import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.repository.RepositorySystem;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
@@ -42,6 +44,8 @@ public abstract class AbstractMavenProjectTestCase
     protected ProjectBuilder projectBuilder;
 
     protected RepositorySystem repositorySystem;
+    
+    private SessionScope sessionScope;
 
     @Override
     protected void customizeContainerConfiguration( ContainerConfiguration 
containerConfiguration )
@@ -67,12 +71,27 @@ public abstract class AbstractMavenProjectTestCase
         }
 
         repositorySystem = lookup( RepositorySystem.class );
+        
+    }
+    
+    private void seedMavenSession( MavenSession mavenSession ) throws Exception
+    {
+        if ( sessionScope == null )
+        {
+            sessionScope = lookup( SessionScope.class );
+            sessionScope.enter();
+            sessionScope.seed( MavenSession.class, mavenSession );
+        }
     }
 
     @Override
     protected void tearDown()
         throws Exception
     {
+        if ( sessionScope != null )
+        {
+            sessionScope.exit();
+        }
         projectBuilder = null;
 
         super.tearDown();
@@ -121,11 +140,7 @@ public abstract class AbstractMavenProjectTestCase
     protected ArtifactRepository getLocalRepository()
         throws Exception
     {
-        ArtifactRepositoryLayout repoLayout = lookup( 
ArtifactRepositoryLayout.class, "legacy" );
-
-        ArtifactRepository r = repositorySystem.createArtifactRepository( 
"local", "file://" + getLocalRepositoryPath().getAbsolutePath(), repoLayout, 
null, null );
-
-        return r;
+        return repositorySystem.createLocalRepository( 
getLocalRepositoryPath() );
     }
 
     // ----------------------------------------------------------------------
@@ -142,6 +157,10 @@ public abstract class AbstractMavenProjectTestCase
         configuration.setResolveDependencies( true );
         initRepoSession( configuration );
 
+        seedMavenSession( new MavenSession( getContainer(), 
+                          configuration.getRepositorySession(),
+                          new DefaultMavenExecutionRequest(), null ) );
+        
         try
         {
             return projectBuilder.build( pom, configuration ).getProject();
@@ -170,6 +189,10 @@ public abstract class AbstractMavenProjectTestCase
         ProjectBuildingRequest configuration = new 
DefaultProjectBuildingRequest();
         configuration.setLocalRepository( getLocalRepository() );
         initRepoSession( configuration );
+        
+        seedMavenSession( new MavenSession( getContainer(), 
+                                            
configuration.getRepositorySession(),
+                                            new 
DefaultMavenExecutionRequest(), null ) );
 
         return projectBuilder.build( pom, configuration ).getProject();
     }
diff --git 
a/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java 
b/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
index d7ae86e..59c6e0d 100644
--- 
a/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
+++ 
b/maven-compat/src/test/java/org/apache/maven/project/ProjectClasspathTest.java
@@ -35,6 +35,7 @@ public class ProjectClasspathTest
     public void setUp()
         throws Exception
     {
+        super.setUp();
         ArtifactResolver resolver = lookup( ArtifactResolver.class, 
"classpath" );
         DefaultArtifactDescriptorReader pomReader = 
(DefaultArtifactDescriptorReader)lookup(ArtifactDescriptorReader.class);
         pomReader.setArtifactResolver( resolver );
diff --git 
a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java 
b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
index c3a0a8f..ce6c9dc 100644
--- 
a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
+++ 
b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
@@ -164,7 +164,7 @@ public class DefaultProjectBuilder
                 request.setModelBuildingListener( listener );
 
                 request.setPomFile( pomFile );
-                request.setTransformPom( true );
+                request.setTransformPom( pomFile != null );
                 request.setModelSource( modelSource );
                 request.setLocationTracking( true );
 
diff --git 
a/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
 
b/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
index 179b8f9..0931d1b 100644
--- 
a/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
+++ 
b/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java
@@ -44,10 +44,10 @@ import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.repository.RepositorySystem;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
-import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.util.FileUtils;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
@@ -56,12 +56,12 @@ import org.eclipse.aether.repository.LocalRepository;
 public abstract class AbstractCoreMavenComponentTestCase
     extends PlexusTestCase
 {
-    @Requirement
     protected RepositorySystem repositorySystem;
 
-    @Requirement
     protected org.apache.maven.project.ProjectBuilder projectBuilder;
 
+    protected SessionScope sessionScope;
+
     protected void setUp()
         throws Exception
     {
@@ -144,9 +144,17 @@ public abstract class AbstractCoreMavenComponentTestCase
             .setRemoteRepositories( request.getRemoteRepositories() )
             .setPluginArtifactRepositories( 
request.getPluginArtifactRepositories() )
             .setSystemProperties( executionProperties );
+        initRepoSession( configuration );
 
-        List<MavenProject> projects = new ArrayList<>();
+        MavenSession session =
+                        new MavenSession( getContainer(), 
configuration.getRepositorySession(), request,
+                                          new DefaultMavenExecutionResult() );
+        sessionScope = lookup( SessionScope.class );
 
+        sessionScope.enter();
+        sessionScope.seed( MavenSession.class, session );
+        
+        List<MavenProject> projects = new ArrayList<>();
         if ( pom != null )
         {
             MavenProject project = projectBuilder.build( pom, configuration 
).getProject();
@@ -172,15 +180,9 @@ public abstract class AbstractCoreMavenComponentTestCase
             project.setPluginArtifactRepositories( 
request.getPluginArtifactRepositories() );
             projects.add( project );
         }
-
-        initRepoSession( configuration );
-
-        MavenSession session =
-            new MavenSession( getContainer(), 
configuration.getRepositorySession(), request,
-                              new DefaultMavenExecutionResult() );
         session.setProjects( projects );
         session.setAllProjects( session.getProjects() );
-
+        
         return session;
     }
 
diff --git 
a/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
 
b/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
index 9f836c2..82189e9 100644
--- 
a/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
+++ 
b/maven-core/src/test/java/org/apache/maven/project/AbstractMavenProjectTestCase.java
@@ -23,11 +23,13 @@ import java.net.URL;
 import java.util.Arrays;
 
 import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.building.ModelBuildingException;
 import org.apache.maven.model.building.ModelProblem;
 import org.apache.maven.repository.RepositorySystem;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
@@ -42,6 +44,8 @@ public abstract class AbstractMavenProjectTestCase
     protected ProjectBuilder projectBuilder;
 
     protected RepositorySystem repositorySystem;
+    
+    private SessionScope sessionScope;
 
     @Override
     protected void customizeContainerConfiguration( ContainerConfiguration 
containerConfiguration )
@@ -67,12 +71,17 @@ public abstract class AbstractMavenProjectTestCase
         }
 
         repositorySystem = lookup( RepositorySystem.class );
+        
+        sessionScope = lookup( SessionScope.class );
+        sessionScope.enter();
     }
 
     @Override
     protected void tearDown()
         throws Exception
     {
+        sessionScope.exit();
+        
         projectBuilder = null;
 
         super.tearDown();
@@ -82,6 +91,11 @@ public abstract class AbstractMavenProjectTestCase
     {
         return projectBuilder;
     }
+    
+    protected final SessionScope getSessionScope()
+    {
+        return sessionScope;
+    }
 
     @Override
     protected String getCustomConfigurationName()
@@ -119,11 +133,7 @@ public abstract class AbstractMavenProjectTestCase
     protected ArtifactRepository getLocalRepository()
         throws Exception
     {
-        ArtifactRepositoryLayout repoLayout = lookup( 
ArtifactRepositoryLayout.class, "legacy" );
-
-        ArtifactRepository r = repositorySystem.createArtifactRepository( 
"local", "file://" + getLocalRepositoryPath().getAbsolutePath(), repoLayout, 
null, null );
-
-        return r;
+        return repositorySystem.createLocalRepository( 
getLocalRepositoryPath() );
     }
 
     // ----------------------------------------------------------------------
@@ -138,6 +148,9 @@ public abstract class AbstractMavenProjectTestCase
         configuration.setProcessPlugins( false );
         configuration.setResolveDependencies( true );
 
+        sessionScope.seed( MavenSession.class, new MavenSession( 
getContainer(), 
+                                                                 
configuration.getRepositorySession(),
+                                                                 new 
DefaultMavenExecutionRequest(), null ) );
         try
         {
             return projectBuilder.build( pom, configuration ).getProject();
@@ -164,6 +177,10 @@ public abstract class AbstractMavenProjectTestCase
     {
         ProjectBuildingRequest configuration = newBuildingRequest();
 
+        sessionScope.seed( MavenSession.class, new MavenSession( 
getContainer(), 
+                                                                 
configuration.getRepositorySession(),
+                                                                 new 
DefaultMavenExecutionRequest(), null ) );
+        
         return projectBuilder.build( pom, configuration ).getProject();
     }
 
@@ -174,6 +191,10 @@ public abstract class AbstractMavenProjectTestCase
         configuration.setLocalRepository( this.getLocalRepository() );
         configuration.setRemoteRepositories( Arrays.asList( 
this.repositorySystem.createDefaultRemoteRepository() ) );
         initRepoSession( configuration );
+        
+        sessionScope.seed( MavenSession.class, new MavenSession( 
getContainer(), 
+                                                                 
configuration.getRepositorySession(),
+                                                                 new 
DefaultMavenExecutionRequest(), null ) );
 
         return projectBuilder.build( pom, configuration ).getProject();
     }
diff --git 
a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
 
b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
index 008c6d3..fa3501a 100644
--- 
a/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
+++ 
b/maven-core/src/test/java/org/apache/maven/project/DefaultMavenProjectBuilderTest.java
@@ -28,12 +28,13 @@ import java.util.List;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
 import org.codehaus.plexus.util.FileUtils;
 
 public class DefaultMavenProjectBuilderTest
     extends AbstractMavenProjectTestCase
 {
-
     private List<File> filesToDelete = new ArrayList<>();
 
     private File localRepoDir;
@@ -84,6 +85,11 @@ public class DefaultMavenProjectBuilderTest
         configuration.setLocalRepository( getLocalRepository() );
         initRepoSession( configuration );
 
+        getSessionScope().seed( MavenSession.class,
+                                new MavenSession( getContainer(), 
+                                                  
configuration.getRepositorySession(),
+                                                  new 
DefaultMavenExecutionRequest(), null ) );
+        
         return projectBuilder.build( pom, allowStub, configuration 
).getProject();
     }
 
@@ -225,6 +231,10 @@ public class DefaultMavenProjectBuilderTest
             ProjectBuildingRequest request = newBuildingRequest();
             request.setProcessPlugins( false );
             request.setResolveDependencies( true );
+            
+            getSessionScope().seed( MavenSession.class, new MavenSession( 
getContainer(), 
+                                                                          
request.getRepositorySession(),
+                                                                          new 
DefaultMavenExecutionRequest(), null ) );
             projectBuilder.build( pomFile, request );
             fail( "Project building did not fail despite invalid POM" );
         }
@@ -249,6 +259,10 @@ public class DefaultMavenProjectBuilderTest
         ProjectBuildingRequest request = newBuildingRequest();
         request.setProcessPlugins( false );
         request.setResolveDependencies( true );
+        
+        getSessionScope().seed( MavenSession.class, new MavenSession( 
getContainer(), 
+                                                                      
request.getRepositorySession(),
+                                                                      new 
DefaultMavenExecutionRequest(), null ) );
         projectBuilder.build( pomFile, request );
     }
 
diff --git 
a/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java 
b/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
index 9e16ebc..a639a38 100644
--- a/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/PomConstructionTest.java
@@ -22,6 +22,7 @@ package org.apache.maven.project;
 import static org.hamcrest.Matchers.endsWith;
 import static org.hamcrest.Matchers.lessThan;
 import static org.hamcrest.Matchers.startsWith;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertThat;
 
 import java.io.File;
@@ -32,19 +33,21 @@ import java.util.Map;
 import java.util.Properties;
 
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.PluginExecution;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.project.harness.PomTestWrapper;
 import org.apache.maven.repository.RepositorySystem;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.PlexusConstants;
 import org.codehaus.plexus.PlexusTestCase;
 import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
 import org.eclipse.aether.repository.LocalRepository;
-import static org.junit.Assert.assertNotEquals;
 
 public class PomConstructionTest
     extends PlexusTestCase
@@ -58,6 +61,8 @@ public class PomConstructionTest
     private DefaultProjectBuilder projectBuilder;
 
     private RepositorySystem repositorySystem;
+    
+    private SessionScope sessionScope;
 
     private File testDirectory;
 
@@ -76,6 +81,8 @@ public class PomConstructionTest
         new File( getBasedir(), BASE_MIXIN_DIR );
         projectBuilder = (DefaultProjectBuilder) lookup( ProjectBuilder.class 
);
         repositorySystem = lookup( RepositorySystem.class );
+        sessionScope = lookup( SessionScope.class );
+        sessionScope.enter();
     }
 
     @Override
@@ -83,6 +90,7 @@ public class PomConstructionTest
         throws Exception
     {
         projectBuilder = null;
+        sessionScope.exit();
 
         super.tearDown();
     }
@@ -1873,6 +1881,10 @@ public class PomConstructionTest
         LocalRepository localRepo = new LocalRepository( 
config.getLocalRepository().getBasedir() );
         repoSession.setLocalRepositoryManager( new 
SimpleLocalRepositoryManagerFactory().newInstance( repoSession, localRepo ) );
         config.setRepositorySession( repoSession );
+        
+        sessionScope.seed( MavenSession.class, new MavenSession( 
getContainer(), 
+                                                                 
config.getRepositorySession(),
+                                                                 new 
DefaultMavenExecutionRequest(), null ) );
 
         return new PomTestWrapper( pomFile, projectBuilder.build( pomFile, 
config ).getProject() );
     }
diff --git 
a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java 
b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
index 4833b00..efa8a4c 100644
--- a/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
+++ b/maven-core/src/test/java/org/apache/maven/project/ProjectBuilderTest.java
@@ -37,6 +37,7 @@ import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.building.FileModelSource;
 import org.apache.maven.model.building.ModelBuildingRequest;
 import org.apache.maven.model.building.ModelSource;
+import org.apache.maven.session.scope.internal.SessionScope;
 import org.apache.maven.shared.utils.io.FileUtils;
 
 import com.google.common.io.Files;
@@ -75,9 +76,16 @@ public class ProjectBuilderTest
         ProjectBuildingRequest configuration = new 
DefaultProjectBuildingRequest();
         configuration.setRepositorySession( 
mavenSession.getRepositorySession() );
         ModelSource modelSource = new FileModelSource( pomFile );
+        
+        SessionScope sessionScope = lookup( SessionScope.class );
+        sessionScope.enter();
+        sessionScope.seed( MavenSession.class, mavenSession );
+        
         ProjectBuildingResult result =
             lookup( org.apache.maven.project.ProjectBuilder.class ).build( 
modelSource, configuration );
 
+        sessionScope.exit();
+
         assertNotNull( result.getProject().getParentFile() );
     }
 
diff --git 
a/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
 
b/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
index 0e054c6..75da311 100644
--- 
a/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
+++ 
b/maven-core/src/test/java/org/apache/maven/repository/TestRepositorySystem.java
@@ -103,14 +103,14 @@ public class TestRepositorySystem
     public ArtifactRepository createDefaultLocalRepository()
         throws InvalidRepositoryException
     {
-        return createLocalRepository( new File( System.getProperty( "basedir", 
"" ), "target/local-repo" ).getAbsoluteFile() );
+        return createLocalRepository( new File( System.getProperty( "basedir", 
"." ), "target/local-repo" ).getAbsoluteFile() );
     }
 
     public ArtifactRepository createDefaultRemoteRepository()
         throws InvalidRepositoryException
     {
         return new MavenArtifactRepository( DEFAULT_REMOTE_REPO_ID, "file://"
-            + new File( System.getProperty( "basedir", "" ), 
"src/test/remote-repo" ).toURI().getPath(),
+            + new File( System.getProperty( "basedir", "." ), 
"src/test/remote-repo" ).getAbsoluteFile().toURI().getPath(),
                                             new DefaultRepositoryLayout(), new 
ArtifactRepositoryPolicy(),
                                             new ArtifactRepositoryPolicy() );
     }
diff --git 
a/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
 
b/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
index 78d0da8..eb6270b 100644
--- 
a/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
+++ 
b/maven-core/src/test/java/org/apache/maven/settings/PomConstructionWithSettingsTest.java
@@ -19,7 +19,14 @@ package org.apache.maven.settings;
  * under the License.
  */
 
+import java.io.File;
+import java.io.IOException;
+import java.io.Reader;
+
 import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout;
+import org.apache.maven.execution.DefaultMavenExecutionRequest;
+import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Profile;
 import org.apache.maven.project.DefaultProjectBuilder;
 import org.apache.maven.project.DefaultProjectBuildingRequest;
@@ -28,6 +35,7 @@ import org.apache.maven.project.ProjectBuildingRequest;
 import org.apache.maven.project.harness.PomTestWrapper;
 import org.apache.maven.repository.RepositorySystem;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
+import org.apache.maven.session.scope.internal.SessionScope;
 import org.apache.maven.settings.io.xpp3.SettingsXpp3Reader;
 import org.codehaus.plexus.ContainerConfiguration;
 import org.codehaus.plexus.PlexusConstants;
@@ -38,10 +46,6 @@ import org.eclipse.aether.DefaultRepositorySystemSession;
 import org.eclipse.aether.internal.impl.SimpleLocalRepositoryManagerFactory;
 import org.eclipse.aether.repository.LocalRepository;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-
 public class PomConstructionWithSettingsTest
     extends PlexusTestCase
 {
@@ -52,9 +56,11 @@ public class PomConstructionWithSettingsTest
     private DefaultProjectBuilder projectBuilder;
 
     private RepositorySystem repositorySystem;
+    
+    private SessionScope sessionScope;
 
     private File testDirectory;
-
+    
     @Override
     protected void customizeContainerConfiguration( ContainerConfiguration 
containerConfiguration )
     {
@@ -69,6 +75,7 @@ public class PomConstructionWithSettingsTest
         testDirectory = new File( getBasedir(), BASE_POM_DIR );
         projectBuilder = (DefaultProjectBuilder) lookup( ProjectBuilder.class 
);
         repositorySystem = lookup( RepositorySystem.class );
+        sessionScope = lookup( SessionScope.class );
     }
 
     @Override
@@ -94,6 +101,7 @@ public class PomConstructionWithSettingsTest
         throws Exception
     {
         PomTestWrapper pom = buildPom( "test-pom-and-settings-interpolation" );
+        
         assertEquals( "applied", pom.getValue( "properties/settingsProfile" ) 
);
         assertEquals( "applied", pom.getValue( "properties/pomProfile" ) );
         assertEquals( "settings", pom.getValue( "properties/pomVsSettings" ) );
@@ -138,6 +146,15 @@ public class PomConstructionWithSettingsTest
         repoSession.setLocalRepositoryManager(
             new SimpleLocalRepositoryManagerFactory().newInstance( 
repoSession, localRepo ) );
         config.setRepositorySession( repoSession );
+        
+        MavenExecutionRequest request = new DefaultMavenExecutionRequest();
+        request.setActiveProfiles( settings.getActiveProfiles() );
+        
+        sessionScope.enter();
+        sessionScope.seed( MavenSession.class,
+                           new MavenSession( getContainer(), 
+                                             repoSession, 
+                                             new 
DefaultMavenExecutionRequest(), null ) );
 
         return new PomTestWrapper( pomFile, projectBuilder.build( pomFile, 
config ).getProject() );
     }
diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java 
b/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java
index d4461d8..48848c9 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java
@@ -31,7 +31,7 @@ public final class Features
     {
     }
     
-    private static final Feature BUILDCONSUMER = new Feature( 
"maven.experimental.buildconsumer", "false" );
+    private static final Feature BUILDCONSUMER = new Feature( 
"maven.experimental.buildconsumer", "true" );
     
     public static Feature buildConsumer()
     {
diff --git 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
index 6d2bb7e..fe3904b 100644
--- 
a/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
+++ 
b/maven-model-builder/src/main/java/org/apache/maven/model/building/DefaultModelBuilder.java
@@ -23,6 +23,8 @@ import static org.apache.maven.model.building.Result.error;
 import static org.apache.maven.model.building.Result.newResult;
 
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.FilterOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.PipedInputStream;
@@ -36,10 +38,6 @@ import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Properties;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -54,7 +52,6 @@ import javax.xml.transform.stream.StreamResult;
 import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
 import 
org.apache.maven.artifact.versioning.InvalidVersionSpecificationException;
 import org.apache.maven.artifact.versioning.VersionRange;
-import org.apache.maven.building.FileSource;
 import org.apache.maven.feature.Features;
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.Build;
@@ -304,6 +301,20 @@ public class DefaultModelBuilder
         if ( inputModel == null )
         {
             inputModel = readModel( request.getModelSource(), 
request.getPomFile(), request, problems );
+
+            if ( Features.buildConsumer().isActive() && 
request.isTransformPom() )
+            {
+                try
+                {
+                    inputModel = modelProcessor.read( transformData( 
request.getPomFile() ), null );
+
+                    inputModel.setPomFile( request.getPomFile() );
+                }
+                catch ( IOException | TransformerException | SAXException | 
ParserConfigurationException e )
+                {
+                    problems.add( new ModelProblemCollectorRequest( 
Severity.FATAL, Version.V37 ).setException( e ) );
+                }
+            }
         }
         
         problems.setRootModel( inputModel );
@@ -763,78 +774,80 @@ public class DefaultModelBuilder
     private void assembleInheritance( List<ModelData> lineage, 
ModelBuildingRequest request,
                                       ModelProblemCollector problems )
     {
-        for ( int i = lineage.size() - 2; i >= 1; i-- )
+        for ( int i = lineage.size() - 2; i >= 0; i-- )
         {
             Model parent = lineage.get( i + 1 ).getModel();
             Model child = lineage.get( i ).getModel();
             inheritanceAssembler.assembleModelInheritance( child, parent, 
request, problems );
         }
-        
-        // re-read model from file
-        if ( Features.buildConsumer().isActive() && request.isTransformPom() )
-        {
-            try
-            {
-                Model parent = lineage.get( 1 ).getModel();
-                
-                Model child = modelProcessor.read( transformData( lineage.get( 
0 ) ), null );
-                inheritanceAssembler.assembleModelInheritance( child, parent, 
request, problems );
-
-                // sync pomfile, is transient
-                child.setPomFile( lineage.get( 0 ).getModel().getPomFile() );
-                // overwrite child
-                lineage.get( 0 ).setModel( child );
-            }
-            catch ( IOException | TransformerException | SAXException | 
ParserConfigurationException e )
-            {
-                problems.add( new ModelProblemCollectorRequest( 
Severity.FATAL, Version.V37 ).setException( e ) );
-            }
-        }
-        else
-        {
-            Model parent = lineage.get( 1 ).getModel();
-            Model child = lineage.get( 0 ).getModel();
-            inheritanceAssembler.assembleModelInheritance( child, parent, 
request, problems );
-        }
     }
     
-    private InputStream transformData( ModelData modelData )
+    private InputStream transformData( File pomFile )
                     throws IOException, TransformerException, SAXException, 
ParserConfigurationException
     {
+//        return modelData.getSource().getInputStream();
         final TransformerFactory transformerFactory = 
Factories.newTransformerFactory() ;
         
         final PipedOutputStream pipedOutputStream  = new PipedOutputStream();
         final PipedInputStream pipedInputStream  = new PipedInputStream( 
pipedOutputStream );
 
         // Should always be FileSource for reactor poms
-        FileSource source = (FileSource) modelData.getSource();
+//        FileSource source = (FileSource) modelData.getSource();
         
-        // System.out.println( "transforming " + source.getFile() );
+//         System.out.println( "transforming " + source.getFile() );
         
         final SAXSource transformSource =
-            new SAXSource( buildPomXMLFilterFactory.get().get( 
source.getFile().toPath() ),
-                           new org.xml.sax.InputSource( 
modelData.getSource().getInputStream() ) );
-        
-        final StreamResult result = new StreamResult( pipedOutputStream );
+            new SAXSource( buildPomXMLFilterFactory.get().get( 
pomFile.toPath() ),
+                           new org.xml.sax.InputSource( new FileInputStream( 
pomFile ) ) );
+
+        FilterOutputStream fos = new FilterOutputStream( pipedOutputStream )
+        {
+            @Override
+            public void write( byte[] b, int off, int len )
+                throws IOException
+            {
+                System.out.write( b, off, len );
+                super.write( b, off, len );
+            }  
+        }
+        ;
+        final StreamResult result = new StreamResult( fos );
         
-        final Callable<Void> callable = () ->
+////        final Callable<Void> callable = () ->
+////        {
+////            try ( PipedOutputStream out = pipedOutputStream )
+////            {
+////                transformerFactory.newTransformer().transform( 
transformSource, result );
+////            }
+////            return null;
+////        };
+////
+////        ExecutorService executorService = 
Executors.newSingleThreadExecutor();
+////        try
+////        {
+////            executorService.submit( callable ).get();
+////        }
+////        catch ( InterruptedException | ExecutionException e )
+////        {
+////            throw new TransformerException( "Failed to transform pom", e );
+////        }
+        final Runnable runnable = new Runnable()
         {
-            try ( PipedOutputStream out = pipedOutputStream )
+            @Override
+            public void run()
             {
-                transformerFactory.newTransformer().transform( 
transformSource, result );
+                try ( PipedOutputStream out = pipedOutputStream )
+                {
+                    transformerFactory.newTransformer().transform( 
transformSource, result );
+                }
+                catch ( TransformerException | IOException e )
+                {
+                    throw new RuntimeException( e );
+                }
             }
-            return null;
         };
 
-        ExecutorService executorService = Executors.newSingleThreadExecutor();
-        try
-        {
-            executorService.submit( callable ).get();
-        }
-        catch ( InterruptedException | ExecutionException e )
-        {
-            throw new TransformerException( "Failed to transform pom", e );
-        }
+        new Thread( runnable ).start();
 
         return pipedInputStream;
     }
diff --git 
a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
 
b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
index 3e07c57..bf6b088 100644
--- 
a/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
+++ 
b/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
@@ -22,6 +22,7 @@ package org.apache.maven.model.validation;
 import java.io.InputStream;
 import java.util.List;
 
+import org.apache.maven.feature.Features;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.building.DefaultModelBuildingRequest;
 import org.apache.maven.model.building.ModelBuildingRequest;
@@ -415,11 +416,18 @@ public class DefaultModelValidatorTest
     {
         SimpleProblemCollector result = validateRaw( "incomplete-parent.xml" );
 
-        assertViolations( result, 3, 0, 0 );
+        if ( Features.buildConsumer().isActive() )
+        {
+            assertViolations( result, 2, 0, 0 );
+        }
+        else
+        {
+            assertViolations( result, 3, 0, 0 );
+            assertTrue( result.getFatals().get( 2 ).contains( "parent.version" 
) );
+        }
 
         assertTrue( result.getFatals().get( 0 ).contains( "parent.groupId" ) );
         assertTrue( result.getFatals().get( 1 ).contains( "parent.artifactId" 
) );
-        assertTrue( result.getFatals().get( 2 ).contains( "parent.version" ) );
     }
 
     public void testHardCodedSystemPath()
diff --git 
a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java
 
b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java
index 633c533..e563032 100644
--- 
a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java
+++ 
b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/AbstractEventXMLFilter.java
@@ -1,7 +1,5 @@
 package org.apache.maven.xml.sax.filter;
 
-import java.util.ArrayDeque;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -21,10 +19,8 @@ import java.util.ArrayDeque;
  * under the License.
  */
 
-import java.util.ArrayList;
+import java.util.ArrayDeque;
 import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Queue;
 
@@ -142,7 +138,7 @@ abstract class AbstractEventXMLFilter extends 
AbstractSAXFilter
         }
         
         // not with streams due to checked SAXException
-        while( !saxEvents.isEmpty() )
+        while ( !saxEvents.isEmpty() )
         {
             saxEvents.poll().execute();
         }
diff --git 
a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ParentXMLFilter.java 
b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ParentXMLFilter.java
index 9cb6ff2..2531798 100644
--- 
a/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ParentXMLFilter.java
+++ 
b/maven-xml/src/main/java/org/apache/maven/xml/sax/filter/ParentXMLFilter.java
@@ -34,6 +34,8 @@ import org.xml.sax.SAXException;
  * <p>
  * Transforms relativePath to version.
  * We could decide to simply allow {@code <parent/>}, but let's require the GA 
for now for checking
+ * This filter does NOT remove the relativePath (which is done by {@link 
RelativePathXMLFilter}, it will only 
+ * optionally include the version based on the path 
  * </p>
  * 
  * @author Robert Scholte
@@ -87,12 +89,6 @@ class ParentXMLFilter
     {
         return state;
     }
-
-    @Override
-    protected boolean acceptEvent( String eventState )
-    {
-        return  !( "relativePath".equals( eventState ) && 
resolvedParent.isPresent() );
-    }
     
     @Override
     public void startElement( String uri, final String localName, String 
qName, Attributes atts )
diff --git 
a/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ParentXMLFilterTest.java
 
b/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ParentXMLFilterTest.java
index 8f25c10..f98f4dd 100644
--- 
a/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ParentXMLFilterTest.java
+++ 
b/maven-xml/src/test/java/org/apache/maven/xml/sax/filter/ParentXMLFilterTest.java
@@ -99,6 +99,7 @@ public class ParentXMLFilterTest extends 
AbstractXMLFilterTests
         String expected = "<parent>"
                         + "<groupId>GROUPID</groupId>"
                         + "<artifactId>ARTIFACTID</artifactId>"
+                        + "<relativePath>RELATIVEPATH</relativePath>"
                         + "<version>1.0.0</version>"
                         + "</parent>";
 
@@ -137,6 +138,7 @@ public class ParentXMLFilterTest extends 
AbstractXMLFilterTests
         String expected = "<parent>"
                         + "<groupId>GROUPID</groupId>"
                         + "<artifactId>ARTIFACTID</artifactId>"
+                        + "<relativePath>RELATIVEPATH</relativePath>"
                         + "<version>1.0.0</version>"
                         + "</parent>";
 
@@ -156,6 +158,7 @@ public class ParentXMLFilterTest extends 
AbstractXMLFilterTests
         String expected = "<relativePath:parent 
xmlns:relativePath=\"relativePath\">"
                         + 
"<relativePath:groupId>GROUPID</relativePath:groupId>"
                         + 
"<relativePath:artifactId>ARTIFACTID</relativePath:artifactId>"
+                        + 
"<relativePath:relativePath>RELATIVEPATH</relativePath:relativePath>"
                         + "<relativePath:version>1.0.0</relativePath:version>"
                         + "</relativePath:parent>";
 

Reply via email to