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;
+ }
+
}