Author: mkleint
Date: Thu Feb 14 11:15:44 2008
New Revision: 627846

URL: http://svn.apache.org/viewvc?rev=627846&view=rev
Log:
introduce ToolchainPrivate.matchesRequirement(Map) that pulls the requirement 
matching into the codebase of the toolchain type developer. Should be more 
flexible than having it hardwired into the toolchain plugin.

Modified:
    
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java
    
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java
    
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java
    
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java

Modified: 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java?rev=627846&r1=627845&r2=627846&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java
 (original)
+++ 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/DefaultToolchain.java
 Thu Feb 14 11:15:44 2008
@@ -20,8 +20,10 @@
 package org.apache.maven.toolchain;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 import org.apache.maven.toolchain.model.ToolchainModel;
+import org.codehaus.plexus.logging.Logger;
 
 /**
  *
@@ -38,15 +40,19 @@
     public static final String KEY_TYPE = "type"; //NOI18N
     
     private ToolchainModel model;
+    
+    private Logger logger;
 
-    protected DefaultToolchain( ToolchainModel model ) 
+    protected DefaultToolchain( ToolchainModel model, Logger logger ) 
     {
         this.model = model;
+        
+        this.logger = logger;
     }
 
-    protected DefaultToolchain( ToolchainModel model, String type )
+    protected DefaultToolchain( ToolchainModel model, String type, Logger 
logger )
     {
-        this(model);
+        this( model, logger );
         this.type = type;
     }
 
@@ -67,8 +73,30 @@
         provides.put( type, matcher );
     }
 
-    public Map getRequirementMatchers( )
-    {
-        return new HashMap( provides );
+
+    public boolean matchesRequirements(Map requirements) {
+        Iterator it = requirements.keySet().iterator();
+        while ( it.hasNext() )
+        {
+            String key = (String) it.next();
+            
+            RequirementMatcher matcher = (RequirementMatcher) 
provides.get(key);
+            
+            if ( matcher == null )
+            {
+                getLog().debug( "Toolchain "  + this + " is missing required 
property: "  + key );
+                return false;
+            }
+            if ( !matcher.matches( (String) requirements.get(key) ) )
+            {
+                getLog().debug( "Toolchain "  + this + " doesn't match 
required property: "  + key );
+                return false;
+            }
+        }
+        return true;
+    }
+    
+    protected Logger getLog() {
+        return logger;
     }
 }

Modified: 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java?rev=627846&r1=627845&r2=627846&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java
 (original)
+++ 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/ToolchainPrivate.java
 Thu Feb 14 11:15:44 2008
@@ -30,7 +30,13 @@
     extends Toolchain
 {
 
-    Map getRequirementMatchers( );
+    /**
+     * Let the toolchain decide if it matches requirements defined
+     * in the toolchain plugin configuration.
+     * @param requirements Map<String, String> key value pair
+     * @return
+     */
+    boolean matchesRequirements( Map requirements);
     
     ToolchainModel getModel( );
     

Modified: 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java?rev=627846&r1=627845&r2=627846&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java
 (original)
+++ 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolChain.java
 Thu Feb 14 11:15:44 2008
@@ -20,12 +20,11 @@
 package org.apache.maven.toolchain.java;
 
 import java.io.File;
-import java.util.Map;
 import org.apache.maven.toolchain.DefaultToolchain;
 import org.apache.maven.toolchain.model.ToolchainModel;
+import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.Os;
-import org.codehaus.plexus.util.Os;
 
 /**
  * @author Milos Kleint
@@ -39,9 +38,9 @@
 
     public static final String KEY_JAVAHOME = "jdkHome"; //NOI18N
 
-    public DefaultJavaToolChain( ToolchainModel model)
+    public DefaultJavaToolChain( ToolchainModel model, Logger logger )
     {
-        super( model, "jdk" );
+        super( model, "jdk", logger );
     }
 
     public String getJavaHome( )

Modified: 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java
URL: 
http://svn.apache.org/viewvc/maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java?rev=627846&r1=627845&r2=627846&view=diff
==============================================================================
--- 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java
 (original)
+++ 
maven/shared/trunk/maven-toolchain/src/main/java/org/apache/maven/toolchain/java/DefaultJavaToolchainFactory.java
 Thu Feb 14 11:15:44 2008
@@ -20,13 +20,13 @@
 package org.apache.maven.toolchain.java;
 
 import java.io.File;
-import org.apache.maven.execution.MavenSession;
 import org.apache.maven.toolchain.MisconfiguredToolchainException;
 import org.apache.maven.toolchain.RequirementMatcherFactory;
-import org.apache.maven.toolchain.Toolchain;
 import org.apache.maven.toolchain.ToolchainFactory;
 import org.apache.maven.toolchain.ToolchainPrivate;
 import org.apache.maven.toolchain.model.ToolchainModel;
+import org.codehaus.plexus.logging.LogEnabled;
+import org.codehaus.plexus.logging.Logger;
 import org.codehaus.plexus.util.FileUtils;
 import org.codehaus.plexus.util.xml.Xpp3Dom;
 
@@ -35,20 +35,22 @@
  * @author mkleint
  */
 public class DefaultJavaToolchainFactory
-    implements ToolchainFactory
+    implements ToolchainFactory, LogEnabled
 {
 
+    private Logger logger;
+
     public DefaultJavaToolchainFactory( )
     {
     }
-
+    
     public ToolchainPrivate createToolchain( ToolchainModel model )
         throws MisconfiguredToolchainException
     {
         if (model == null) {
             return null;
         }
-        DefaultJavaToolChain jtc = new DefaultJavaToolChain( model );
+        DefaultJavaToolChain jtc = new DefaultJavaToolChain( model , logger);
         Xpp3Dom dom = (Xpp3Dom) model.getConfiguration();
         Xpp3Dom javahome = dom.getChild( DefaultJavaToolChain.KEY_JAVAHOME );
         if ( javahome == null )
@@ -97,4 +99,15 @@
         //only version can be eventually supplied, and 
         return null;
     }
+    
+    protected Logger getLogger()
+    {
+        return logger;
+    }
+
+    public void enableLogging( Logger logger )
+    {
+        this.logger = logger;
+    }
+    
 }


Reply via email to