1.1 --- a/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:08:35 2008 +0200
1.2 +++ b/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:08:42 2008 +0200
1.3 @@ -47,10 +47,14 @@
1.4 <param name="version" value="app-serviceloader"/>
1.5 <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
1.6 </antcall>
1.7 + <antcall target="-build-one">
1.8 + <param name="version" value="test"/>
1.9 + <param name="cp" value="build/api/classes:build/gui/classes:build/app-serviceloader/classes:build/app-lookup/classes:${junit.jar}:${nbjunit.jar}:${insane.jar}"/>
1.10 + </antcall>
1.11
1.12 </target>
1.13
1.14 - <target name="test" depends="build">
1.15 + <target name="run" depends="build">
1.16 <echo level="info" message="Running registerXYZ version"/>
1.17 <antcall target="-run-one">
1.18 <param name="version" value="app-register"/>
1.19 @@ -89,17 +93,27 @@
1.20 </antcall>
1.21 <antcall target="-run-one">
1.22 <param name="version" value="app-serviceloader"/>
1.23 - <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
1.24 + <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes:${junit.jar}:${nbjunit.jar}:${insane.jar}"/>
1.25 <param name="main" value="org.apidesign.anagram.app.serviceloader.Main"/>
1.26 </antcall>
1.27 </target>
1.28 -
1.29 +
1.30 + <target name="test" depends="build">
1.31 + <echo level="info" message="Testing using MockServices"/>
1.32 + <antcall target="-test-one">
1.33 + <param name="version" value="app-test"/>
1.34 + <param name="cp" value="build/api/classes:build/gui/classes:build/app-serviceloader/classes:build/app-lookup/classes:${junit.jar}:${nbjunit.jar}:${insane.jar}:../../libs/dist/org-openide-util.jar"/>
1.35 + </antcall>
1.36 + </target>
1.37 +
1.38 <!-- support methods -->
1.39
1.40 <target name="-libraries">
1.41 <ant dir="../../libs/"/>
1.42
1.43 <property name="junit.jar" location="../../libs/dist/junit-4.4.jar"/>
1.44 + <property name="nbjunit.jar" location="../../libs/dist/org-netbeans-modules-nbjunit.jar"/>
1.45 + <property name="insane.jar" location="../../libs/dist/org-netbeans-insane.jar"/>
1.46 </target>
1.47
1.48 <target name="-run-one">
1.49 @@ -126,4 +140,22 @@
1.50 </fileset>
1.51 </copy>
1.52 </target>
1.53 + <target name="-test-one">
1.54 + <fail message="You need to specify API version number" unless="version"/>
1.55 + <mkdir dir="build/testresults"/>
1.56 + <junit dir="build/test/classes" errorproperty="tests.failed" failureproperty="tests.failed" fork="true" showoutput="true">
1.57 + <batchtest todir="build/testresults">
1.58 + <fileset dir="build/test/classes">
1.59 + <filename name="**/*Test.class"/>
1.60 + </fileset>
1.61 + </batchtest>
1.62 + <classpath>
1.63 + <path path="${cp}"/>
1.64 + <path location="build/test/classes"/>
1.65 + <path location="${junit.jar}"/>
1.66 + </classpath>
1.67 + <formatter type="brief" usefile="false"/>
1.68 + <formatter type="xml"/>
1.69 + </junit>
1.70 + </target>
1.71 </project>
2.1 --- a/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:08:35 2008 +0200
2.2 +++ b/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:08:42 2008 +0200
2.3 @@ -94,6 +94,9 @@
2.4 <action name="clean">
2.5 <target>clean</target>
2.6 </action>
2.7 + <action name="run">
2.8 + <target>run</target>
2.9 + </action>
2.10 <action name="test">
2.11 <target>test</target>
2.12 </action>
2.13 @@ -226,6 +229,7 @@
2.14 <ide-action name="build"/>
2.15 <ide-action name="rebuild"/>
2.16 <ide-action name="clean"/>
2.17 + <ide-action name="run"/>
2.18 <ide-action name="test"/>
2.19 <ide-action name="debug"/>
2.20 </context-menu>
2.21 @@ -300,7 +304,7 @@
2.22 </compilation-unit>
2.23 <compilation-unit>
2.24 <package-root>src-test</package-root>
2.25 - <classpath mode="compile">src-new-api:../libs/dist/junit-4.4.jar</classpath>
2.26 + <classpath mode="compile">src-api:../../libs/dist/junit-4.4.jar::../../libs/dist/org-netbeans-modules-nbjunit.jar:../../libs/dist/org-netbeans-insane.jar:src-gui:../../libs/dist/org-openide-util.jar:src-app-lookup:src-app-serviceloader</classpath>
2.27 <source-level>1.5</source-level>
2.28 </compilation-unit>
2.29 </java-data>
3.1 --- a/samples/componentinjection/anagram-modular/src-app-lookup/org/apidesign/anagram/app/lookup/AnagramsWithLookup.java Sat Jun 14 10:08:35 2008 +0200
3.2 +++ b/samples/componentinjection/anagram-modular/src-app-lookup/org/apidesign/anagram/app/lookup/AnagramsWithLookup.java Sat Jun 14 10:08:42 2008 +0200
3.3 @@ -6,6 +6,8 @@
3.4 import org.openide.util.Lookup;
3.5
3.6 // BEGIN: anagram.lookup.Anagrams
3.7 +import org.openide.util.LookupEvent;
3.8 +import org.openide.util.LookupListener;
3.9 class AnagramsWithLookup extends Anagrams {
3.10
3.11 public AnagramsWithLookup() {
3.12 @@ -20,6 +22,24 @@
3.13 protected Scrambler getScrambler() {
3.14 return Lookup.getDefault().lookup(Scrambler.class);
3.15 }
3.16 -
3.17 +// FINISH: anagram.lookup.Anagrams
3.18 +
3.19 + private Lookup.Result<Scrambler> scramblers = Lookup.getDefault().lookupResult(Scrambler.class);
3.20 +// BEGIN: anagram.lookup.Listeners
3.21 + private Lookup.Result<WordLibrary> libraries
3.22 + = Lookup.getDefault().lookupResult(WordLibrary.class);
3.23 + private LookupListener listener = new LookupListener() {
3.24 + public void resultChanged(LookupEvent ev) {
3.25 + initWord();
3.26 + }
3.27 + };
3.28 + {
3.29 + libraries.addLookupListener(listener);
3.30 +// FINISH: anagram.lookup.Listeners
3.31 +
3.32 + scramblers.addLookupListener(listener);
3.33 + // initialize the results for listening
3.34 + libraries.allItems();
3.35 + scramblers.allItems();
3.36 + }
3.37 }
3.38 -// END: anagram.lookup.Anagrams
4.1 --- a/samples/componentinjection/anagram-modular/src-app-serviceloader/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoader.java Sat Jun 14 10:08:35 2008 +0200
4.2 +++ b/samples/componentinjection/anagram-modular/src-app-serviceloader/org/apidesign/anagram/app/serviceloader/AnagramsWithServiceLoader.java Sat Jun 14 10:08:42 2008 +0200
4.3 @@ -1,5 +1,6 @@
4.4 package org.apidesign.anagram.app.serviceloader;
4.5
4.6 +import java.util.Iterator;
4.7 import org.apidesign.anagram.api.Scrambler;
4.8 import org.apidesign.anagram.api.WordLibrary;
4.9 import org.apidesign.anagram.gui.Anagrams;
4.10 @@ -13,12 +14,14 @@
4.11
4.12 @Override
4.13 protected WordLibrary getWordLibrary() {
4.14 - return ServiceLoader.load(WordLibrary.class).iterator().next();
4.15 + Iterator<WordLibrary> it = ServiceLoader.load(WordLibrary.class).iterator();
4.16 + return it.hasNext() ? it.next() : null;
4.17 }
4.18
4.19 @Override
4.20 protected Scrambler getScrambler() {
4.21 - return ServiceLoader.load(Scrambler.class).iterator().next();
4.22 + Iterator<Scrambler> it = ServiceLoader.load(Scrambler.class).iterator();
4.23 + return it.hasNext() ? it.next() : null;
4.24 }
4.25
4.26 }
5.1 --- a/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java Sat Jun 14 10:08:35 2008 +0200
5.2 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java Sat Jun 14 10:08:42 2008 +0200
5.3 @@ -28,6 +28,7 @@
5.4 protected abstract Scrambler getScrambler();
5.5
5.6 public void display() {
5.7 + initWord();
5.8 setVisible(true);
5.9 }
5.10 // FINISH: anagram.ui.Anagrams
5.11 @@ -35,10 +36,12 @@
5.12 String original;
5.13 String scrambled;
5.14
5.15 - @Override
5.16 - public void addNotify() {
5.17 - super.addNotify();
5.18 - initWord();
5.19 + public final String getOriginalWord() {
5.20 + return original;
5.21 + }
5.22 +
5.23 + public final String getScrambledWord() {
5.24 + return scrambled;
5.25 }
5.26
5.27 /** This method is called from within the constructor to
5.28 @@ -190,13 +193,14 @@
5.29 guessedWord.requestFocus();
5.30 }//GEN-LAST:event_nextTrialActionPerformed
5.31
5.32 - private void initWord() {
5.33 + protected final void initWord() {
5.34
5.35 String[] words = getWordLibrary().getWords();
5.36 int index = wordIdx % words.length;
5.37
5.38 original = words[index];
5.39 - scrambled = getScrambler().scramble(original);
5.40 + Scrambler scrambler = getScrambler();
5.41 + scrambled = scrambler != null ? scrambler.scramble(original) : original;
5.42
5.43 scrambledWord.setText(scrambled);
5.44 }