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