You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2019/10/14 22:12:34 UTC

[maven] 01/04: [MNG-6656] Introduce Features class

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 24955e7ce383c7ad0c64b2de95c7f5a395c43d10
Author: rfscholte <rf...@apache.org>
AuthorDate: Sun Oct 13 13:49:47 2019 +0200

    [MNG-6656] Introduce Features class
---
 .../DefaultRepositorySystemSessionFactory.java     |  3 +-
 .../java/org/apache/maven/feature/Features.java    | 63 ++++++++++++++++++++++
 .../maven/model/building/DefaultModelBuilder.java  |  3 +-
 .../model/validation/DefaultModelValidator.java    |  3 +-
 4 files changed, 69 insertions(+), 3 deletions(-)

diff --git a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
index 3eaad6f..94b2e35 100644
--- a/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
+++ b/maven-core/src/main/java/org/apache/maven/internal/aether/DefaultRepositorySystemSessionFactory.java
@@ -50,6 +50,7 @@ import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
 import org.apache.maven.bridge.MavenRepositorySystem;
 import org.apache.maven.eventspy.internal.EventSpyDispatcher;
 import org.apache.maven.execution.MavenExecutionRequest;
+import org.apache.maven.feature.Features;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
 import org.apache.maven.settings.Mirror;
 import org.apache.maven.settings.Proxy;
@@ -268,7 +269,7 @@ public class DefaultRepositorySystemSessionFactory
         mavenRepositorySystem.injectProxy( session, request.getPluginArtifactRepositories() );
         mavenRepositorySystem.injectAuthentication( session, request.getPluginArtifactRepositories() );
 
-        if ( Boolean.getBoolean( "maven.experimental.buildconsumer" ) )
+        if ( Features.buildConsumer().isActive() )
         {
             session.setFileTransformerManager( newFileTransformerManager() );
         }
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
new file mode 100644
index 0000000..d4461d8
--- /dev/null
+++ b/maven-model-builder/src/main/java/org/apache/maven/feature/Features.java
@@ -0,0 +1,63 @@
+package org.apache.maven.feature;
+
+/*
+ * 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.
+ */
+
+/**
+ * Centralized class for feature information
+ * 
+ * @author Robert Scholte
+ * @since 3.7.0
+ */
+public final class Features
+{
+    private Features() 
+    {
+    }
+    
+    private static final Feature BUILDCONSUMER = new Feature( "maven.experimental.buildconsumer", "false" );
+    
+    public static Feature buildConsumer()
+    {
+        return BUILDCONSUMER;
+    }
+    
+    /**
+     * Represents some feature
+     * 
+     * @author Robert Scholte
+     * @since 3.7.0
+     */
+    public static class Feature
+    {
+        private final boolean active;
+
+        Feature( String name, String defaultValue )
+        {
+            active = "true".equals( System.getProperty( name, defaultValue ) );
+        }
+        
+        public boolean isActive()
+        {
+           return active; 
+        }
+        
+    }
+    
+}
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 bc13d33..6d2bb7e 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
@@ -55,6 +55,7 @@ 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;
 import org.apache.maven.model.Dependency;
@@ -770,7 +771,7 @@ public class DefaultModelBuilder
         }
         
         // re-read model from file
-        if ( Boolean.getBoolean( "maven.experimental.buildconsumer" ) && request.isTransformPom() )
+        if ( Features.buildConsumer().isActive() && request.isTransformPom() )
         {
             try
             {
diff --git a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
index 15a5587..86670eb 100644
--- a/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
+++ b/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
@@ -19,6 +19,7 @@ package org.apache.maven.model.validation;
  * under the License.
  */
 
+import org.apache.maven.feature.Features;
 import org.apache.maven.model.Activation;
 import org.apache.maven.model.ActivationFile;
 import org.apache.maven.model.Build;
@@ -99,7 +100,7 @@ public class DefaultModelValidator
                                     parent );
 
             // resolvedModel will assign version based on relativePath
-            if ( !Boolean.getBoolean( "maven.experimental.buildconsumer" ) )
+            if ( !Features.buildConsumer().isActive() )
             {
                 validateStringNotEmpty( "parent.version", problems, Severity.FATAL, Version.BASE, parent.getVersion(),
                                         parent );