]> source.dussan.org Git - vaadin-framework.git/commitdiff
Merged #8105 Compile core files and test files to separate folders
authorJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Mon, 16 Jan 2012 07:01:28 +0000 (07:01 +0000)
committerJohannes Dahlström <johannes.dahlstrom@vaadin.com>
Mon, 16 Jan 2012 07:01:28 +0000 (07:01 +0000)
svn changeset:22636/svn branch:6.8

build/build.properties
build/build.xml
src/com/vaadin/launcher/util/BrowserLauncher.java [deleted file]
tests/server-side/com/vaadin/tests/VaadinClasses.java [new file with mode: 0644]
tests/testbench/com/vaadin/launcher/util/BrowserLauncher.java [new file with mode: 0644]
tests/testbench/com/vaadin/tests/Components.java
tests/testbench/com/vaadin/tests/VaadinClasses.java [deleted file]

index 82378c6dac59d0a306adc0e9b387fb4c19a6b29c..9e126a44798ca58ed5c3c7fb7d016dbb279149c0 100644 (file)
@@ -2,7 +2,7 @@ result-path=build/result
 checkout-path=build/checkout
 product-file=vaadin
 product-name=Vaadin
-toolkit-package=com/vaadin
+vaadin-package=com/vaadin
 gwt-dir=lib/core/gwt
 
 # repository into which Maven snapshots should be published 
index 8c3ee1d04ad996a54dd18ff32a03b14ec6902d0a..1fdcc0ee25f932281b4e50c163e2fead0e27502f 100644 (file)
              uri="antlib:org.apache.maven.artifact.ant"
              classpathref="maven-ant-tasks.classpath" />
 
+       
     <!-- Clean results - - - - - - - - - - - - - - - - - - - - - - - - - -->
-    <target name="clean-result" depends="">
-        <property file="build/build.properties" />
+    <target name="clean-result" depends="build.properties">
 
         <!-- Clean build result directory. -->
         <delete dir="${result-path}" includes="**/*" followsymlinks="false" defaultexcludes="false" includeemptydirs="true" failonerror="false"/>
     </target>
 
+       <target name="build.properties">
+        <property file="build/build.properties" />
+               
+        <property file="build/VERSION.properties" />
+        <property file="build/GWT-VERSION.properties" />
+
+               <!-- result source and classes folders -->
+               <property name="result-src-core" value="${result-path}/src/core"/>
+               <property name="result-src-junit" value="${result-path}/src/junit"/>
+               <property name="result-src-testbench" value="${result-path}/src/testbench"/>
+               <property name="result-classes-core" value="${result-path}/classes/core"/>
+               <property name="result-classes-junit" value="${result-path}/classes/junit"/>
+               <property name="result-classes-testbench" value="${result-path}/classes/testbench"/>
+               <!-- Folder where Emma instrumented classes are placed (if Emma is used)-->
+               <property name="result-classes-core-for-emma-war" value="${result-path}/classes/emma-war"/>
+               <property name="result-classes-core-for-emma-junit" value="${result-path}/classes/emma-junit"/>
+
+       </target>
     <target name="clean-all" depends="clean-result">
     </target>
 
     <!-- Initialization - - - - - - - - - - - - - - - - - - - - - - - - - - -->
     <!-- ================================================================== -->
 
-    <target name="init" depends="check-java-version">
+    <target name="init" depends="check-java-version, build.properties">
         <!-- Current timestamp in different formats. -->
         <tstamp>
             <format property="build.date" pattern="yyyy-MM-dd"/>
             <format property="build.date.compact" pattern="yyyyMMdd"/>
         </tstamp>
 
-        <property file="build/VERSION.properties" />
-        <property file="build/GWT-VERSION.properties" />
-
         <antcontrib:propertyregex property="version.major" input="${version}" regexp="([^\.]*)\.([^\.]*)\.([^\.]*)" select="\1"/>
         <antcontrib:propertyregex property="version.minor" input="${version}" regexp="([^\.]*)\.([^\.]*)\.([^\.]*)" select="\2"/>
         <antcontrib:propertyregex property="version.revision" input="${version}" regexp="([^\.]*)\.([^\.]*)\.([^\.]*)" select="\3"/>
         <echo>Full Version: ${version.full}</echo>
 
         <!-- Other properties -->
-        <property file="build/build.properties" />
         <property file="build/html-style.properties" />
 
-        <echo>Vaadin package is: ${toolkit-package}</echo>
+        <echo>Vaadin package is: ${vaadin-package}</echo>
 
         <!-- Create result dir unless already exists -->
         <mkdir dir="${result-path}" />
 
         <!-- Create dirs that might be used by the test coverage generation -->
-       <mkdir dir="${result-path}/war_emma_classes" />
-       <mkdir dir="${result-path}/junit_emma_classes" />
+       <mkdir dir="${result-classes-core-for-emma-war}" />
+       <mkdir dir="${result-classes-core-for-emma-junit}" />
        <mkdir dir="${result-path}/coverage" />
 
         <echo>We are using gwt version ${gwt-version}.</echo>
 
         <echo>Adding test class files and resources and launcher configuration.</echo>
         <copy todir="${output-dir}/WebContent/WEB-INF/classes">
-            <fileset dir="${result-path}/classes">
-                <include name="${toolkit-package}/tests/**/*" />
-                <include name="${toolkit-package}/launcher/**" />
+            <fileset dir="${result-classes-testbench}">
+                <include name="${vaadin-package}/tests/**/*" />
+                <include name="${vaadin-package}/launcher/**" />
+            </fileset>
+            <fileset dir="${result-classes-junit}">
+               <!-- VaadinClasses is used by both JUnit and TestBench tests -->
+                <include name="**/VaadinClasses*.class" />
             </fileset>
             <!-- test resources -->
             <fileset dir="tests/testbench">
-                <include name="${toolkit-package}/tests/**/*" />
+                <include name="${vaadin-package}/tests/**/*" />
                 <!-- Pre-processed versions of these copied above -->
                 <exclude name="**/*.java" />
                 <exclude name="**/*.html" />
 
                <!-- Include files required by the DemoLauncher/DevelopmentServerLauncher -->
             <fileset dir="tests/testbench">
-                       <include name="${toolkit-package}/launcher/jetty-webdefault.xml" />
-                       <include name="${toolkit-package}/launcher/keystore" />
+                       <include name="${vaadin-package}/launcher/jetty-webdefault.xml" />
+                       <include name="${vaadin-package}/launcher/keystore" />
             </fileset>
         </copy>
 
     <!-- However, since compiling the server-side is required by the client-side -->
     <!-- compilation, the server-side will actually be built before it.          -->
     <target name="build"
-            depends="compile-server-side, compile-client-side, vaadin.jar, vaadin-sources.jar"
+            depends="compile-server-side, compile-tests, compile-client-side, vaadin.jar, vaadin-sources.jar"
             description="Build package required files, without packing them.">
     </target>
 
-    <target name="compile-server-side" depends="compile-java, webcontent"/>
+    <target name="compile-server-side" depends="compile-core, webcontent"/>
 
     <!-- Copy and preprocess sources for packaging 
     NOTE: Replaces <version></version> tags with build version tag for some "textual" files
          * tests/client-side (Client-side JUnit test cases)
 
         These are copied to 
-         * {$result-path}/src/core
-         * {$result-path}/src/tests
-         * {$result-path}/src/junit
-
+         * ${result-path}/src/core
+         * ${result-path}/src/tests
+         * ${result-path}/src/junit
+
+        And compiled to 
+         * ${result-path}/classes/core
+         * ${result-path}/classes/tests
+         * ${result-path}/classes/junit
+         
         Java/HTML/CSS/XML files are filtered so the license is added and the version is set. 
         Other files are just copied.
         -->
         
         <loadfile property="VaadinApache2LicenseForJavaFiles" srcFile="build/VaadinApache2LicenseForJavaFiles.txt" />
-        <mkdir dir="${result-path}/src" />
         
-        <mkdir dir="${result-path}/src/core" />
-        <mkdir dir="${result-path}/src/tests" />
-        <mkdir dir="${result-path}/src/junit" />
+        <mkdir dir="${result-path}/src" />
+        <mkdir dir="${result-src-core}" />
+        <mkdir dir="${result-src-testbench}" />
+        <mkdir dir="${result-src-junit}" />
 
         <patternset id="preprocessable-files">
             <include name="**/*.java" />
 
         <echo>Copying src directory and processing copied files.</echo>
         <echo>Replacing &lt;version&gt; tag with build version for java/html/css/xml files.</echo>
-        <copy todir="${result-path}/src/core" overwrite="yes">
+        <copy todir="${result-src-core}" overwrite="yes">
             <filterset refid="version-and-license"/>
             <filterset refid="pre-css-style"/>
             <fileset dir="src">
             </fileset>
         </copy>
 
-        <copy todir="${result-path}/src/tests">
+        <copy todir="${result-src-testbench}">
             <filterset refid="version-and-license"/>
             <fileset dir="tests/testbench">
                 <patternset refid="preprocessable-files" />
             </fileset>
         </copy>
-        <copy todir="${result-path}/src/junit">
+        <copy todir="${result-src-junit}">
             <filterset refid="version-and-license"/>
             <fileset dir="tests/server-side">
                 <patternset refid="preprocessable-files" />
 
         <!-- Add other files such as images, these are not filtered or processed by fixcrlf task -->
         <echo>Copying non java/html/css/xml files such as images.</echo>
-        <copy todir="${result-path}/src/core">
+        <copy todir="${result-src-core}">
             <fileset dir="src">
                 <patternset refid="non-preprocessable-files" />
             </fileset>
         </copy>
-        <copy todir="${result-path}/src/tests">
+        <copy todir="${result-src-testbench}">
             <fileset dir="tests/testbench">
                 <patternset refid="non-preprocessable-files" />
             </fileset>
         </copy>
-        <copy todir="${result-path}/src/junit">
+        <copy todir="${result-src-junit}">
             <fileset dir="tests/server-side">
                 <patternset refid="non-preprocessable-files" />
             </fileset>
         </copy>
 
         <!-- Add WebContent -->
-        <echo>Adding VAADIN/themes, demo and hsqldb.jar files.</echo>
+        <echo>Adding VAADIN/themes and META-INF</echo>
         <copy todir="${output-dir}/WebContent">
             <fileset dir="WebContent">
                 <exclude name="**/.svn" />
                 <!-- TODO check what is necessary -->
-                <include name="demo/**/*" />
                 <include name="WEB-INF/lib/hsqldb.jar" />
                 <include name="VAADIN/themes/**/*" />
                 <include name="META-INF/**/*" />
         </copy>
     </target>
 
-    <target name="compile-java" depends="init, check-servlet-version, webcontent">
+    <target name="compile-core" depends="init, preprocess-src">
         <echo>Compiling src (server-side)</echo>
-        
-        <!-- Compile all sources at the same time as they depend on each other -->
-        <mkdir dir="${result-path}/classes" />
-        <javac source="1.5" target="1.5" classpathref="compile.classpath.server-side" destdir="${result-path}/classes" debug="true" encoding="UTF-8">
-             <src path="${result-path}/src/core"/>
-             <src path="${result-path}/src/tests"/>
-             <src path="${result-path}/src/junit"/>
+       <!-- Compile core sources first as the other sources depend on these -->
+        <mkdir dir="${result-classes-core}" />
+        <javac source="1.5" target="1.5" classpathref="compile.classpath.server-side" destdir="${result-classes-core}" debug="true" encoding="UTF-8" includeantruntime="false">
+            <src path="${result-src-core}"/>
+        </javac>
+    </target>
+       
+    <target name="compile-tests" depends="compile-core">
+        <echo>Compiling src (Server and client side JUnit tests)</echo>
+       <!-- Compile server and client side JUnit tests -->
+        <mkdir dir="${result-classes-junit}" />
+        <javac source="1.5" target="1.5" classpathref="compile.classpath.server-side" destdir="${result-classes-junit}" debug="true" encoding="UTF-8" includeantruntime="false">
+               <classpath path="${result-classes-core}"></classpath>
+            <src path="${result-src-junit}"/>
+        </javac>
+       
+        <echo>Compiling src (TestBench tests)</echo>
+       <!-- Compile TestBench tests -->
+        <mkdir dir="${result-classes-testbench}" />
+        <javac source="1.5" target="1.5" classpathref="compile.classpath.server-side" destdir="${result-classes-testbench}" debug="true" encoding="UTF-8" includeantruntime="false">
+               <classpath path="${result-classes-junit}"></classpath>
+               <classpath path="${result-classes-core}"></classpath>
+            <src path="${result-src-testbench}"/>
         </javac>
+       
     </target>
 
     <target name="compile-helpers" depends="init">
-        <javac source="1.5" target="1.5" srcdir="build/buildhelpers" classpath="build/smartsprites/lib/smartsprites-0.2.3-itmill.jar"/>
+        <javac source="1.5" target="1.5" srcdir="build/buildhelpers" classpath="build/smartsprites/lib/smartsprites-0.2.3-itmill.jar" includeantruntime="false"/>
     </target>
     
     <target name="defaulttheme" depends="init, compile-helpers">
     </target>
 
     <!-- The widgetset generator is currently compiled along with rest of server-side Java. -->    
-    <target name="compile-widgetset-generator" depends="init, preprocess-src, compile-java"/>
+    <target name="compile-widgetset-generator" depends="compile-core"/>
 
 
     <path id="widgetset-compile-classpath">
         <pathelement location="${lib-gwt-dev}" />
         <pathelement location="${lib-gwt-validation}" />
         <pathelement location="${lib-gwt-validation-src}" />
-        <pathelement location="${result-path}/classes" />
-        <pathelement location="${result-path}/src/core" />
+        <pathelement location="${result-classes-core}" />
+        <pathelement location="${result-src-core}" />
     </path>
     
     <target name="compile-widgetset" description="Compiles the widgetset given as the first parameter">
     </target>
 
     <!-- Definitions for building local components, i.e., not for an installation package. -->
-    <target name="init-nonpackage">
-        <property file="build/VERSION.properties" />
-        <property file="build/GWT-VERSION.properties" />
-
-        <property file="build/build.properties" />
-
+    <target name="init-nonpackage" depends="build.properties">
         <!-- Definitions for building the client-side. -->
         <property name="widgetsets-output-dir" value="WebContent/VAADIN/widgetsets" />
 
         <echo file="${output-dir}/META-INF/GWT-VERSION">${gwt-version}</echo> 
                
                <emma enabled="${emma.enabled}" >
-                       <instr instrpath="${result-path}/classes"
-                               destdir="${result-path}/war_emma_classes"
+                       <instr instrpath="${result-classes-core}"
+                               destdir="${result-classes-core-for-emma-war}"
                                mode="copy"
                                metadatafile="${result-path}/war.es"
                                merge="false"
                        >
                                <filter includes="com.vaadin.*" />
                                <filter excludes="com.vaadin.terminal.gwt.*" />
-                               <filter excludes="com.vaadin.tests.*" />
-                               <filter excludes="*Test*" />
-                               <filter excludes="com.vaadin.launcher.*" />
-                               <filter excludes="com.vaadin.data.util.sqlcontainer.*" />
                        </instr>
                </emma>         
        
                 <attribute name="Bundle-Version" value="${version.full}" />
             </manifest>
             <!-- Include any instrumented class files before the normal classes -->
-            <fileset dir="${result-path}/war_emma_classes">
-                <patternset>
-                    <exclude name="${toolkit-package}/tests/**"/>
-                    <exclude name="${toolkit-package}/launcher/**" />
-                </patternset>
-            </fileset>
-            <fileset dir="${result-path}/classes">
-                <patternset>
-                    <exclude name="${toolkit-package}/tests/**"/>
-                    <exclude name="${toolkit-package}/launcher/**" />
-                </patternset>
-            </fileset>
+            <fileset dir="${result-classes-core-for-emma-war}" />
+            <fileset dir="${result-classes-core}"/>
             <!-- add sources -->
-            <fileset dir="${result-path}/src/core">
-                <patternset>
-                    <exclude name="${toolkit-package}/launcher/**" />
-                </patternset>
-            </fileset>
+            <fileset dir="${result-src-core}"/>
             <fileset dir="${output-dir}/WebContent">
                 <patternset>
                     <include name="VAADIN/widgetsets/com.vaadin.terminal.gwt.DefaultWidgetSet/**/*" />
 
     <target name="vaadin-sources.jar" depends="init">
         <jar file="${result-path}/${lib-sources-jar-name}" compress="true">
-            <fileset dir="${result-path}/src/core">
+            <fileset dir="${result-src-core}">
                 <patternset>
                     <include name="**/*.java" />
                 </patternset>
         <property name="javadoc.destdir" value="${output-dir}/WebContent/docs/api"/>
         
         <javadoc destdir="${javadoc.destdir}" author="true" version="true" use="true" windowtitle="${product-name}" classpathref="compile.classpath.client-side">
-            <packageset dir="${result-path}/src/core">
-                <include name="${toolkit-package}/**" />
-            </packageset>
+            <packageset dir="${result-src-core}"/>
             <doctitle>${javadoc.doctitle}</doctitle>
             <!-- <header><![CDATA[<script type="text/javascript" src=".html-style/style.js"></script>]]></header> -->
             <bottom>${javadoc.bottom}</bottom>
 
 
     <!-- Initialize a nightly build. -->
-    <target name="nightly-init">
+    <target name="nightly-init" depends="build.properties">
 
         <!-- Mandatory parameters. -->
         <fail unless="build.number" message="The build.number property must be defined."/>
         <!-- Optional parameters. -->
         <property name="build.tag" value="dev"/>
 
-        <property file="build/VERSION.properties" />
-
         <echo>Base version: ${version}</echo>
         <echo>Build number: ${build.number}</echo>
         <echo>Build tag: ${build.tag}</echo>
     <!-- Automated tests.                                                   -->
     <!-- ================================================================== -->
 
-    <target name="tests" depends="compile-java, internal-package-war">
+    <target name="tests" depends="compile-tests, internal-package-war">
         <!-- Run all different types of tests in parallel to decrease testing time -->
         <parallel threadcount="3">
                <sequential>
                                        <include name="*.em" />
                                </fileset>
                        </merge>
-                       <report sourcepath="${result-path}/src/core" >
+                       <report sourcepath="${result-src-core}" >
                                <fileset dir="${result-path}" >
                                        <include name="combined.es" />
                                </fileset>
     </target>
     
     <!-- Assumes java classes have been compiled but depends does not work out well as this is run from a <parallel> task-->
-    <target name="server-side-tests" unless="tests.serverside.skip">
+    <target name="server-side-tests" unless="tests.serverside.skip" depends="compile-tests">
                <emma enabled="${emma.enabled}" >
-                       <instr instrpath="${result-path}/classes"
+                       <instr instrpath="${result-classes-core}"
+                               destdir="${result-classes-core-for-emma-junit}"
                                mode="copy"
-                               destdir="${result-path}/junit_emma_classes"
                                metadatafile="${result-path}/unittests.em"
-                               merge="false"
-                       >
+                           merge="false"
+                       >
                                <filter includes="com.vaadin.*" />
-                               <filter excludes="com.vaadin.tests.*" />
-                               <filter excludes="com.vaadin.terminal.gwt.client.*" />
-                               <filter excludes="com.vaadin.terminal.gwt.widgetsetutils.*" />
-                               <filter excludes="*Test*" />
-                               <filter excludes="com.vaadin.launcher.*" />
+                               <filter excludes="com.vaadin.terminal.gwt.*" />
                        </instr>
                </emma>                 
         <junit printsummary="yes"> 
             <classpath> 
-                <pathelement path="${result-path}/junit_emma_classes" />
-                <pathelement path="${result-path}/classes" />
+                <pathelement path="${result-classes-core-for-emma-junit}" />
+                <pathelement path="${result-classes-core}" />
+                <pathelement path="${result-classes-junit}" />
                <path refid="emma.lib" />
                 <path refid="compile.classpath"/>
             </classpath>
                <jvmarg value="-Demma.coverage.out.file=../${result-path}/unittests.ec" />
 
             <batchtest fork="yes">
-                <fileset dir="tests/server-side" includes="**/*.java" excludes="**/Abstract*.java" />
+                <fileset dir="tests/server-side" includes="**/*.java" excludes="**/Abstract*.java,**/VaadinClasses.java" />
                 <fileset dir="tests/client-side" includes="**/*.java" excludes="**/Abstract*.java" />
             </batchtest>
         </junit>
                <emma enabled="${emma.enabled}" >
-                       <report sourcepath="${result-path}/src/core" >
+                       <report sourcepath="${result-src-core}" >
                                <fileset dir="${result-path}" >
                                        <include name="unittests.*" />
                                </fileset>
         </ant>
        
                <emma enabled="${emma.enabled}" >
-                       <report sourcepath="${result-path}/src/core" >
+                       <report sourcepath="${result-src-core}" >
                                <fileset dir="${result-path}" >
                                        <include name="war.*" />
                                </fileset>
diff --git a/src/com/vaadin/launcher/util/BrowserLauncher.java b/src/com/vaadin/launcher/util/BrowserLauncher.java
deleted file mode 100644 (file)
index 55692cb..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-/* \r
-@VaadinApache2LicenseForJavaFiles@\r
- */\r
-\r
-package com.vaadin.launcher.util;\r
-\r
-import java.io.BufferedInputStream;\r
-import java.io.BufferedReader;\r
-import java.io.File;\r
-import java.io.IOException;\r
-import java.io.InputStreamReader;\r
-\r
-/**\r
- * This class opens default browser for DemoLauncher class. Default browser is\r
- * detected by the operating system.\r
- * \r
- */\r
-public class BrowserLauncher {\r
-\r
-    /**\r
-     * Open browser on specified URL.\r
-     * \r
-     * @param url\r
-     */\r
-    public static void openBrowser(String url) {\r
-\r
-        final Runtime runtime = Runtime.getRuntime();\r
-        boolean started = false;\r
-\r
-        final String os = System.getProperty("os.name", "windows")\r
-                .toLowerCase();\r
-\r
-        // Linux\r
-        if (os.indexOf("linux") >= 0) {\r
-            // See if the default browser is Konqueror by resolving the symlink.\r
-            boolean isDefaultKonqueror = false;\r
-            try {\r
-                // Find out the location of the x-www-browser link from path.\r
-                Process process = runtime.exec("which x-www-browser");\r
-                BufferedInputStream ins = new BufferedInputStream(\r
-                        process.getInputStream());\r
-                BufferedReader bufreader = new BufferedReader(\r
-                        new InputStreamReader(ins));\r
-                String defaultLinkPath = bufreader.readLine();\r
-                ins.close();\r
-\r
-                // The path is null if the link did not exist.\r
-                if (defaultLinkPath != null) {\r
-                    // See if the default browser is Konqueror.\r
-                    File file = new File(defaultLinkPath);\r
-                    String canonical = file.getCanonicalPath();\r
-                    if (canonical.indexOf("konqueror") != -1) {\r
-                        isDefaultKonqueror = true;\r
-                    }\r
-                }\r
-            } catch (IOException e1) {\r
-                // The symlink was probably not found, so this is ok.\r
-            }\r
-\r
-            // Try x-www-browser, which is symlink to the default browser,\r
-            // except if we found that it is Konqueror.\r
-            if (!started && !isDefaultKonqueror) {\r
-                try {\r
-                    runtime.exec("x-www-browser " + url);\r
-                    started = true;\r
-                } catch (final IOException e) {\r
-                }\r
-            }\r
-\r
-            // Try firefox\r
-            if (!started) {\r
-                try {\r
-                    runtime.exec("firefox " + url);\r
-                    started = true;\r
-                } catch (final IOException e) {\r
-                }\r
-            }\r
-\r
-            // Try mozilla\r
-            if (!started) {\r
-                try {\r
-                    runtime.exec("mozilla " + url);\r
-                    started = true;\r
-                } catch (final IOException e) {\r
-                }\r
-            }\r
-\r
-            // Try konqueror\r
-            if (!started) {\r
-                try {\r
-                    runtime.exec("konqueror " + url);\r
-                    started = true;\r
-                } catch (final IOException e) {\r
-                }\r
-            }\r
-        }\r
-\r
-        // OS X\r
-        if (os.indexOf("mac os x") >= 0) {\r
-\r
-            // Try open\r
-            if (!started) {\r
-                try {\r
-                    runtime.exec("open " + url);\r
-                    started = true;\r
-                } catch (final IOException e) {\r
-                }\r
-            }\r
-        }\r
-\r
-        // Try cmd /start command on windows\r
-        if (os.indexOf("win") >= 0) {\r
-            if (!started) {\r
-                try {\r
-                    runtime.exec("cmd /c start " + url);\r
-                    started = true;\r
-                } catch (final IOException e) {\r
-                }\r
-            }\r
-        }\r
-\r
-        if (!started) {\r
-            System.out.println("Failed to open browser. Please go to " + url);\r
-        }\r
-    }\r
-\r
-}\r
diff --git a/tests/server-side/com/vaadin/tests/VaadinClasses.java b/tests/server-side/com/vaadin/tests/VaadinClasses.java
new file mode 100644 (file)
index 0000000..e02c4f0
--- /dev/null
@@ -0,0 +1,236 @@
+package com.vaadin.tests;
+
+import java.io.File;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
+import java.net.JarURLConnection;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.jar.JarEntry;
+
+import org.junit.Test;
+
+import com.vaadin.Application;
+import com.vaadin.ui.Component;
+import com.vaadin.ui.ComponentContainer;
+import com.vaadin.ui.CustomComponent;
+import com.vaadin.ui.DragAndDropWrapper;
+import com.vaadin.ui.HorizontalSplitPanel;
+import com.vaadin.ui.LoginForm;
+import com.vaadin.ui.PopupView;
+import com.vaadin.ui.SplitPanel;
+import com.vaadin.ui.VerticalSplitPanel;
+import com.vaadin.ui.Window;
+
+@SuppressWarnings("deprecation")
+public class VaadinClasses {
+
+    public static void main(String[] args) {
+        System.out.println("ComponentContainers");
+        System.out.println("===================");
+        for (Class<? extends ComponentContainer> c : getComponentContainers()) {
+            System.out.println(c.getName());
+        }
+        System.out.println();
+        System.out.println("Components");
+        System.out.println("==========");
+        for (Class<? extends Component> c : getComponents()) {
+            System.out.println(c.getName());
+        }
+        System.out.println();
+        System.out.println("Server side classes");
+        System.out.println("===================");
+        for (Class<?> c : getAllServerSideClasses()) {
+            System.out.println(c.getName());
+        }
+    }
+
+    public static List<Class<? extends Component>> getComponents() {
+        try {
+            return findClasses(Component.class, "com.vaadin.ui");
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static List<Class<? extends Object>> getAllServerSideClasses() {
+        try {
+            return findClassesNoTests(Object.class, "com.vaadin", new String[] {
+                    "com.vaadin.tests", "com.vaadin.terminal.gwt.client" });
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static List<Class<? extends ComponentContainer>> getComponentContainers() {
+        try {
+            return findClasses(ComponentContainer.class, "com.vaadin.ui");
+        } catch (IOException e) {
+            e.printStackTrace();
+            return null;
+        }
+    }
+
+    public static List<Class<? extends ComponentContainer>> getComponentContainersSupportingAddRemoveComponent() {
+        List<Class<? extends ComponentContainer>> classes = getComponentContainers();
+        classes.remove(PopupView.class);
+        classes.remove(CustomComponent.class);
+        classes.remove(DragAndDropWrapper.class);
+        classes.remove(CustomComponent.class);
+        classes.remove(LoginForm.class);
+
+        return classes;
+    }
+
+    public static List<Class<? extends ComponentContainer>> getComponentContainersSupportingUnlimitedNumberOfComponents() {
+        List<Class<? extends ComponentContainer>> classes = getComponentContainersSupportingAddRemoveComponent();
+        classes.remove(SplitPanel.class);
+        classes.remove(VerticalSplitPanel.class);
+        classes.remove(HorizontalSplitPanel.class);
+        classes.remove(Window.class);
+
+        return classes;
+    }
+
+    @SuppressWarnings({ "unchecked", "rawtypes" })
+    public static List<Class<?>> getBasicComponentTests() {
+        try {
+            // Given as name to avoid dependencies on testbench source folder
+            return (List) findClasses(
+                    Class.forName("com.vaadin.tests.components.AbstractComponentTest"),
+                    "com.vaadin.tests.components");
+        } catch (Exception e) {
+            e.printStackTrace();
+            return null;
+        }
+
+    }
+
+    private static <T> List<Class<? extends T>> findClasses(Class<T> baseClass,
+            String basePackage) throws IOException {
+        return findClasses(baseClass, basePackage, new String[] {});
+    }
+
+    private static <T> List<Class<? extends T>> findClasses(Class<T> baseClass,
+            String basePackage, String[] ignoredPackages) throws IOException {
+        List<Class<? extends T>> classes = new ArrayList<Class<? extends T>>();
+        String basePackageDirName = "/" + basePackage.replace('.', '/');
+        URL location = Application.class.getResource(basePackageDirName);
+        if (location.getProtocol().equals("file")) {
+            try {
+                File f = new File(location.toURI());
+                if (!f.exists()) {
+                    throw new IOException("Directory " + f.toString()
+                            + " does not exist");
+                }
+                findPackages(f, basePackage, baseClass, classes,
+                        ignoredPackages);
+            } catch (URISyntaxException e) {
+                throw new IOException(e.getMessage());
+            }
+        } else if (location.getProtocol().equals("jar")) {
+            JarURLConnection juc = (JarURLConnection) location.openConnection();
+            findPackages(juc, basePackage, baseClass, classes);
+        }
+
+        Collections.sort(classes, new Comparator<Class<? extends T>>() {
+
+            public int compare(Class<? extends T> o1, Class<? extends T> o2) {
+                return o1.getName().compareTo(o2.getName());
+            }
+
+        });
+        return classes;
+    }
+
+    private static <T> List<Class<? extends T>> findClassesNoTests(
+            Class<T> baseClass, String basePackage, String[] ignoredPackages)
+            throws IOException {
+        List<Class<? extends T>> classes = findClasses(baseClass, basePackage,
+                ignoredPackages);
+        List<Class<? extends T>> classesNoTests = new ArrayList<Class<? extends T>>();
+        for (Class<? extends T> clazz : classes) {
+            if (!clazz.getName().contains("Test")) {
+                boolean testPresent = false;
+                for (Method method : clazz.getMethods()) {
+                    if (method.isAnnotationPresent(Test.class)) {
+                        testPresent = true;
+                        break;
+                    }
+                }
+                if (!testPresent) {
+                    classesNoTests.add(clazz);
+                }
+            }
+        }
+        return classesNoTests;
+    }
+
+    private static <T> void findPackages(JarURLConnection juc,
+            String javaPackage, Class<T> baseClass,
+            Collection<Class<? extends T>> result) throws IOException {
+        String prefix = "com/vaadin/ui";
+        Enumeration<JarEntry> ent = juc.getJarFile().entries();
+        while (ent.hasMoreElements()) {
+            JarEntry e = ent.nextElement();
+            if (e.getName().endsWith(".class")
+                    && e.getName().startsWith(prefix)) {
+                String fullyQualifiedClassName = e.getName().replace('/', '.')
+                        .replace(".class", "");
+                addClassIfMatches(result, fullyQualifiedClassName, baseClass);
+            }
+        }
+    }
+
+    private static <T> void findPackages(File parent, String javaPackage,
+            Class<T> baseClass, Collection<Class<? extends T>> result,
+            String[] ignoredPackages) {
+        for (String ignoredPackage : ignoredPackages) {
+            if (javaPackage.equals(ignoredPackage)) {
+                return;
+            }
+        }
+
+        for (File file : parent.listFiles()) {
+            if (file.isDirectory()) {
+                findPackages(file, javaPackage + "." + file.getName(),
+                        baseClass, result, ignoredPackages);
+            } else if (file.getName().endsWith(".class")) {
+                String fullyQualifiedClassName = javaPackage + "."
+                        + file.getName().replace(".class", "");
+                addClassIfMatches(result, fullyQualifiedClassName, baseClass);
+            }
+        }
+
+    }
+
+    @SuppressWarnings("unchecked")
+    private static <T> void addClassIfMatches(
+            Collection<Class<? extends T>> result,
+            String fullyQualifiedClassName, Class<T> baseClass) {
+        try {
+            // Try to load the class
+
+            Class<?> c = Class.forName(fullyQualifiedClassName);
+            if (baseClass.isAssignableFrom(c)
+                    && !Modifier.isAbstract(c.getModifiers())) {
+                result.add((Class<? extends T>) c);
+            }
+        } catch (Exception e) {
+            // Could ignore that class cannot be loaded
+            e.printStackTrace();
+        } catch (LinkageError e) {
+            // Ignore. Client side classes will at least throw LinkageErrors
+        }
+
+    }
+}
diff --git a/tests/testbench/com/vaadin/launcher/util/BrowserLauncher.java b/tests/testbench/com/vaadin/launcher/util/BrowserLauncher.java
new file mode 100644 (file)
index 0000000..55692cb
--- /dev/null
@@ -0,0 +1,127 @@
+/* \r
+@VaadinApache2LicenseForJavaFiles@\r
+ */\r
+\r
+package com.vaadin.launcher.util;\r
+\r
+import java.io.BufferedInputStream;\r
+import java.io.BufferedReader;\r
+import java.io.File;\r
+import java.io.IOException;\r
+import java.io.InputStreamReader;\r
+\r
+/**\r
+ * This class opens default browser for DemoLauncher class. Default browser is\r
+ * detected by the operating system.\r
+ * \r
+ */\r
+public class BrowserLauncher {\r
+\r
+    /**\r
+     * Open browser on specified URL.\r
+     * \r
+     * @param url\r
+     */\r
+    public static void openBrowser(String url) {\r
+\r
+        final Runtime runtime = Runtime.getRuntime();\r
+        boolean started = false;\r
+\r
+        final String os = System.getProperty("os.name", "windows")\r
+                .toLowerCase();\r
+\r
+        // Linux\r
+        if (os.indexOf("linux") >= 0) {\r
+            // See if the default browser is Konqueror by resolving the symlink.\r
+            boolean isDefaultKonqueror = false;\r
+            try {\r
+                // Find out the location of the x-www-browser link from path.\r
+                Process process = runtime.exec("which x-www-browser");\r
+                BufferedInputStream ins = new BufferedInputStream(\r
+                        process.getInputStream());\r
+                BufferedReader bufreader = new BufferedReader(\r
+                        new InputStreamReader(ins));\r
+                String defaultLinkPath = bufreader.readLine();\r
+                ins.close();\r
+\r
+                // The path is null if the link did not exist.\r
+                if (defaultLinkPath != null) {\r
+                    // See if the default browser is Konqueror.\r
+                    File file = new File(defaultLinkPath);\r
+                    String canonical = file.getCanonicalPath();\r
+                    if (canonical.indexOf("konqueror") != -1) {\r
+                        isDefaultKonqueror = true;\r
+                    }\r
+                }\r
+            } catch (IOException e1) {\r
+                // The symlink was probably not found, so this is ok.\r
+            }\r
+\r
+            // Try x-www-browser, which is symlink to the default browser,\r
+            // except if we found that it is Konqueror.\r
+            if (!started && !isDefaultKonqueror) {\r
+                try {\r
+                    runtime.exec("x-www-browser " + url);\r
+                    started = true;\r
+                } catch (final IOException e) {\r
+                }\r
+            }\r
+\r
+            // Try firefox\r
+            if (!started) {\r
+                try {\r
+                    runtime.exec("firefox " + url);\r
+                    started = true;\r
+                } catch (final IOException e) {\r
+                }\r
+            }\r
+\r
+            // Try mozilla\r
+            if (!started) {\r
+                try {\r
+                    runtime.exec("mozilla " + url);\r
+                    started = true;\r
+                } catch (final IOException e) {\r
+                }\r
+            }\r
+\r
+            // Try konqueror\r
+            if (!started) {\r
+                try {\r
+                    runtime.exec("konqueror " + url);\r
+                    started = true;\r
+                } catch (final IOException e) {\r
+                }\r
+            }\r
+        }\r
+\r
+        // OS X\r
+        if (os.indexOf("mac os x") >= 0) {\r
+\r
+            // Try open\r
+            if (!started) {\r
+                try {\r
+                    runtime.exec("open " + url);\r
+                    started = true;\r
+                } catch (final IOException e) {\r
+                }\r
+            }\r
+        }\r
+\r
+        // Try cmd /start command on windows\r
+        if (os.indexOf("win") >= 0) {\r
+            if (!started) {\r
+                try {\r
+                    runtime.exec("cmd /c start " + url);\r
+                    started = true;\r
+                } catch (final IOException e) {\r
+                }\r
+            }\r
+        }\r
+\r
+        if (!started) {\r
+            System.out.println("Failed to open browser. Please go to " + url);\r
+        }\r
+    }\r
+\r
+}\r
index 6987c04a545bf0d53d198a1138ae06587c8bf397..d7bc18e2f6d95b72730a1c09eef21ddd60eb89df 100644 (file)
@@ -32,7 +32,7 @@ import com.vaadin.ui.Window;
 public class Components extends Application {\r
 \r
     private static final Object CAPTION = "c";\r
-    private Map<Class<? extends AbstractComponentTest<?>>, String> tests = new HashMap<Class<? extends AbstractComponentTest<?>>, String>();\r
+    private Map<Class<? extends AbstractComponentTest>, String> tests = new HashMap<Class<? extends AbstractComponentTest>, String>();\r
     private Tree naviTree;\r
     private HorizontalSplitPanel sp;\r
     private Window mainWindow;\r
@@ -41,10 +41,9 @@ public class Components extends Application {
     private List<Class<? extends Component>> componentsWithoutTests = new ArrayList<Class<? extends Component>>();\r
 \r
     {\r
-        for (Class<? extends AbstractComponentTest<?>> c : VaadinClasses\r
-                .getBasicComponentTests()) {\r
+        for (Class<?> c : VaadinClasses.getBasicComponentTests()) {\r
             String testClass = c.getSimpleName();\r
-            tests.put(c, testClass);\r
+            tests.put((Class<? extends AbstractComponentTest>) c, testClass);\r
         }\r
 \r
         List<Class<? extends Component>> componentsWithoutTest = VaadinClasses\r
@@ -171,7 +170,7 @@ public class Components extends Application {
         hc.setItemSorter(sorter);\r
         naviTree.addContainerProperty(CAPTION, String.class, "");\r
         naviTree.setItemCaptionPropertyId(CAPTION);\r
-        for (Class<? extends AbstractComponentTest<?>> cls : tests.keySet()) {\r
+        for (Class<? extends AbstractComponentTest> cls : tests.keySet()) {\r
             addTreeItem(cls);\r
         }\r
         hc.sort(new Object[] { CAPTION }, new boolean[] { true });\r
@@ -226,13 +225,13 @@ public class Components extends Application {
     }\r
 \r
     @SuppressWarnings("unchecked")\r
-    private void addTreeItem(Class<? extends AbstractComponentTest<?>> cls) {\r
+    private void addTreeItem(Class<? extends AbstractComponentTest> cls) {\r
         String name = tests.get(cls);\r
         if (name == null) {\r
             name = cls.getSimpleName();\r
         }\r
 \r
-        Class<? extends AbstractComponentTest<?>> superClass = (Class<? extends AbstractComponentTest<?>>) cls\r
+        Class<? extends AbstractComponentTest> superClass = (Class<? extends AbstractComponentTest>) cls\r
                 .getSuperclass();\r
 \r
         // This cast is needed only to make compilation through Ant work ..\r
@@ -249,9 +248,9 @@ public class Components extends Application {
     }\r
 \r
     protected Component createTestComponent(\r
-            Class<? extends AbstractComponentTest<?>> cls) {\r
+            Class<? extends AbstractComponentTest> cls) {\r
         try {\r
-            AbstractComponentTest<?> t = cls.newInstance();\r
+            AbstractComponentTest t = cls.newInstance();\r
             t.init();\r
             ComponentContainer c = t.getMainWindow().getContent();\r
             t.getMainWindow().setContent(null);\r
diff --git a/tests/testbench/com/vaadin/tests/VaadinClasses.java b/tests/testbench/com/vaadin/tests/VaadinClasses.java
deleted file mode 100644 (file)
index 0f4e2ff..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-package com.vaadin.tests;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.net.JarURLConnection;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.jar.JarEntry;
-
-import org.junit.Test;
-
-import com.vaadin.Application;
-import com.vaadin.tests.components.AbstractComponentTest;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.ComponentContainer;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.DragAndDropWrapper;
-import com.vaadin.ui.HorizontalSplitPanel;
-import com.vaadin.ui.LoginForm;
-import com.vaadin.ui.PopupView;
-import com.vaadin.ui.SplitPanel;
-import com.vaadin.ui.VerticalSplitPanel;
-import com.vaadin.ui.Window;
-
-@SuppressWarnings("deprecation")
-public class VaadinClasses {
-
-    public static void main(String[] args) {
-        System.out.println("ComponentContainers");
-        System.out.println("===================");
-        for (Class<? extends ComponentContainer> c : getComponentContainers()) {
-            System.out.println(c.getName());
-        }
-        System.out.println();
-        System.out.println("Components");
-        System.out.println("==========");
-        for (Class<? extends Component> c : getComponents()) {
-            System.out.println(c.getName());
-        }
-        System.out.println();
-        System.out.println("Server side classes");
-        System.out.println("===================");
-        for (Class<?> c : getAllServerSideClasses()) {
-            System.out.println(c.getName());
-        }
-    }
-
-    public static List<Class<? extends Component>> getComponents() {
-        try {
-            return findClasses(Component.class, "com.vaadin.ui");
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    public static List<Class<? extends Object>> getAllServerSideClasses() {
-        try {
-            return findClassesNoTests(Object.class, "com.vaadin", new String[] {
-                    "com.vaadin.tests", "com.vaadin.terminal.gwt.client" });
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    public static List<Class<? extends ComponentContainer>> getComponentContainers() {
-        try {
-            return findClasses(ComponentContainer.class, "com.vaadin.ui");
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-    }
-
-    public static List<Class<? extends ComponentContainer>> getComponentContainersSupportingAddRemoveComponent() {
-        List<Class<? extends ComponentContainer>> classes = getComponentContainers();
-        classes.remove(PopupView.class);
-        classes.remove(CustomComponent.class);
-        classes.remove(DragAndDropWrapper.class);
-        classes.remove(CustomComponent.class);
-        classes.remove(LoginForm.class);
-
-        return classes;
-    }
-
-    public static List<Class<? extends ComponentContainer>> getComponentContainersSupportingUnlimitedNumberOfComponents() {
-        List<Class<? extends ComponentContainer>> classes = getComponentContainersSupportingAddRemoveComponent();
-        classes.remove(SplitPanel.class);
-        classes.remove(VerticalSplitPanel.class);
-        classes.remove(HorizontalSplitPanel.class);
-        classes.remove(Window.class);
-
-        return classes;
-    }
-
-    @SuppressWarnings({ "unchecked", "rawtypes" })
-    public static List<Class<? extends AbstractComponentTest<?>>> getBasicComponentTests() {
-        try {
-            return (List) findClasses(AbstractComponentTest.class,
-                    "com.vaadin.tests.components");
-        } catch (IOException e) {
-            e.printStackTrace();
-            return null;
-        }
-
-    }
-
-    private static <T> List<Class<? extends T>> findClasses(Class<T> baseClass,
-            String basePackage) throws IOException {
-        return findClasses(baseClass, basePackage, new String[] {});
-    }
-
-    private static <T> List<Class<? extends T>> findClasses(Class<T> baseClass,
-            String basePackage, String[] ignoredPackages) throws IOException {
-        List<Class<? extends T>> classes = new ArrayList<Class<? extends T>>();
-        String basePackageDirName = "/" + basePackage.replace('.', '/');
-        URL location = Application.class.getResource(basePackageDirName);
-        if (location.getProtocol().equals("file")) {
-            try {
-                File f = new File(location.toURI());
-                if (!f.exists()) {
-                    throw new IOException("Directory " + f.toString()
-                            + " does not exist");
-                }
-                findPackages(f, basePackage, baseClass, classes,
-                        ignoredPackages);
-            } catch (URISyntaxException e) {
-                throw new IOException(e.getMessage());
-            }
-        } else if (location.getProtocol().equals("jar")) {
-            JarURLConnection juc = (JarURLConnection) location.openConnection();
-            findPackages(juc, basePackage, baseClass, classes);
-        }
-
-        Collections.sort(classes, new Comparator<Class<? extends T>>() {
-
-            public int compare(Class<? extends T> o1, Class<? extends T> o2) {
-                return o1.getName().compareTo(o2.getName());
-            }
-
-        });
-        return classes;
-    }
-
-    private static <T> List<Class<? extends T>> findClassesNoTests(
-            Class<T> baseClass, String basePackage, String[] ignoredPackages)
-            throws IOException {
-        List<Class<? extends T>> classes = findClasses(baseClass, basePackage,
-                ignoredPackages);
-        List<Class<? extends T>> classesNoTests = new ArrayList<Class<? extends T>>();
-        for (Class<? extends T> clazz : classes) {
-            if (!clazz.getName().contains("Test")) {
-                boolean testPresent = false;
-                for (Method method : clazz.getMethods()) {
-                    if (method.isAnnotationPresent(Test.class)) {
-                        testPresent = true;
-                        break;
-                    }
-                }
-                if (!testPresent) {
-                    classesNoTests.add(clazz);
-                }
-            }
-        }
-        return classesNoTests;
-    }
-
-    private static <T> void findPackages(JarURLConnection juc,
-            String javaPackage, Class<T> baseClass,
-            Collection<Class<? extends T>> result) throws IOException {
-        String prefix = "com/vaadin/ui";
-        Enumeration<JarEntry> ent = juc.getJarFile().entries();
-        while (ent.hasMoreElements()) {
-            JarEntry e = ent.nextElement();
-            if (e.getName().endsWith(".class")
-                    && e.getName().startsWith(prefix)) {
-                String fullyQualifiedClassName = e.getName().replace('/', '.')
-                        .replace(".class", "");
-                addClassIfMatches(result, fullyQualifiedClassName, baseClass);
-            }
-        }
-    }
-
-    private static <T> void findPackages(File parent, String javaPackage,
-            Class<T> baseClass, Collection<Class<? extends T>> result,
-            String[] ignoredPackages) {
-        for (String ignoredPackage : ignoredPackages) {
-            if (javaPackage.equals(ignoredPackage)) {
-                return;
-            }
-        }
-
-        for (File file : parent.listFiles()) {
-            if (file.isDirectory()) {
-                findPackages(file, javaPackage + "." + file.getName(),
-                        baseClass, result, ignoredPackages);
-            } else if (file.getName().endsWith(".class")) {
-                String fullyQualifiedClassName = javaPackage + "."
-                        + file.getName().replace(".class", "");
-                addClassIfMatches(result, fullyQualifiedClassName, baseClass);
-            }
-        }
-
-    }
-
-    @SuppressWarnings("unchecked")
-    private static <T> void addClassIfMatches(
-            Collection<Class<? extends T>> result,
-            String fullyQualifiedClassName, Class<T> baseClass) {
-        try {
-            // Try to load the class
-
-            Class<?> c = Class.forName(fullyQualifiedClassName);
-            if (baseClass.isAssignableFrom(c)
-                    && !Modifier.isAbstract(c.getModifiers())) {
-                result.add((Class<? extends T>) c);
-            }
-        } catch (Exception e) {
-            // Could ignore that class cannot be loaded
-            e.printStackTrace();
-        } catch (LinkageError e) {
-            // Ignore. Client side classes will at least throw LinkageErrors
-        }
-
-    }
-}