Author: pgier
Date: Wed May  9 00:07:59 2012
New Revision: 1335846

URL: http://svn.apache.org/viewvc?rev=1335846&view=rev
Log:
[MENFORCER-98] Check for API differences between Maven 2 and 3
Patch Submitted by: Jeff Maury

o Applied with some minor changes

Modified:
    
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java

Modified: 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
URL: 
http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java?rev=1335846&r1=1335845&r2=1335846&view=diff
==============================================================================
--- 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
 (original)
+++ 
maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
 Wed May  9 00:07:59 2012
@@ -21,6 +21,7 @@ package org.apache.maven.plugins.enforce
 
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.Field;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -128,7 +129,7 @@ public class RequirePluginVersions
     private Map phaseToLifecycleMap;
 
     /** The lifecycles. */
-    private List lifecycles;
+    private Collection lifecycles;
 
     /** The factory. */
     ArtifactFactory factory;
@@ -169,21 +170,21 @@ public class RequirePluginVersions
             project = (MavenProject) helper.evaluate( "${project}" );
             LifecycleExecutor life;
             life = (LifecycleExecutor) helper.getComponent( 
LifecycleExecutor.class );
-            try
-            {
-              lifecycles = (List) 
ReflectionUtils.getValueIncludingSuperclasses( "lifecycles", life );
+
+            // The lifecycle API changed from Maven 2 to 3 so we have to do a 
hack to figure
+            // out which one we're using.
+            Field field = ReflectionUtils.getFieldByNameIncludingSuperclasses( 
"defaultLifeCycles", life.getClass() );
+            if (field != null) // Using Maven 3
+            {
+                Object defaultLifeCycles = 
ReflectionUtils.getValueIncludingSuperclasses("defaultLifeCycles", life);
+                Map lifecyclesMap = 
(Map)ReflectionUtils.getValueIncludingSuperclasses("lifecycles", 
defaultLifeCycles);
+                lifecycles = lifecyclesMap.values();
             }
-            catch (Exception e)
+            else  // Using Maven 2
             {
-                log.info( "The requirePluginVersions rule is currently not 
compatible with Maven3.");
-                /*
-                 *
-                 * NOTE: If this happens, we're bailing out right away.
-                 *
-                 *
-                 */
-                return;
+                lifecycles = (Collection) 
ReflectionUtils.getValueIncludingSuperclasses( "lifecycles", life );
             }
+
             session = (MavenSession) helper.evaluate( "${session}" );
             pluginManager = (PluginManager) helper.getComponent( 
PluginManager.class );
             factory = (ArtifactFactory) helper.getComponent( 
ArtifactFactory.class );


Reply via email to