Example with registration methods is working
authorJaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 10:06:54 +0200
changeset 2193fb53f65db57
parent 218 fc45e7b76ee8
child 220 877c6654f10e
Example with registration methods is working
samples/componentinjection/anagram-modular/build.xml
samples/componentinjection/anagram-modular/nbproject/project.xml
samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Launcher.java
samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Main.java
samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java
samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/AnagramsWithConstructor.java
     1.1 --- a/samples/componentinjection/anagram-modular/build.xml	Sat Jun 14 10:06:53 2008 +0200
     1.2 +++ b/samples/componentinjection/anagram-modular/build.xml	Sat Jun 14 10:06:54 2008 +0200
     1.3 @@ -8,28 +8,30 @@
     1.4      <target name="build" depends="-libraries">
     1.5          <antcall target="-build-one">
     1.6              <param name="version" value="api"/>
     1.7 +            <param name="cp" value=""/>
     1.8 +        </antcall>
     1.9 +        <antcall target="-build-one">
    1.10 +            <param name="version" value="word-static"/>
    1.11 +        </antcall>
    1.12 +        <antcall target="-build-one">
    1.13 +            <param name="version" value="scrambler-simple"/>
    1.14 +        </antcall>
    1.15 +        <antcall target="-build-one">
    1.16 +            <param name="version" value="gui"/>
    1.17 +        </antcall>
    1.18 +        <antcall target="-build-one">
    1.19 +            <param name="version" value="app-register"/>
    1.20 +            <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
    1.21          </antcall>
    1.22          
    1.23 -        <antcall target="-build-one">
    1.24 -            <param name="version" value="test"/>
    1.25 -            <param name="cp" value="build/new-api/classes:${junit.jar}"/>
    1.26 -        </antcall>
    1.27      </target>
    1.28      
    1.29 -    <target name="test">
    1.30 -        <antcall target="-do-test">
    1.31 -            <param name="nodebug" value="true"/>
    1.32 -        </antcall>
    1.33 -    </target>
    1.34 -        
    1.35 -    <target name="-do-test" depends="build">
    1.36 +    <target name="test" depends="build">
    1.37          <echo level="info" message="Running the tests with bridge enabled. This should succeeds."/>
    1.38          <antcall target="-run-one">
    1.39 -            <param name="test.cp" value="build/new-api/classes:build/bridge/classes"/>
    1.40 -        </antcall>
    1.41 -        <echo level="info" message="Running the tests without bridge module. This should fail."/>
    1.42 -        <antcall target="-run-one">
    1.43 -            <param name="test.cp" value="build/new-api/classes"/>
    1.44 +            <param name="version" value="app-register"/>
    1.45 +            <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
    1.46 +            <param name="main" value="org.apidesign.anagram.app.register.Main"/>
    1.47          </antcall>
    1.48      </target>
    1.49      
    1.50 @@ -41,43 +43,15 @@
    1.51          <property name="junit.jar" location="../libs/dist/junit-4.4.jar"/>
    1.52      </target>
    1.53  
    1.54 -    <target name="-debug-one" if="netbeans.home" unless="nodebug">
    1.55 -        <nbjpdastart addressproperty="jpda.address" name="MessageDigest and Bridges" transport="dt_socket" >
    1.56 -            <sourcepath path="src-new-api:src-bridge:src-test:build/test/classes"/>
    1.57 -            <classpath path="build/new-api/classes:build/bridge/classes:build/test/classes"/>
    1.58 -        </nbjpdastart>
    1.59 -        <property name="debug1" value="-Xdebug"/>
    1.60 -        <property name="debug2" value="-Xrunjdwp:transport=dt_socket,address=${jpda.address}"/>
    1.61 -    </target>
    1.62 -    
    1.63 -    <target name="-run-one" depends="-debug-one">
    1.64 -        <property name="debug1" value="-Dn1"/>
    1.65 -        <property name="debug2" value="-Dn2"/>
    1.66 -        <property name="include" value="**/*Test"/>
    1.67 -        <mkdir dir="build/testresults"/>
    1.68 -        <junit dir="build/test/classes" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
    1.69 -            <batchtest todir="build/testresults">
    1.70 -                <fileset dir="build/test/classes">
    1.71 -                    <filename name="${include}.class"/>
    1.72 -                </fileset>
    1.73 -            </batchtest>
    1.74 -            <classpath>
    1.75 -                <path path="${test.cp}"/>
    1.76 -                <path location="build/test/classes"/>
    1.77 -                <path location="${junit.jar}"/>
    1.78 -            </classpath>
    1.79 -            <formatter type="brief" usefile="false"/>
    1.80 -            <formatter type="xml"/>
    1.81 -            <jvmarg value="${debug1}"/>
    1.82 -            <jvmarg value="${debug2}"/>
    1.83 -        </junit>
    1.84 +    <target name="-run-one">
    1.85 +        <java classpath="${cp}:build/${version}/classes" classname="${main}"/>
    1.86      </target>
    1.87      
    1.88      <target name="-build-one">
    1.89          <fail message="You need to specify version number" unless="version"/>
    1.90          
    1.91          <mkdir dir="build/${version}/classes"/>
    1.92 -        <property name="cp" value=""/>
    1.93 +        <property name="cp" value="build/api/classes"/>
    1.94          <javac 
    1.95              srcdir="src-${version}" 
    1.96              destdir="build/${version}/classes" 
     2.1 --- a/samples/componentinjection/anagram-modular/nbproject/project.xml	Sat Jun 14 10:06:53 2008 +0200
     2.2 +++ b/samples/componentinjection/anagram-modular/nbproject/project.xml	Sat Jun 14 10:06:54 2008 +0200
     2.3 @@ -34,6 +34,12 @@
     2.4                      <encoding>UTF-8</encoding>
     2.5                  </source-folder>
     2.6                  <source-folder>
     2.7 +                    <label>src-app-register</label>
     2.8 +                    <type>java</type>
     2.9 +                    <location>src-app-register</location>
    2.10 +                    <encoding>UTF-8</encoding>
    2.11 +                </source-folder>
    2.12 +                <source-folder>
    2.13                      <label>Anagram Modular</label>
    2.14                      <location>.</location>
    2.15                      <encoding>UTF-8</encoding>
    2.16 @@ -88,6 +94,10 @@
    2.17                          <label>src-gui</label>
    2.18                          <location>src-gui</location>
    2.19                      </source-folder>
    2.20 +                    <source-folder style="packages">
    2.21 +                        <label>src-app-register</label>
    2.22 +                        <location>src-app-register</location>
    2.23 +                    </source-folder>
    2.24                      <source-file>
    2.25                          <location>build.xml</location>
    2.26                      </source-file>
    2.27 @@ -127,6 +137,12 @@
    2.28                  <source-level>1.5</source-level>
    2.29              </compilation-unit>
    2.30              <compilation-unit>
    2.31 +                <package-root>src-app-register</package-root>
    2.32 +                <classpath mode="compile">src-api:src-scrambler-simple:src-word-static:src-gui</classpath>
    2.33 +                <built-to>build/app-register/classes</built-to>
    2.34 +                <source-level>1.5</source-level>
    2.35 +            </compilation-unit>
    2.36 +            <compilation-unit>
    2.37                  <package-root>src-test</package-root>
    2.38                  <classpath mode="compile">src-new-api:../libs/dist/junit-4.4.jar</classpath>
    2.39                  <source-level>1.5</source-level>
     3.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     3.2 +++ b/samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Launcher.java	Sat Jun 14 10:06:54 2008 +0200
     3.3 @@ -0,0 +1,32 @@
     3.4 +package org.apidesign.anagram.app.register;
     3.5 +
     3.6 +import org.apidesign.anagram.api.Scrambler;
     3.7 +import org.apidesign.anagram.api.UI;
     3.8 +import org.apidesign.anagram.api.WordLibrary;
     3.9 +
    3.10 +public final class Launcher {
    3.11 +    private static Class<? extends WordLibrary> wordLibrary;
    3.12 +    private static Class<? extends Scrambler> scrambler;
    3.13 +    private static Class<? extends UI> ui;
    3.14 +    
    3.15 +    
    3.16 +    private Launcher() {
    3.17 +    }
    3.18 +
    3.19 +    
    3.20 +    public static void registerWordLibrary(Class<? extends WordLibrary> libraryClass) {
    3.21 +        wordLibrary = libraryClass;
    3.22 +    }
    3.23 +    public static void registerScrambler(Class<? extends Scrambler> scramblerClass) {
    3.24 +        scrambler = scramblerClass;
    3.25 +    }
    3.26 +    public static void registerUI(Class<? extends UI> uiClass) {
    3.27 +        ui = uiClass;
    3.28 +    }
    3.29 +    
    3.30 +    public static UI launch() throws Exception {
    3.31 +        WordLibrary w = wordLibrary.newInstance();
    3.32 +        Scrambler s = scrambler.newInstance();
    3.33 +        return ui.getConstructor(WordLibrary.class, Scrambler.class).newInstance(w, s);
    3.34 +    }
    3.35 +}
     4.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     4.2 +++ b/samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Main.java	Sat Jun 14 10:06:54 2008 +0200
     4.3 @@ -0,0 +1,21 @@
     4.4 +package org.apidesign.anagram.app.register;
     4.5 +
     4.6 +import org.apidesign.anagram.api.UI;
     4.7 +import org.apidesign.anagram.gui.AnagramsWithConstructor;
     4.8 +import org.apidesign.anagram.scramblersimple.SimpleScrambler;
     4.9 +import org.apidesign.anagram.wordstatic.StaticWordLibrary;
    4.10 +
    4.11 +public final class Main {
    4.12 +    private Main() { }
    4.13 +    
    4.14 +    public static void main(String[] args) throws Exception {
    4.15 +        Launcher.registerScrambler(SimpleScrambler.class);
    4.16 +        Launcher.registerWordLibrary(StaticWordLibrary.class);
    4.17 +        Launcher.registerUI(AnagramsWithConstructor.class);
    4.18 +        
    4.19 +        UI ui = Launcher.launch();
    4.20 +        ui.display();
    4.21 +    }
    4.22 +    
    4.23 +    
    4.24 +}
     5.1 --- a/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java	Sat Jun 14 10:06:53 2008 +0200
     5.2 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java	Sat Jun 14 10:06:54 2008 +0200
     5.3 @@ -18,13 +18,19 @@
     5.4      /** Creates new form Anagrams */
     5.5      public Anagrams() {
     5.6          initComponents();        
     5.7 -        initWord();
     5.8          getRootPane().setDefaultButton(guessButton);
     5.9      }
    5.10      
    5.11      protected abstract WordLibrary getWordLibrary();
    5.12      protected abstract Scrambler getScrambler();
    5.13      
    5.14 +    
    5.15 +    @Override
    5.16 +    public void addNotify() {
    5.17 +        super.addNotify();
    5.18 +        initWord();
    5.19 +    }
    5.20 +    
    5.21      /** This method is called from within the constructor to
    5.22       * initialize the form.
    5.23       * WARNING: Do NOT modify this code. The content of this method is
     6.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     6.2 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/AnagramsWithConstructor.java	Sat Jun 14 10:06:54 2008 +0200
     6.3 @@ -0,0 +1,29 @@
     6.4 +package org.apidesign.anagram.gui;
     6.5 +
     6.6 +import org.apidesign.anagram.api.Scrambler;
     6.7 +import org.apidesign.anagram.api.WordLibrary;
     6.8 +
     6.9 +public final class AnagramsWithConstructor extends Anagrams {
    6.10 +    
    6.11 +    private final WordLibrary library;
    6.12 +    private final Scrambler scrambler;
    6.13 +
    6.14 +    public AnagramsWithConstructor(WordLibrary library, Scrambler scrambler) {
    6.15 +        this.library = library;
    6.16 +        this.scrambler = scrambler;
    6.17 +    }
    6.18 +
    6.19 +    @Override
    6.20 +    protected WordLibrary getWordLibrary() {
    6.21 +        return library;
    6.22 +    }
    6.23 +
    6.24 +    @Override
    6.25 +    protected Scrambler getScrambler() {
    6.26 +        return scrambler;
    6.27 +    }
    6.28 +
    6.29 +    public void display() {
    6.30 +        setVisible(true);
    6.31 +    }
    6.32 +}