Author: aheritier Date: Tue May 15 02:13:01 2007 New Revision: 538099 URL: http://svn.apache.org/viewvc?view=rev&rev=538099 Log: MECLIPSE-268 : Create a JEEUtils class to store all the logical about JEE versions and ...
Added: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java (with props) maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java (with props) Modified: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/IdeUtils.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?view=diff&rev=538099&r1=538098&r2=538099 ============================================================================== --- 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 Tue May 15 02:13:01 2007 @@ -35,10 +35,8 @@ import java.io.File; import java.io.IOException; -import java.util.HashMap; import java.util.Iterator; import java.util.List; -import java.util.Map; /** * @author <a href="mailto:[EMAIL PROTECTED]">Trygve Laugstøl</a> @@ -47,6 +45,18 @@ */ public class IdeUtils { + public static final String JAVA_1_1 = "1.1"; + + public static final String JAVA_1_2 = "1.2"; + + public static final String JAVA_1_3 = "1.3"; + + public static final String JAVA_1_4 = "1.4"; + + public static final String JAVA_5_0 = "5.0"; + + public static final String JAVA_6_0 = "6.0"; + /** * compiler plugin id. */ @@ -62,8 +72,7 @@ */ private static final String PROPERTY_TARGET = "target"; //$NON-NLS-1$ - public static String getCanonicalPath( File file ) - throws MojoExecutionException + public static String getCanonicalPath( File file ) throws MojoExecutionException { try { @@ -72,13 +81,15 @@ catch ( IOException e ) { throw new MojoExecutionException( Messages.getString( "cantcanonicalize", file //$NON-NLS-1$ - .getAbsolutePath() ), e ); + .getAbsolutePath() ), e ); } } /** * Returns a compiler plugin settings, considering also settings altered in plugin executions . - * @param project maven project + * + * @param project + * maven project * @return option value (may be null) */ public static String getCompilerPluginSetting( MavenProject project, String optionName ) @@ -92,35 +103,42 @@ } return value; } - + /** * Returns the source version configured for the compiler plugin. Returns the minimum version required to compile * both standard and test sources, if settings are different. - * @param project maven project + * + * @param project + * maven project * @return java source version */ public static String getCompilerSourceVersion( MavenProject project ) { return IdeUtils.getCompilerPluginSetting( project, PROPERTY_SOURCE ); } - + /** * Returns the target version configured for the compiler plugin. Returns the minimum version required to compile * both standard and test sources, if settings are different. - * @param project maven project + * + * @param project + * maven project * @return java target version */ public static String getCompilerTargetVersion( MavenProject project ) { return IdeUtils.getCompilerPluginSetting( project, PROPERTY_TARGET ); } - + /** * Extracts the version of the first matching dependency in the given list. * - * @param artifactIds artifact names to compare against for extracting version - * @param dependencies Collection of dependencies for our project - * @param len expected length of the version sub-string + * @param artifactIds + * artifact names to compare against for extracting version + * @param dependencies + * Collection of dependencies for our project + * @param len + * expected length of the version sub-string * @return */ public static String getDependencyVersion( String[] artifactIds, List dependencies, int len ) @@ -188,8 +206,8 @@ type = "java-source"; //$NON-NLS-1$ } - Artifact resolvedArtifact = artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, type, - classifier ); + Artifact resolvedArtifact = + artifactFactory.createArtifactWithClassifier( groupId, artifactId, version, type, classifier ); try { @@ -210,138 +228,67 @@ return resolvedArtifact; } - public static String resolveEjbVersion(MavenProject project) + public static String resolveEjbVersion( MavenProject project ) { - String[] artifactIds = new String[] { "ejb", "geronimo-spec-ejb" }; //$NON-NLS-1$ - - String version = IdeUtils.getDependencyVersion( artifactIds, project.getDependencies(), 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 ) - return "2.1"; - } - if ( version == null ) - { - if ( IdeUtils.getDependencyVersion( new String[] { "geronimo-ejb_3.0_spec" }, - project.getDependencies(), 3 ) != null ) - return "3.0"; - } - + String version = findEjbVersionInDependencies( project ); + if ( version == null ) { // No ejb dependency detected. Try to resolve the ejb // version from J2EE/JEE. - String versionJEE = resolveJ2eeVersionWithoutDefault(project); - - if ( versionJEE != null ) - { - // A J2EE version was found, now determine the ejb - // version to be used from it. - Map conversionTable = new HashMap(); - conversionTable.put( "1.3", "2.0" ); - conversionTable.put( "1.4", "2.1" ); - conversionTable.put( "5", "3.0" ); - if ( conversionTable.containsKey( versionJEE ) ) - { - version = (String) conversionTable.get( versionJEE ); - } - } + JeeDescriptor descriptor = + JeeUtils.getJeeDescriptorFromJeeVersion( findJ2eeVersionInDependencies( project ) ); + if ( descriptor != null ) + version = descriptor.getEjbVersion(); } - return version == null ? "2.1" : version; //$NON-NLS-1$ + return version == null ? JeeDescriptor.EJB_2_1 : version; //$NON-NLS-1$ } - public static String resolveJ2eeVersion(MavenProject project) + public static String resolveJ2eeVersion( MavenProject project ) { - String version = resolveJ2eeVersionWithoutDefault(project); - - return version == null ? "1.3" : version; //$NON-NLS-1$ - } + String version = findJ2eeVersionInDependencies( project ); - public static String resolveJ2eeVersionWithoutDefault(MavenProject project) - { - 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 ); - - // 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 "1.4"; - } - - return version; + return version == null ? JeeDescriptor.J2EE_1_4 : version; //$NON-NLS-1$ } - - public static String resolveJavaVersion(MavenProject project) + + public static String resolveJavaVersion( MavenProject project ) { String version = IdeUtils.getCompilerTargetVersion( project ); if ( version == null ) { version = IdeUtils.getCompilerSourceVersion( project ); } - + if ( "1.5".equals( version ) ) //$NON-NLS-1$ //$NON-NLS-2$ { - version = "5.0";// see MECLIPSE-47 eclipse only accept 5.0 as a valid version //$NON-NLS-1$ + version = IdeUtils.JAVA_5_0;// see MECLIPSE-47 eclipse only accept 5.0 as a valid version //$NON-NLS-1$ } else if ( "1.6".equals( version ) ) //$NON-NLS-1$ //$NON-NLS-2$ { - version = "6.0"; + version = IdeUtils.JAVA_6_0; } else if ( version != null && version.length() == 1 ) { version = version + ".0";// 5->5.0 6->6.0 7->7.0 //$NON-NLS-1$ } - - return version == null ? "1.4" : version; //$NON-NLS-1$ + + return version == null ? IdeUtils.JAVA_1_4 : version; //$NON-NLS-1$ } - public static String resolveServletVersion(MavenProject project) + public static String resolveServletVersion( MavenProject project ) { - 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 ); - - // 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 ) - return "2.4"; - } - if ( version == null ) - { - if ( IdeUtils.getDependencyVersion( new String[] { "geronimo-servlet_2.5_spec" }, - project.getDependencies(), 3 ) != null ) - return "2.5"; - } - + String version = findServletVersionInDependencies( project ); + if ( version == null ) { // No servlet dependency detected. Try to resolve the servlet // version from J2EE/JEE. - String versionJEE = resolveJ2eeVersionWithoutDefault(project); - - if ( versionJEE != null ) - { - // A J2EE version was found, now determine the servlet - // version to be used from it. - Map conversionTable = new HashMap(); - conversionTable.put( "1.3", "2.3" ); - conversionTable.put( "1.4", "2.4" ); - conversionTable.put( "5", "2.5" ); - if ( conversionTable.containsKey( versionJEE ) ) - { - version = (String) conversionTable.get( versionJEE ); - } - } + JeeDescriptor descriptor = + JeeUtils.getJeeDescriptorFromJeeVersion( findJ2eeVersionInDependencies( project ) ); + if ( descriptor != null ) + version = descriptor.getServletVersion(); } - return version == null ? "2.4" : version; //$NON-NLS-1$ + return version == null ? JeeDescriptor.SERVLET_2_4 : version; //$NON-NLS-1$ } public static String toRelativeAndFixSeparator( File basedir, File fileToAdd, boolean replaceSlashesWithDashes ) @@ -381,7 +328,9 @@ /** * Returns a compiler plugin settings from a list of plugins . - * @param project maven project + * + * @param project + * maven project * @return option value (may be null) */ private static String findCompilerPluginSettingInPlugins( List plugins, String optionName ) @@ -420,9 +369,69 @@ return value; } + 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 ); + + // 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 ) + return JeeDescriptor.EJB_2_1; + } + if ( version == null ) + { + if ( IdeUtils.getDependencyVersion( new String[] { "geronimo-ejb_3.0_spec" }, project.getDependencies(), 3 ) != null ) + return JeeDescriptor.EJB_3_0; + } + + return version; + } + + private static String findJ2eeVersionInDependencies( MavenProject project ) + { + 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 ); + + // 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; + } + + return version; + } + + private static String findServletVersionInDependencies( MavenProject project ) + { + 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 ); + + // 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 ) + return JeeDescriptor.SERVLET_2_4; + } + if ( version == null ) + { + if ( IdeUtils.getDependencyVersion( new String[] { "geronimo-servlet_2.5_spec" }, + project.getDependencies(), 3 ) != null ) + return JeeDescriptor.SERVLET_2_5; + } + + return version; + } + private static String getProjectName( String artifactId, String version, boolean addVersionToProjectName ) { - if( addVersionToProjectName ) + if ( addVersionToProjectName ) { return artifactId + '-' + version; } Added: 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?view=auto&rev=538099 ============================================================================== --- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java (added) +++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java Tue May 15 02:13:01 2007 @@ -0,0 +1,109 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.plugin.ide; + +public class JeeDescriptor +{ + private String jeeVersion; + + private String ejbVersion; + + private String servletVersion; + + private String jspVersion; + + public static final String J2EE_1_2 = "1.2"; + + public static final String J2EE_1_3 = "1.3"; + + public static final String J2EE_1_4 = "1.4"; + + public static final String J2EE_5_0 = "5.0"; + + public static final String EJB_1_1 = "1.1"; + + public static final String EJB_2_0 = "2.0"; + + public static final String EJB_2_1 = "2.1"; + + public static final String EJB_3_0 = "3.0"; + + public static final String SERVLET_2_2 = "2.2"; + + public static final String SERVLET_2_3 = "2.3"; + + public static final String SERVLET_2_4 = "2.4"; + + public static final String SERVLET_2_5 = "2.5"; + + public static final String JSP_1_1 = "1.1"; + + public static final String JSP_1_2 = "1.2"; + + public static final String JSP_2_0 = "2.0"; + + public static final String JSP_2_1 = "2.1"; + + /** + * @param jeeVersion + * @param ejbVersion + * @param servletVersion + * @param jspVersion + */ + public JeeDescriptor( String jeeVersion, String ejbVersion, String servletVersion, String jspVersion ) + { + super(); + this.jeeVersion = jeeVersion; + this.ejbVersion = ejbVersion; + this.servletVersion = servletVersion; + this.jspVersion = jspVersion; + } + + /** + * @return the ejbVersion + */ + public String getEjbVersion() + { + return ejbVersion; + } + + /** + * @return the jeeVersion + */ + public String getJeeVersion() + { + return jeeVersion; + } + + /** + * @return the jspVersion + */ + public String getJspVersion() + { + return jspVersion; + } + + /** + * @return the servletVersion + */ + public String getServletVersion() + { + return servletVersion; + } +} Propchange: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeDescriptor.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: 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?view=auto&rev=538099 ============================================================================== --- maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java (added) +++ maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java Tue May 15 02:13:01 2007 @@ -0,0 +1,84 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.maven.plugin.ide; + +import java.util.HashMap; +import java.util.Map; + +public class JeeUtils +{ + private static final Map jeeMap = new HashMap(); + + private static final Map ejbMap = new HashMap(); + + private static final Map servletMap = new HashMap(); + + private static final Map jspMap = new HashMap(); + + 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 ); + + } + + private static void addJEE( String jeeVersion, String ejbVersion, String servletVersion, String jspVersion ) + { + JeeDescriptor descriptor = new JeeDescriptor( jeeVersion, ejbVersion, servletVersion, jspVersion ); + jeeMap.put( jeeVersion, descriptor ); + ejbMap.put( ejbVersion, descriptor ); + servletMap.put( servletVersion, descriptor ); + jspMap.put( jspVersion, descriptor ); + } + + public final static JeeDescriptor getJeeDescriptorFromJeeVersion( String jeeVersion ) + { + if ( jeeMap.containsKey( jeeVersion ) ) + return (JeeDescriptor) jeeMap.get( jeeVersion ); + else + return null; + } + + public final static JeeDescriptor getJeeDescriptorFromEjbVersion( String ejbVersion ) + { + if ( ejbMap.containsKey( ejbVersion ) ) + return (JeeDescriptor) ejbMap.get( ejbVersion ); + else + return null; + } + + public final static JeeDescriptor getJeeDescriptorFromServletVersion( String servletVersion ) + { + if ( servletMap.containsKey( servletVersion ) ) + return (JeeDescriptor) servletMap.get( servletVersion ); + else + return null; + } + + public final static JeeDescriptor getJeeDescriptorFromJspVersion( String jspVersion ) + { + if ( jspMap.containsKey( jspVersion ) ) + return (JeeDescriptor) jspMap.get( jspVersion ); + else + return null; + } + +} Propchange: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/plugins/trunk/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/ide/JeeUtils.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision"