Oups ....

2009/1/26 Olivier Lamy <[email protected]>

> 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