Author: aheritier
Date: Sun Nov 18 14:51:05 2007
New Revision: 596154

URL: http://svn.apache.org/viewvc?rev=596154&view=rev
Log:
MECLIPSE-346 : Transitive dependencies aren't used to resolve 
JEE/JSP/EJB/Servlet versions

Modified:
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java
    
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java?rev=596154&r1=596153&r2=596154&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.java
 Sun Nov 18 14:51:05 2007
@@ -23,6 +23,7 @@
 import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
 
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
@@ -162,6 +163,32 @@
         return null;
     }
 
+    /**
+     * Extracts the version of the first matching artifact in the given list.
+     * 
+     * @param artifactIds artifact names to compare against for extracting 
version
+     * @param artifacts Set of artifacts for our project
+     * @param len expected length of the version sub-string
+     * @return
+     */
+    public static String getArtifactVersion( String[] artifactIds, Set 
artifacts, int len )
+    {
+        for ( int j = 0; j < artifactIds.length; j++ )
+        {
+            String id = artifactIds[j];
+            for ( Iterator itr = artifacts.iterator(); itr.hasNext(); )
+            {
+                Artifact artifact = (Artifact) itr.next();
+                if ( id.equals( artifact.getArtifactId() ) )
+                {
+                    return StringUtils.substring( artifact.getVersion(), 0, 
len );
+                }
+            }
+        }
+        return null;
+    }
+
+    
     /**
      * Search for a configuration setting of an other plugin for a 
configuration setting.
      * 

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java?rev=596154&r1=596153&r2=596154&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java
 Sun Nov 18 14:51:05 2007
@@ -28,13 +28,13 @@
 
     private String jspVersion;
 
-    public static final String J2EE_1_2 = "1.2";
+    public static final String JEE_1_2 = "1.2";
 
-    public static final String J2EE_1_3 = "1.3";
+    public static final String JEE_1_3 = "1.3";
 
-    public static final String J2EE_1_4 = "1.4";
+    public static final String JEE_1_4 = "1.4";
 
-    public static final String J2EE_5_0 = "5.0";
+    public static final String JEE_5_0 = "5.0";
 
     public static final String EJB_1_1 = "1.1";
 

Modified: 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java
URL: 
http://svn.apache.org/viewvc/maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java?rev=596154&r1=596153&r2=596154&view=diff
==============================================================================
--- 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java
 (original)
+++ 
maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java
 Sun Nov 18 14:51:05 2007
@@ -19,7 +19,9 @@
 package org.apache.maven.plugin.ide;
 
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.maven.project.MavenProject;
 
@@ -37,15 +39,24 @@
 
     private static final Map servletMap = new HashMap();
 
+    /** Names of artifacts of ejb APIs. */
+    // private static final String[] EJB_API_ARTIFACTS = new String[] { "ejb", 
"ejb-api", "geronimo-spec-ejb" };
+    // //$NON-NLS-1$
     static
     {
-        addJEE( JeeDescriptor.J2EE_5_0, JeeDescriptor.EJB_3_0, 
JeeDescriptor.SERVLET_2_5, JeeDescriptor.JSP_2_1 );
-        addJEE( JeeDescriptor.J2EE_1_4, JeeDescriptor.EJB_2_1, 
JeeDescriptor.SERVLET_2_4, JeeDescriptor.JSP_2_0 );
-        addJEE( JeeDescriptor.J2EE_1_3, JeeDescriptor.EJB_2_0, 
JeeDescriptor.SERVLET_2_3, JeeDescriptor.JSP_1_2 );
-        addJEE( JeeDescriptor.J2EE_1_2, JeeDescriptor.EJB_1_1, 
JeeDescriptor.SERVLET_2_2, JeeDescriptor.JSP_1_1 );
+        addJEE( JeeDescriptor.JEE_5_0, JeeDescriptor.EJB_3_0, 
JeeDescriptor.SERVLET_2_5, JeeDescriptor.JSP_2_1 );
+        addJEE( JeeDescriptor.JEE_1_4, JeeDescriptor.EJB_2_1, 
JeeDescriptor.SERVLET_2_4, JeeDescriptor.JSP_2_0 );
+        addJEE( JeeDescriptor.JEE_1_3, JeeDescriptor.EJB_2_0, 
JeeDescriptor.SERVLET_2_3, JeeDescriptor.JSP_1_2 );
+        addJEE( JeeDescriptor.JEE_1_2, JeeDescriptor.EJB_1_1, 
JeeDescriptor.SERVLET_2_2, JeeDescriptor.JSP_1_1 );
 
     }
 
+    /**
+     * Returns the JEEDescriptor associated to an EJB specifications version.
+     * 
+     * @param ejbVersion An EJB version as defined by constants 
JeeDescriptor.EJB_x_x
+     * @return a JEEDescriptor
+     */
     public final static JeeDescriptor getJeeDescriptorFromEjbVersion( String 
ejbVersion )
     {
         if ( ejbMap.containsKey( ejbVersion ) )
@@ -54,6 +65,12 @@
             return null;
     }
 
+    /**
+     * Returns the JEEDescriptor associated to a JEE specifications version.
+     * 
+     * @param jeeVersion A JEE version as defined by constants 
JeeDescriptor.JEE_x_x
+     * @return a JEEDescriptor
+     */
     public final static JeeDescriptor getJeeDescriptorFromJeeVersion( String 
jeeVersion )
     {
         if ( jeeMap.containsKey( jeeVersion ) )
@@ -62,6 +79,12 @@
             return null;
     }
 
+    /**
+     * Returns the JEEDescriptor associated to a JSP specifications version.
+     * 
+     * @param jspVersion A JSP version as defined by constants 
JeeDescriptor.JSP_x_x
+     * @return a JEEDescriptor
+     */
     public final static JeeDescriptor getJeeDescriptorFromJspVersion( String 
jspVersion )
     {
         if ( jspMap.containsKey( jspVersion ) )
@@ -70,6 +93,12 @@
             return null;
     }
 
+    /**
+     * Returns the JEEDescriptor associated to a Servlet specifications 
version.
+     * 
+     * @param servletVersion A Servlet version as defined by constants 
JeeDescriptor.SERVLET_x_x
+     * @return a JEEDescriptor
+     */
     public final static JeeDescriptor getJeeDescriptorFromServletVersion( 
String servletVersion )
     {
         if ( servletMap.containsKey( servletVersion ) )
@@ -78,6 +107,13 @@
             return null;
     }
 
+    /**
+     * Search in dependencies a version of EJB APIs (or of JEE APIs).
+     * 
+     * @param project The maven project descriptor.
+     * @return An EJB version as defined by constants JeeDescriptor.EJB_x_x. 
By default, if nothing is found, returns
+     *         JeeDescriptor.EJB_2_1.
+     */
     public static String resolveEjbVersion( MavenProject project )
     {
         String version = findEjbVersionInDependencies( project );
@@ -93,13 +129,29 @@
         return version == null ? JeeDescriptor.EJB_2_1 : version; //$NON-NLS-1$
     }
 
+    /**
+     * Search in dependencies a version of JEE APIs.
+     * 
+     * @param project The maven project descriptor.
+     * @return A JEE version as defined by constants JeeDescriptor.JEE_x_x. By 
default, if nothing is found, returns
+     *         JeeDescriptor.JEE_1_4.
+     */
     public static String resolveJeeVersion( MavenProject project )
     {
+        // try to find version in dependencies
         String version = findJeeVersionInDependencies( project );
 
-        return version == null ? JeeDescriptor.J2EE_1_4 : version; 
//$NON-NLS-1$
+        return version == null ? JeeDescriptor.JEE_1_4 : version; //$NON-NLS-1$
     }
 
+    /**
+     * Search in dependencies a version of JSP APIs (or from JEE APIs, or from 
Servlet APIs).
+     * 
+     * @param project The maven project descriptor.
+     * @return A JSP version as defined by constants JeeDescriptor.JSP_x_x. By 
default, if nothing is found, returns
+     *         JeeDescriptor.JSP_2_0.
+     */
+
     public static String resolveJspVersion( MavenProject project )
     {
         String version = findJspVersionInDependencies( project );
@@ -123,6 +175,13 @@
         return version == null ? JeeDescriptor.JSP_2_0 : version; //$NON-NLS-1$
     }
 
+    /**
+     * Search in dependencies a version of Servlet APIs (or of JEE APIs).
+     * 
+     * @param project The maven project descriptor.
+     * @return A SERVLET version as defined by constants 
JeeDescriptor.SERLVET_x_x. By default, if nothing is found,
+     *         returns JeeDescriptor.SERVLET_2_4.
+     */
     public static String resolveServletVersion( MavenProject project )
     {
         String version = findServletVersionInDependencies( project );
@@ -149,19 +208,20 @@
 
     private static String findEjbVersionInDependencies( MavenProject project )
     {
-        String[] artifactIds = new String[] { "ejb", "geronimo-spec-ejb" }; 
//$NON-NLS-1$
 
-        String version = IdeUtils.getDependencyVersion( artifactIds, 
project.getDependencies(), 3 );
+        String version =
+            IdeUtils.getArtifactVersion( new String[] { "ejb", "ejb-api", 
"geronimo-spec-ejb" },
+                                           project.getArtifacts(), 3 );
 
         // For new Geronimo APIs, the version of the artifact isn't the one of 
the spec
         if ( version == null )
         {
-            if ( IdeUtils.getDependencyVersion( new String[] { 
"geronimo-ejb_2.1_spec" }, project.getDependencies(), 3 ) != null )
+            if ( IdeUtils.getArtifactVersion( new String[] { 
"geronimo-ejb_2.1_spec" }, project.getArtifacts(), 3 ) != null )
                 return JeeDescriptor.EJB_2_1;
         }
         if ( version == null )
         {
-            if ( IdeUtils.getDependencyVersion( new String[] { 
"geronimo-ejb_3.0_spec" }, project.getDependencies(), 3 ) != null )
+            if ( IdeUtils.getArtifactVersion( new String[] { 
"geronimo-ejb_3.0_spec" }, project.getArtifacts(), 3 ) != null )
                 return JeeDescriptor.EJB_3_0;
         }
 
@@ -172,13 +232,13 @@
     {
         String[] artifactIds = new String[] { "javaee-api", "j2ee", 
"geronimo-spec-j2ee" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
-        String version = IdeUtils.getDependencyVersion( artifactIds, 
project.getDependencies(), 3 );
+        String version = IdeUtils.getArtifactVersion( artifactIds, 
project.getArtifacts(), 3 );
 
         // For new Geronimo APIs, the version of the artifact isn't the one of 
the spec
         if ( version == null )
         {
-            if ( IdeUtils.getDependencyVersion( new String[] { 
"geronimo-j2ee_1.4_spec" }, project.getDependencies(), 3 ) != null )
-                return JeeDescriptor.J2EE_1_4;
+            if ( IdeUtils.getArtifactVersion( new String[] { 
"geronimo-j2ee_1.4_spec" }, project.getArtifacts(), 3 ) != null )
+                return JeeDescriptor.JEE_1_4;
         }
 
         return version;
@@ -193,19 +253,19 @@
     {
         String[] artifactIds = new String[] { "servlet-api", "servletapi", 
"geronimo-spec-servlet" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
 
-        String version = IdeUtils.getDependencyVersion( artifactIds, 
project.getDependencies(), 3 );
+        String version = IdeUtils.getArtifactVersion( artifactIds, 
project.getArtifacts(), 3 );
 
         // For new Geronimo APIs, the version of the artifact isn't the one of 
the spec
         if ( version == null )
         {
-            if ( IdeUtils.getDependencyVersion( new String[] { 
"geronimo-servlet_2.4_spec" },
-                                                project.getDependencies(), 3 ) 
!= null )
+            if ( IdeUtils.getArtifactVersion( new String[] { 
"geronimo-servlet_2.4_spec" },
+                                                project.getArtifacts(), 3 ) != 
null )
                 return JeeDescriptor.SERVLET_2_4;
         }
         if ( version == null )
         {
-            if ( IdeUtils.getDependencyVersion( new String[] { 
"geronimo-servlet_2.5_spec" },
-                                                project.getDependencies(), 3 ) 
!= null )
+            if ( IdeUtils.getArtifactVersion( new String[] { 
"geronimo-servlet_2.5_spec" },
+                                                project.getArtifacts(), 3 ) != 
null )
                 return JeeDescriptor.SERVLET_2_5;
         }
 


Reply via email to