You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by kh...@apache.org on 2016/07/02 22:28:17 UTC

[1/2] maven git commit: [MNG-6056] Implement Feature Toggle Module to handle Feature Toggles o Renamed all reference consistent. o If no real toggle is defined in enumeration also command line will printout only "no toggles defined". This makes i

Repository: maven
Updated Branches:
  refs/heads/MNG-6056 5a72f9552 -> 7fdce687f


[MNG-6056] Implement Feature Toggle Module to handle Feature Toggles
 o Renamed all reference consistent.
 o If no real toggle is defined in enumeration also
   command line will printout only "no toggles defined". This
   makes it easy to remove all feature toggles without the need
   to remove the command line options which can being keept.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/2a8bafd9
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/2a8bafd9
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/2a8bafd9

Branch: refs/heads/MNG-6056
Commit: 2a8bafd9f7b6911dda1de282e52aca12cc2f828a
Parents: 5a72f95
Author: Karl Heinz Marbaise <kh...@apache.org>
Authored: Sun Jul 3 00:14:56 2016 +0200
Committer: Karl Heinz Marbaise <kh...@apache.org>
Committed: Sun Jul 3 00:17:43 2016 +0200

----------------------------------------------------------------------
 .../apache/maven/graph/DefaultGraphBuilder.java |  6 +-
 .../java/org/apache/maven/cli/MavenCli.java     | 58 ++++++++++++--------
 .../maven/feature/AvailableFeatureToggles.java  | 41 +++++++++++---
 .../feature/DefaultSelectedFeaturesTest.java    | 25 +++++----
 4 files changed, 82 insertions(+), 48 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/2a8bafd9/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
index a41f6ba..4b03f02 100644
--- a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
@@ -80,9 +80,9 @@ public class DefaultGraphBuilder
             return dependencyGraph( session, session.getProjects(), false );
         }
         
-        if (selectedFeatures.isToggleActive( AvailableFeatureToggles.MNG10000 )) {
-            logger.info( " -> Features MNG 10000 is activated." );
-        }
+//        if (selectedFeatures.isToggleActive( AvailableFeatureToggles.MNG10000 )) {
+//            logger.info( " -> Features MNG 10000 is activated." );
+//        }
 
         List<MavenProject> projects = session.getProjects();
 

http://git-wip-us.apache.org/repos/asf/maven/blob/2a8bafd9/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
----------------------------------------------------------------------
diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
index 9b5d24d..4cf777b 100644
--- a/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
+++ b/maven-embedder/src/main/java/org/apache/maven/cli/MavenCli.java
@@ -194,7 +194,7 @@ public class MavenCli
     private ProfileSelector profileSelector;
     
     @Requirement
-    private FeatureToggles selectedFeatures;
+    private FeatureToggles featureToggles;
 
     public MavenCli()
     {
@@ -458,34 +458,44 @@ public class MavenCli
 
         if ( cliRequest.commandLine.hasOption( CLIManager.LIST_FEATURES ) )
         {
-            AvailableFeatureToggles[] availableFeatures = AvailableFeatureToggles.values();
+            AvailableFeatureToggles[] availableFeatures = AvailableFeatureToggles.getAvailableFeatureToggles();
 
-            System.out.println( "" );
-            System.out.println( "Currently existing feature toggles which you can enable:" );
-            System.out.println( "" );
-            System.out.println( "Issue     Option   Description" );
-            System.out.println( "--------- -------- ----------------------------------------------------" );
-            for ( AvailableFeatureToggles feature : availableFeatures )
+            if ( availableFeatures.length > 0 )
             {
-                String wrappedString = WordUtils.wrap( feature.getDescription(), 60 );
-                List<String> splitToList = Splitter.on( System.lineSeparator() ).splitToList( wrappedString );
-                for ( int i = 0; i < splitToList.size(); i++ )
+                System.out.println( "" );
+                System.out.println( "Currently existing feature toggles which you can enable:" );
+                System.out.println( "" );
+                System.out.println( "Issue     Option   Description" );
+                System.out.println( "--------- -------- ----------------------------------------------------" );
+                for ( AvailableFeatureToggles feature : availableFeatures )
                 {
-                    if ( i == 0 )
+                    String wrappedString = WordUtils.wrap( feature.getDescription(), 60 );
+                    List<String> splitToList = Splitter.on( System.lineSeparator() ).splitToList( wrappedString );
+                    for ( int i = 0; i < splitToList.size(); i++ )
                     {
-                        System.out.print( String.format( "%-9s %-8s", feature.getIssue(), feature.name() ) + " " );
-                    }
-                    else
-                    {
-                        System.out.print( String.format( "%-9s %-8s", "", "" ) + " " );
+                        if ( i == 0 )
+                        {
+                            System.out.print( String.format( "%-9s %-8s", feature.getIssue(), feature.name() ) + " " );
+                        }
+                        else
+                        {
+                            System.out.print( String.format( "%-9s %-8s", "", "" ) + " " );
+                        }
+                        System.out.println( splitToList.get( i ) );
                     }
-                    System.out.println( splitToList.get( i ) );
                 }
-            }
 
-            System.out.println( "" );
-            System.out.println( "If you like to know more about a particular issue please visit: issues.apache.org/jira/browse/[ISSUE]" );
-            throw new ExitException( 0 );
+                System.out.println( "" );
+                System.out.println( "If you like to know more about a particular issue please visit: issues.apache.org/jira/browse/[ISSUE]" );
+                throw new ExitException( 0 );
+            } 
+            else 
+            {
+                System.out.println( "" );
+                System.out.println( "There are not feature toggles available." );
+                throw new ExitException( 0 );
+                
+            }
         }
     }
 
@@ -640,7 +650,7 @@ public class MavenCli
 
         //Explicitly startup lookup for the component, cause it's used during command line
         //parsing etc.
-        selectedFeatures = container.lookup( FeatureToggles.class );
+        featureToggles = container.lookup( FeatureToggles.class );
         
         eventSpyDispatcher = container.lookup( EventSpyDispatcher.class );
 
@@ -1673,7 +1683,7 @@ public class MavenCli
                 }
             }
 
-            selectedFeatures.setActivatedFeatureToggles( activatedFeatures );
+            featureToggles.setActivatedFeatureToggles( activatedFeatures );
         }
 
         return request;

http://git-wip-us.apache.org/repos/asf/maven/blob/2a8bafd9/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java
----------------------------------------------------------------------
diff --git a/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java b/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java
index 1294e59..a0b0d83 100644
--- a/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java
+++ b/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java
@@ -1,5 +1,8 @@
 package org.apache.maven.feature;
 
+import java.util.Arrays;
+import java.util.List;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -29,16 +32,22 @@ public enum AvailableFeatureToggles
 
     //FIXME: Only some examples given. Nothing which exists in reality.
 
-    MNG9991( "MNG-9991", "First Feature to be toggable via command line option. "
-        + "First Feature to be toggable via command line option." ),
-    MNG9992( "MNG-9992", "First Feature to be toggable via command line option. "
-        + "First Feature to be toggable via command line option. XX asdfa. asdf dsf." ),
-    MNG9993( "MNG-9993", "First Feature to be toggable via command line option. "
-        + "More text than you think." ),
-    MNG10000( "MNG-10000", "First Feature to be toggable via command line option. "
-        + "Here much more than you thing." );
+//    MNG9991( "MNG-9991", "First Feature to be toggable via command line option. "
+//        + "First Feature to be toggable via command line option." ),
+//    MNG9992( "MNG-9992", "First Feature to be toggable via command line option. "
+//        + "First Feature to be toggable via command line option. XX asdfa. asdf dsf." ),
+//    MNG9993( "MNG-9993", "First Feature to be toggable via command line option. "
+//        + "More text than you think." ),
+//    MNG10000( "MNG-10000", "First Feature to be toggable via command line option. "
+//        + "Here much more than you thing." ),
 
-//    UNKNONW ("UNKNOWN", "The unknown feature.");
+    /**
+     * This is an feature toggle which will never being used nor does it exist.
+     * This is only to mark the end of feature toggles. Also used for unit tests.
+     * 
+     * Keep it at the end.
+     */
+    UNKNOWN ("UNKNOWN", "The unknown feature.");
 
     private String issue;
 
@@ -50,6 +59,20 @@ public enum AvailableFeatureToggles
         this.description = description;
     }
 
+    public static AvailableFeatureToggles[] getAvailableFeatureToggles() {
+        List<AvailableFeatureToggles> asList = Arrays.asList( AvailableFeatureToggles.values());
+
+        AvailableFeatureToggles[] result = new AvailableFeatureToggles[asList.size() - 1];
+        
+        for ( int i = 0; i < asList.size() - 1; i++ )
+        {
+            if (asList.get( i ) != UNKNOWN) {
+                result[i] = asList.get( 0 );
+            }
+        }
+        return result;
+    }
+    
     public String getDescription()
     {
         return this.description;

http://git-wip-us.apache.org/repos/asf/maven/blob/2a8bafd9/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java
----------------------------------------------------------------------
diff --git a/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java b/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java
index cef2f57..112bea4 100644
--- a/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java
+++ b/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java
@@ -32,7 +32,7 @@ public class DefaultSelectedFeaturesTest
 {
 
     @Test
-    public void getActiveFeaturesShouldNotReturnNull()
+    public void getActiveFeaturesShouldNotReturnNotNullAndSizeOfListZero()
     {
         DefaultFeatureToggles sf = new DefaultFeatureToggles();
         assertNotNull( sf.getActiveFeatureToggles() );
@@ -40,19 +40,20 @@ public class DefaultSelectedFeaturesTest
     }
 
     @Test
-    public void isFeatureActiveShouldReturnFalse()
+    public void isToggleActiveShouldReturnFalseIfNoTogglesHadBeenActivatedAtAll()
     {
         DefaultFeatureToggles sf = new DefaultFeatureToggles();
-        assertFalse( sf.isToggleActive( AvailableFeatureToggles.MNG10000 ) );
+        assertFalse( sf.isToggleActive( AvailableFeatureToggles.UNKNOWN ) );
     }
 
-    @Test
-    public void isFeatureActiveShouldReturnFalseIfNotTheCorrectFeatureIsActivated()
-    {
-        DefaultFeatureToggles sf = new DefaultFeatureToggles();
-
-        sf.setActivatedFeatureToggles( Arrays.asList( AvailableFeatureToggles.MNG9991, AvailableFeatureToggles.MNG9992 ) );
-        assertFalse( sf.isToggleActive( AvailableFeatureToggles.MNG10000 ) );
-        assertTrue( sf.isToggleActive( AvailableFeatureToggles.MNG9991 ) );
-    }
+//    @Test
+//    public void isToggleActiveShouldReturnFalseIfNotTheCorrectFeatureIsActivated()
+//    {
+//        DefaultFeatureToggles sf = new DefaultFeatureToggles();
+//
+//        sf.setActivatedFeatureToggles( Arrays.asList( AvailableFeatureToggles.UNKNOWN ) );
+//        assertFalse( sf.isToggleActive( AvailableFeatureToggles.MNG10000 ) );
+//        assertTrue( sf.isToggleActive( AvailableFeatureToggles.UNKNOWN ) );
+//
+//    }
 }


[2/2] maven git commit: [MNG-6056] Implement Feature Toggle Module to handle Feature Toggles o Improved JavaDocs o Improved unit test.

Posted by kh...@apache.org.
[MNG-6056] Implement Feature Toggle Module to handle Feature Toggles
 o Improved JavaDocs
 o Improved unit test.


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/7fdce687
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/7fdce687
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/7fdce687

Branch: refs/heads/MNG-6056
Commit: 7fdce687f3708e4b6ce6ceb77bf44367775c8f24
Parents: 2a8bafd
Author: Karl Heinz Marbaise <kh...@apache.org>
Authored: Sun Jul 3 00:27:09 2016 +0200
Committer: Karl Heinz Marbaise <kh...@apache.org>
Committed: Sun Jul 3 00:27:09 2016 +0200

----------------------------------------------------------------------
 .../apache/maven/graph/DefaultGraphBuilder.java |  6 ++--
 .../maven/feature/AvailableFeatureToggles.java  | 30 +++++++++++------
 .../maven/feature/DefaultFeatureToggles.java    |  4 +--
 .../apache/maven/feature/FeatureToggles.java    |  5 ++-
 .../feature/DefaultSelectedFeaturesTest.java    | 34 +++++++++++++-------
 5 files changed, 51 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/7fdce687/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
index 4b03f02..a41f6ba 100644
--- a/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
+++ b/maven-core/src/main/java/org/apache/maven/graph/DefaultGraphBuilder.java
@@ -80,9 +80,9 @@ public class DefaultGraphBuilder
             return dependencyGraph( session, session.getProjects(), false );
         }
         
-//        if (selectedFeatures.isToggleActive( AvailableFeatureToggles.MNG10000 )) {
-//            logger.info( " -> Features MNG 10000 is activated." );
-//        }
+        if (selectedFeatures.isToggleActive( AvailableFeatureToggles.MNG10000 )) {
+            logger.info( " -> Features MNG 10000 is activated." );
+        }
 
         List<MavenProject> projects = session.getProjects();
 

http://git-wip-us.apache.org/repos/asf/maven/blob/7fdce687/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java
----------------------------------------------------------------------
diff --git a/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java b/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java
index a0b0d83..7241944 100644
--- a/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java
+++ b/maven-feature/src/main/java/org/apache/maven/feature/AvailableFeatureToggles.java
@@ -32,20 +32,32 @@ public enum AvailableFeatureToggles
 
     //FIXME: Only some examples given. Nothing which exists in reality.
 
-//    MNG9991( "MNG-9991", "First Feature to be toggable via command line option. "
-//        + "First Feature to be toggable via command line option." ),
-//    MNG9992( "MNG-9992", "First Feature to be toggable via command line option. "
-//        + "First Feature to be toggable via command line option. XX asdfa. asdf dsf." ),
-//    MNG9993( "MNG-9993", "First Feature to be toggable via command line option. "
-//        + "More text than you think." ),
-//    MNG10000( "MNG-10000", "First Feature to be toggable via command line option. "
-//        + "Here much more than you thing." ),
+    /**
+     * MNG9991 this feature toggle is intended to do the following.. 
+     */
+    MNG9991( "MNG-9991", "First Feature to be toggable via command line option. "
+        + "First Feature to be toggable via command line option." ),
+    /**
+     * MNG9992 this feature toggle is intended to do the following.. 
+     */
+    MNG9992( "MNG-9992", "First Feature to be toggable via command line option. "
+        + "First Feature to be toggable via command line option. XX asdfa. asdf dsf." ),
+    /**
+     * MNG9993 this feature toggle is intended to do the following.. 
+     */
+    MNG9993( "MNG-9993", "First Feature to be toggable via command line option. "
+        + "More text than you think." ),
+    /**
+     * MNG10000 this feature toggle is intended to do the following.. 
+     */
+    MNG10000( "MNG-10000", "First Feature to be toggable via command line option. "
+        + "Here much more than you thing." ),
 
     /**
      * This is an feature toggle which will never being used nor does it exist.
      * This is only to mark the end of feature toggles. Also used for unit tests.
      * 
-     * Keep it at the end.
+     * Keep it at the last position in this enumeration.
      */
     UNKNOWN ("UNKNOWN", "The unknown feature.");
 

http://git-wip-us.apache.org/repos/asf/maven/blob/7fdce687/maven-feature/src/main/java/org/apache/maven/feature/DefaultFeatureToggles.java
----------------------------------------------------------------------
diff --git a/maven-feature/src/main/java/org/apache/maven/feature/DefaultFeatureToggles.java b/maven-feature/src/main/java/org/apache/maven/feature/DefaultFeatureToggles.java
index 543a59d..2f75fbe 100644
--- a/maven-feature/src/main/java/org/apache/maven/feature/DefaultFeatureToggles.java
+++ b/maven-feature/src/main/java/org/apache/maven/feature/DefaultFeatureToggles.java
@@ -44,7 +44,7 @@ public class DefaultFeatureToggles
 
     private List<AvailableFeatureToggles> activatedFeatureToggles;
 
-    @Override
+    /** {@inheritDoc} */
     public void setActivatedFeatureToggles( List<AvailableFeatureToggles> featuresToBeActivated )
     {
         if ( featuresToBeActivated == null )
@@ -58,7 +58,6 @@ public class DefaultFeatureToggles
     }
 
     /** {@inheritDoc} */
-    @Override
     public boolean isToggleActive( AvailableFeatureToggles feature )
     {
         if ( activatedFeatureToggles != null )
@@ -68,7 +67,6 @@ public class DefaultFeatureToggles
         return false;
     }
 
-    @Override
     public List<AvailableFeatureToggles> getActiveFeatureToggles()
     {
         if ( activatedFeatureToggles == null )

http://git-wip-us.apache.org/repos/asf/maven/blob/7fdce687/maven-feature/src/main/java/org/apache/maven/feature/FeatureToggles.java
----------------------------------------------------------------------
diff --git a/maven-feature/src/main/java/org/apache/maven/feature/FeatureToggles.java b/maven-feature/src/main/java/org/apache/maven/feature/FeatureToggles.java
index 998b79e..099b83e 100644
--- a/maven-feature/src/main/java/org/apache/maven/feature/FeatureToggles.java
+++ b/maven-feature/src/main/java/org/apache/maven/feature/FeatureToggles.java
@@ -31,8 +31,9 @@ public interface FeatureToggles
 {
 
     /**
-     * @since 3.4.0
      * @return The list of features which will be activated.
+     * @see AvailableFeatureToggles
+     * @since 3.4.0
      */
     void setActivatedFeatureToggles( List<AvailableFeatureToggles> activatedFeatures );
 
@@ -49,12 +50,14 @@ public interface FeatureToggles
      * @param feature The feature toggle to check for if it is activated or not.
      * @return <code>true</code> in case of feature has been activated via command line.
      *         <code>--activate-features MNG10000</code>, <code>false</code> otherwise.
+     * @see AvailableFeatureToggles
      * @since 3.4.0
      */
     boolean isToggleActive( AvailableFeatureToggles feature );
 
     /**
      * @return The list of feature toggles which have been activated.
+     * @see AvailableFeatureToggles
      * @since 3.4.0
      */
     List<AvailableFeatureToggles> getActiveFeatureToggles();

http://git-wip-us.apache.org/repos/asf/maven/blob/7fdce687/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java
----------------------------------------------------------------------
diff --git a/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java b/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java
index 112bea4..f04a0e2 100644
--- a/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java
+++ b/maven-feature/src/test/java/org/apache/maven/feature/DefaultSelectedFeaturesTest.java
@@ -26,15 +26,28 @@ import static org.junit.Assert.assertTrue;
 
 import java.util.Arrays;
 
+import org.junit.Before;
 import org.junit.Test;
 
+/**
+ * This implements some unit tests for checking the behaviour of the implementaiton.
+ * 
+ * @author Karl Heinz Marbaise <a href="mailto:khmarbaise@apache.org">khmarbaise@apache.org</a>
+ * @since 3.4.0
+ */
 public class DefaultSelectedFeaturesTest
 {
+    private FeatureToggles sf;
+
+    @Before
+    public void before()
+    {
+        sf = new DefaultFeatureToggles();
+    }
 
     @Test
     public void getActiveFeaturesShouldNotReturnNotNullAndSizeOfListZero()
     {
-        DefaultFeatureToggles sf = new DefaultFeatureToggles();
         assertNotNull( sf.getActiveFeatureToggles() );
         assertEquals( sf.getActiveFeatureToggles().size(), 0 );
     }
@@ -42,18 +55,15 @@ public class DefaultSelectedFeaturesTest
     @Test
     public void isToggleActiveShouldReturnFalseIfNoTogglesHadBeenActivatedAtAll()
     {
-        DefaultFeatureToggles sf = new DefaultFeatureToggles();
         assertFalse( sf.isToggleActive( AvailableFeatureToggles.UNKNOWN ) );
     }
 
-//    @Test
-//    public void isToggleActiveShouldReturnFalseIfNotTheCorrectFeatureIsActivated()
-//    {
-//        DefaultFeatureToggles sf = new DefaultFeatureToggles();
-//
-//        sf.setActivatedFeatureToggles( Arrays.asList( AvailableFeatureToggles.UNKNOWN ) );
-//        assertFalse( sf.isToggleActive( AvailableFeatureToggles.MNG10000 ) );
-//        assertTrue( sf.isToggleActive( AvailableFeatureToggles.UNKNOWN ) );
-//
-//    }
+    @Test
+    public void isToggleActiveShouldReturnFalseIfNotTheCorrectFeatureIsActivated()
+    {
+        sf.setActivatedFeatureToggles( Arrays.asList( AvailableFeatureToggles.UNKNOWN ) );
+        assertFalse( sf.isToggleActive( AvailableFeatureToggles.MNG10000 ) );
+        assertTrue( sf.isToggleActive( AvailableFeatureToggles.UNKNOWN ) );
+
+    }
 }