You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by hb...@apache.org on 2014/11/08 14:57:46 UTC

svn commit: r1637568 - /maven/plugins/trunk/maven-toolchains-plugin/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java

Author: hboutemy
Date: Sat Nov  8 13:57:46 2014
New Revision: 1637568

URL: http://svn.apache.org/r1637568
Log:
rework code after MNG-5720 discussion

Modified:
    maven/plugins/trunk/maven-toolchains-plugin/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java

Modified: maven/plugins/trunk/maven-toolchains-plugin/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java
URL: http://svn.apache.org/viewvc/maven/plugins/trunk/maven-toolchains-plugin/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java?rev=1637568&r1=1637567&r2=1637568&view=diff
==============================================================================
--- maven/plugins/trunk/maven-toolchains-plugin/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java (original)
+++ maven/plugins/trunk/maven-toolchains-plugin/src/it/custom-toolchain-plugin/src/main/java/org/apache/maven/plugins/toolchains/its/custom/CustomToolchainFactory.java Sat Nov  8 13:57:46 2014
@@ -30,6 +30,7 @@ import java.util.Properties;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.toolchain.MisconfiguredToolchainException;
+import org.apache.maven.toolchain.RequirementMatcher;
 import org.apache.maven.toolchain.RequirementMatcherFactory;
 import org.apache.maven.toolchain.ToolchainFactory;
 import org.apache.maven.toolchain.ToolchainPrivate;
@@ -65,30 +66,34 @@ public class CustomToolchainFactory
         DefaultCustomToolchain customToolchain = new DefaultCustomToolchain( model, logger );
 
         // populate the provides section
-        Properties provides = getModelProperties( model, "provides" );
+        Properties provides = getProvidesProperties( model );
 
         for ( Map.Entry<Object, Object> provide : provides.entrySet() )
         {
             String key = (String) provide.getKey();
             String value = (String) provide.getValue();
+
             if ( value == null )
             {
                 throw new MisconfiguredToolchainException(
                     "Provides token '" + key + "' doesn't have any value configured." );
             }
 
+            RequirementMatcher matcher;
             if ( "version".equals( key ) )
             {
-                customToolchain.addProvideToken( key, RequirementMatcherFactory.createVersionMatcher( value ) );
+                matcher = RequirementMatcherFactory.createVersionMatcher( value );
             }
             else
             {
-                customToolchain.addProvideToken( key, RequirementMatcherFactory.createExactMatcher( value ) );
+                matcher = RequirementMatcherFactory.createExactMatcher( value );
             }
+
+            customToolchain.addProvideToken( key, matcher );
         }
 
         // populate the configuration section
-        Properties configuration = getModelProperties( model, "configuration" );
+        Properties configuration = toProperties( (Xpp3Dom) model.getConfiguration() );
 
         String toolHome = configuration.getProperty( DefaultCustomToolchain.KEY_TOOLHOME );
         if ( toolHome == null )
@@ -121,25 +126,25 @@ public class CustomToolchainFactory
     }
 
     /**
-     * Get model properties in in a way compatible with toolchains descriptor version 1.0
+     * Get <code>provides</code> properties in in a way compatible with toolchains descriptor version 1.0
      * (Maven 2.0.9 to 3.2.3, where it is represented as Object/DOM) and descriptor version 1.1
      * (Maven 3.2.4 and later, where it is represented as Properties).
      * 
      * @param model the toolchain model as read from XML
-     * @param property the model XML element to get
-     * @return the properties defined in the corresponding element
-     * @see <a href="http://jira.codehaus.org/browse/MNG-5718">MNG-5718</a>, <a href="http://jira.codehaus.org/browse/MNG-5720">MNG-5720</a> 
+     * @return the properties defined in the <code>provides</code> element
+     * @see <a href="http://jira.codehaus.org/browse/MNG-5718">MNG-5718</a> 
      */
-    protected Properties getModelProperties( ToolchainModel model, String property )
+    protected Properties getProvidesProperties( ToolchainModel model )
     {
-        Object value = getBeanProperty( model, property );
-        if ( value instanceof Properties )
-        {
-            return (Properties) value;
-        }
+        Object value = getBeanProperty( model, "provides" );
 
+        return ( value instanceof Properties ) ? (Properties) value : toProperties( (Xpp3Dom) value );
+    }
+
+    protected Properties toProperties( Xpp3Dom dom )
+    {
         Properties props = new Properties();
-        Xpp3Dom dom = (Xpp3Dom) value;
+
         Xpp3Dom[] children = dom.getChildren();
         for ( Xpp3Dom child : children )
         {