Hi,
Are you sure the units tests will pass for all ;-))
File x = new File(
"D:/platina/repository/com/google/gwt/gwt-dev/1.5.2/gwt-dev-1.5.2-windows.jar"
);
--
Olivier

2009/1/26  <[email protected]>:
> Revision 8909 Author ndeloof Date 2009-01-26 04:49:50 -0600 (Mon, 26 Jan
> 2009)
>
> Log Message
>
> Detect GWT version and adapt scripts arguments, main class ... according
>
> Modified Paths
>
> trunk/mojo/gwt-maven-plugin/pom.xml
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/GwtRuntime.java
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/shell/scripting/AbstractScriptWriter.java
>
> Added Paths
>
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/GwtVersion.java
> trunk/mojo/gwt-maven-plugin/src/test/java/org/codehaus/mojo/gwt/GwtRuntimeTest.java
> trunk/mojo/gwt-maven-plugin/src/test/resources/gwt-dev-1.4.62-fake.jar
> trunk/mojo/gwt-maven-plugin/src/test/resources/gwt-dev-1.5.3-fake.jar
>
> Diff
>
> Modified: trunk/mojo/gwt-maven-plugin/pom.xml (8908 => 8909)
>
> --- trunk/mojo/gwt-maven-plugin/pom.xml       2009-01-25 23:47:45 UTC (rev 
> 8908)
> +++ trunk/mojo/gwt-maven-plugin/pom.xml       2009-01-26 10:49:50 UTC (rev 
> 8909)
> @@ -172,6 +172,11 @@
>        <version>1.0-beta-1</version>
>        <scope>test</scope>
>      </dependency>
> +    <dependency>
> +     <groupId>bcel</groupId>
> +     <artifactId>bcel</artifactId>
> +     <version>5.1</version>
> +    </dependency>
>    </dependencies>
>    <profiles>
>      <profile>
>
> Modified:
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/GwtRuntime.java
> (8908 => 8909)
>
> ---
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/GwtRuntime.java
>        2009-01-25
> 23:47:45 UTC (rev 8908)
> +++
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/GwtRuntime.java
>        2009-01-26
> 10:49:50 UTC (rev 8909)
> @@ -20,7 +20,11 @@
>   */
>
>  import java.io.File;
> +import java.net.URL;
>
> +import org.apache.bcel.classfile.ClassParser;
> +import org.apache.bcel.classfile.JavaClass;
> +
>  /**
>   * @author ndeloof
>   * @version $Id$
> @@ -33,18 +37,70 @@
>      /** The gwt-dev-[platform] jar used at runtime */
>      private File gwtDevJar;
>
> +    /** The gwt version we are running */
> +    private GwtVersion version;
>
>      /**
> -     * @param gwtUserJar
> -     * @param gwtDevJar
> +     * @param gwtUserJar gwt user library
> +     * @param gwtDevJar gwt dev library
> +     * @param version gwt version
>       */
> -    public GwtRuntime( File gwtUserJar, File gwtDevJar )
> +    public GwtRuntime( File gwtUserJar, File gwtDevJar, String version )
>      {
>          super();
> +        this.version = GwtVersion.fromMavenVersion( version );
>          this.gwtUserJar = gwtUserJar;
>          this.gwtDevJar = gwtDevJar;
>      }
>
> +    /**
> +     * @param gwtUserJar gwt user library
> +     * @param gwtDevJar gwt dev library
> +     */
> +    public GwtRuntime( File gwtUserJar, File gwtDevJar )
> +    {
> +        this( gwtUserJar, gwtDevJar, readGwtDevVersion( gwtDevJar ) );
> +    }
> +
> +    /**
> +     * Read the GWT version from the About class present in gwt-dev JAR
> +     *
> +     * @param gwtDevJar gwt platform-dependent developer library
> +     * @return version declared in dev library
> +     */
> +    private static String readGwtDevVersion( File gwtDevJar )
> +    {
> +        try
> +        {
> +             URL about = new URL( "jar:" + gwtDevJar.toURL() +
> "!/com/google/gwt/dev/About.class" );
> +            ClassParser parser = new ClassParser( about.openStream(),
> "About.class" );
> +            JavaClass clazz = parser.parse();
> +            for ( org.apache.bcel.classfile.Field field : clazz.getFields()
> )
> +            {
> +                if ( "GWT_VERSION_NUM".equals( field.getName() ) )
> +                {
> +                    // Return the constant value between quotes
> +                    String constant = field.getConstantValue().toString();
> +                    return constant.substring( 1, constant.length() - 1 );
> +                }
> +            }
> +            throw new IllegalStateException( "Failed to retrieve
> GWT_VERSION_NUM in " + gwtDevJar.getName()
> +                + " 'About' class" );
> +
> +            // Can't get this to work as expected, always return maven
> dependency "1.5.3" :'-(
> +            // ClassLoader cl = new URLClassLoader( new URL[] {
> gwtDevJar.toURL() }, ClassLoader.getSystemClassLoader()
> +            // );
> +            // Class<?> about = cl.loadClass( "com.google.gwt.dev.About" );
> +            // Field versionNumber = about.getField( "GWT_VERSION_NUM" );
> +            // String version = versionNumber.get( about ).toString();
> +            // return version;
> +        }
> +        catch ( Exception e )
> +        {
> +            throw new IllegalStateException( "Failed to read gwt-dev
> version from " + gwtDevJar.getAbsolutePath() );
> +        }
> +    }
> +
>      public File getGwtUserJar()
>      {
>          return gwtUserJar;
> @@ -55,4 +111,9 @@
>          return gwtDevJar;
>      }
>
> +    public GwtVersion getVersion()
> +    {
> +        return version;
> +    }
> +
>  }
>
> Added:
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/GwtVersion.java
> (0 => 8909)
>
> ---
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/GwtVersion.java
>        
> (rev 0)
> +++
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/GwtVersion.java
>        2009-01-26
> 10:49:50 UTC (rev 8909)
> @@ -0,0 +1,83 @@
> +package org.codehaus.mojo.gwt;
> +
> +/**
> + * @author ndeloof
> + */
> +public enum GwtVersion
> +{
> +    ONE_DOT_FOUR
> +    {
> +        @Override
> +        public String getShellFQCN()
> +        {
> +            return "com.google.gwt.dev.GWTShell";
> +        }
> +    },
> +    ONE_DOT_FIVE
> +    {
> +        @Override
> +        public String getShellFQCN()
> +        {
> +            return "com.google.gwt.dev.GWTShell";
> +        }
> +    },
> +    ONE_DOT_SIX
> +    {
> +        @Override
> +        public String getShellFQCN()
> +        {
> +            return "com.google.gwt.dev.HostedMode";
> +        }
> +
> +        @Override
> +        public boolean fixEmbeddedTomcatClassloaderIssue()
> +        {
> +            return true;
> +        }
> +    },
> +    FUTURE
> +    {
> +        @Override
> +        public String getShellFQCN()
> +        {
> +            return "com.google.gwt.dev.HostedMode";
> +        }
> +
> +        @Override
> +        public boolean fixEmbeddedTomcatClassloaderIssue()
> +        {
> +            return true;
> +        }
> +    };
> +
> +    /**
> +     * @return fully qualified class name of the GWTShell "main" class
> +     */
> +    public abstract String getShellFQCN();
> +
> +    /**
> +     * @return <code>true</code> if this version fixes EmbeddedTomcatServer
> issue with SystemClassLoader
> +     * @see
> http://code.google.com/p/google-web-toolkit/issues/detail?id=1032
> +     */
> +    public boolean fixEmbeddedTomcatClassloaderIssue()
> +    {
> +        return false;
> +    }
> +
> +    static GwtVersion fromMavenVersion( String version )
> +    {
> +        if ( version.startsWith( "1.4" ) )
> +        {
> +            return ONE_DOT_FOUR;
> +        }
> +        if ( version.startsWith( "1.5" ) )
> +        {
> +            return ONE_DOT_FIVE;
> +        }
> +        if ( version.startsWith( "1.6" ) )
> +        {
> +            return ONE_DOT_SIX;
> +        }
> +        return FUTURE;
> +    }
> +}
>
> Modified:
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/shell/scripting/AbstractScriptWriter.java
> (8908 => 8909)
>
> ---
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/shell/scripting/AbstractScriptWriter.java
>      2009-01-25
> 23:47:45 UTC (rev 8908)
> +++
> trunk/mojo/gwt-maven-plugin/src/main/java/org/codehaus/mojo/gwt/shell/scripting/AbstractScriptWriter.java
>      2009-01-26
> 10:49:50 UTC (rev 8909)
> @@ -42,6 +42,7 @@
>      extends AbstractLogEnabled
>      implements ScriptWriter
>  {
> +
>      /**
>       * @plexus.requirement
>       */
> @@ -105,7 +106,7 @@
>          //
> "com.google.gwt.dev.GWTShell" );
>          String extra = getExtraJvmArgs( configuration );
>          writer.print( "\"" + getJavaCommand( configuration ) + "\" " +
> extra );
> -
> +
>          writer.print( " -Dcatalina.base=\"" +
> configuration.getTomcat().getAbsolutePath() + "\" " );
>          writer.print( " -cp \"" + getPlatformClasspathVariable() + "\" " );
>          //writer.print( " -jar \"" + booterJar + "\" " );
> @@ -120,10 +121,10 @@
>              }
>          }
>
> -
> +
>          //writer.print( " org.codehaus.mojo.gwt.fork.ForkBooter " );
>          //writer.print( " \"" + classpath.getAbsolutePath() + "\" " );
> -        writer.print( " com.google.gwt.dev.GWTShell" );
> +        writer.print( " " + runtime.getVersion().getShellFQCN() );
>          writer.print( " -gen \"" );
>          writer.print( configuration.getGen().getAbsolutePath() );
>          writer.print( "\" -logLevel " );
> @@ -148,6 +149,8 @@
>          return file;
>      }
>
> +
> +
>      /**
>       * Write compile script.
>       */
> @@ -230,7 +233,7 @@
>                  writer.print( "\"" + getJavaCommand( configuration ) + "\"
> " + extra );
>                  writer.print( " -cp \"" + configuration.getPluginJar() +
> "\" " );
>                  writer.print( " org.codehaus.mojo.gwt.fork.ForkBooter " );
> -                writer.print( " \"" + classpath.getAbsolutePath() + "\" "
> );
> +                writer.print( " \"" + classpath.getAbsolutePath() + "\" "
> );
>                  writer.print( " com.google.gwt.i18n.tools.I18NSync" );
>                  writer.print( " -out " );
>                  writer.print( "\"" + configuration.getGenerateDirectory() +
> "\"" );
> @@ -251,7 +254,7 @@
>
>                  writer.print( "\"" + getJavaCommand( configuration ) + "\"
> " + extra );
>                  writer.print( " -cp \"" + configuration.getPluginJar() +
> "\" " );
> -                writer.print( " org.codehaus.mojo.gwt.fork.ForkBooter " );
> +                writer.print( " org.codehaus.mojo.gwt.fork.ForkBooter " );
>                  writer.print( " \"" + classpath.getAbsolutePath() + "\" "
> );
>                  writer.print( " com.google.gwt.i18n.tools.I18NSync" );
>                  writer.print( " -createMessages " );
> @@ -282,7 +285,7 @@
>              targetPackageDirectory.mkdirs();
>          }
>      }
> -
> +
>      /**
>       * Write test scripts.
>       */
> @@ -357,7 +360,7 @@
>              }
>          }
>      }
> -
> +
>      protected String getJavaCommand( GwtShellScriptConfiguration
> configuration )
>          throws MojoExecutionException
>      {
> @@ -382,6 +385,6 @@
>          // use the same JVM as the one used to run Maven (the "java.home"
> one)
>          return System.getProperty( "java.home" ) + File.separator + "bin" +
> File.separator + "java";
>      }
> -
> -
> +
> +
>  }
> \ No newline at end of file
>
> Added:
> trunk/mojo/gwt-maven-plugin/src/test/java/org/codehaus/mojo/gwt/GwtRuntimeTest.java
> (0 => 8909)
>
> ---
> trunk/mojo/gwt-maven-plugin/src/test/java/org/codehaus/mojo/gwt/GwtRuntimeTest.java
>    
> (rev 0)
> +++
> trunk/mojo/gwt-maven-plugin/src/test/java/org/codehaus/mojo/gwt/GwtRuntimeTest.java
>    2009-01-26
> 10:49:50 UTC (rev 8909)
> @@ -0,0 +1,33 @@
> +package org.codehaus.mojo.gwt;
> +
> +import java.io.File;
> +
> +import junit.framework.TestCase;
> +
> +/**
> + * @author ndeloof
> + */
> +public class GwtRuntimeTest
> +    extends TestCase
> +{
> +    /**
> +     * Check version detection from GWT-dev Jar
> +     */
> +    public void testGwtVersion153Detection()
> +    {
> +        File x = new File(
> "D:/platina/repository/com/google/gwt/gwt-dev/1.5.2/gwt-dev-1.5.2-windows.jar"
> );
> +        File basedir = new File( System.getProperty( "basedir", "." ) );
> +        File gwtDevJar = new File( basedir,
> "target/test-classes/gwt-dev-1.5.3-fake.jar" );
> +        GwtRuntime gwt = new GwtRuntime( null, x );
> +        assertEquals( GwtVersion.ONE_DOT_FIVE, gwt.getVersion() );
> +    }
> +
> +    public void testGwtVersion1462Detection()
> +    {
> +        File basedir = new File( System.getProperty( "basedir", "." ) );
> +        File gwtDevJar = new File( basedir,
> "target/test-classes/gwt-dev-1.4.62-fake.jar" );
> +        GwtRuntime gwt = new GwtRuntime( null, gwtDevJar );
> +        assertEquals( GwtVersion.ONE_DOT_FOUR, gwt.getVersion() );
> +    }
> +
> +}
>
> Added:
> trunk/mojo/gwt-maven-plugin/src/test/resources/gwt-dev-1.4.62-fake.jar
>
> (Binary files differ)
>
> Property changes on:
> trunk/mojo/gwt-maven-plugin/src/test/resources/gwt-dev-1.4.62-fake.jar
> ___________________________________________________________________ Name:
> svn:mime-type + application/octet-stream
>
> Added: trunk/mojo/gwt-maven-plugin/src/test/resources/gwt-dev-1.5.3-fake.jar
>
> (Binary files differ)
>
> Property changes on:
> trunk/mojo/gwt-maven-plugin/src/test/resources/gwt-dev-1.5.3-fake.jar
> ___________________________________________________________________ Name:
> svn:mime-type + application/octet-stream
> ________________________________
>
> To unsubscribe from this list please visit:
>
> http://xircles.codehaus.org/manage_email

---------------------------------------------------------------------
To unsubscribe from this list, please visit:

    http://xircles.codehaus.org/manage_email


Reply via email to