1.1 --- a/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:06:59 2008 +0200
1.2 +++ b/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:07:00 2008 +0200
1.3 @@ -23,16 +23,26 @@
1.4 <param name="version" value="app-register"/>
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="app-property"/>
1.9 + <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
1.10 + </antcall>
1.11
1.12 </target>
1.13
1.14 <target name="test" depends="build">
1.15 - <echo level="info" message="Running the tests with bridge enabled. This should succeeds."/>
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 <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
1.20 <param name="main" value="org.apidesign.anagram.app.register.Main"/>
1.21 </antcall>
1.22 + <echo level="info" message="Running System.getProperty version"/>
1.23 + <antcall target="-run-one">
1.24 + <param name="version" value="app-property"/>
1.25 + <param name="cp" value="build/api/classes:build/word-static/classes:build/scrambler-simple/classes:build/gui/classes"/>
1.26 + <param name="main" value="org.apidesign.anagram.app.property.Main"/>
1.27 + </antcall>
1.28 </target>
1.29
1.30 <!-- support methods -->
2.1 --- a/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:06:59 2008 +0200
2.2 +++ b/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:07:00 2008 +0200
2.3 @@ -40,6 +40,12 @@
2.4 <encoding>UTF-8</encoding>
2.5 </source-folder>
2.6 <source-folder>
2.7 + <label>src-app-property</label>
2.8 + <type>java</type>
2.9 + <location>src-app-property</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 @@ -98,6 +104,10 @@
2.17 <label>src-app-register</label>
2.18 <location>src-app-register</location>
2.19 </source-folder>
2.20 + <source-folder style="packages">
2.21 + <label>src-app-property</label>
2.22 + <location>src-app-property</location>
2.23 + </source-folder>
2.24 <source-file>
2.25 <location>build.xml</location>
2.26 </source-file>
2.27 @@ -143,6 +153,12 @@
2.28 <source-level>1.5</source-level>
2.29 </compilation-unit>
2.30 <compilation-unit>
2.31 + <package-root>src-app-property</package-root>
2.32 + <classpath mode="compile">src-api:src-scrambler-simple:src-word-static:src-gui</classpath>
2.33 + <built-to>build/app-property/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-property/org/apidesign/anagram/app/property/AnagramsWithProperties.java Sat Jun 14 10:07:00 2008 +0200
3.3 @@ -0,0 +1,51 @@
3.4 +package org.apidesign.anagram.app.register;
3.5 +
3.6 +import java.util.logging.Level;
3.7 +import java.util.logging.Logger;
3.8 +import org.apidesign.anagram.api.Scrambler;
3.9 +import org.apidesign.anagram.api.WordLibrary;
3.10 +import org.apidesign.anagram.gui.Anagrams;
3.11 +
3.12 +public final class AnagramsWithProperties extends Anagrams {
3.13 + private WordLibrary wordLibrary;
3.14 + private Scrambler scrambler;
3.15 +
3.16 + public AnagramsWithProperties() {
3.17 + }
3.18 +
3.19 + private static <T> Class<? extends T> loadImpl(Class<T> clazz) throws ClassNotFoundException {
3.20 + String implName = System.getProperty(clazz.getName());
3.21 + assert implName != null;
3.22 + ClassLoader loader = Thread.currentThread().getContextClassLoader();
3.23 + if (loader == null) {
3.24 + loader = AnagramsWithProperties.class.getClassLoader();
3.25 + }
3.26 + Class<?> impl = Class.forName(implName, false, loader);
3.27 + return impl.asSubclass(clazz);
3.28 + }
3.29 +
3.30 +
3.31 + @Override
3.32 + protected WordLibrary getWordLibrary() {
3.33 + try {
3.34 + if (wordLibrary == null) {
3.35 + wordLibrary = loadImpl(WordLibrary.class).newInstance();
3.36 + }
3.37 + return wordLibrary;
3.38 + } catch (Exception ex) {
3.39 + throw new IllegalStateException(ex);
3.40 + }
3.41 + }
3.42 +
3.43 + @Override
3.44 + protected Scrambler getScrambler() {
3.45 + try {
3.46 + if (scrambler == null) {
3.47 + scrambler = loadImpl(Scrambler.class).newInstance();
3.48 + }
3.49 + return scrambler;
3.50 + } catch (Exception ex) {
3.51 + throw new IllegalStateException(ex);
3.52 + }
3.53 + }
3.54 +}
4.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
4.2 +++ b/samples/componentinjection/anagram-modular/src-app-property/org/apidesign/anagram/app/property/Main.java Sat Jun 14 10:07:00 2008 +0200
4.3 @@ -0,0 +1,23 @@
4.4 +package org.apidesign.anagram.app.property;
4.5 +
4.6 +import org.apidesign.anagram.api.UI;
4.7 +
4.8 +public final class Main {
4.9 + private Main() { }
4.10 +
4.11 + public static void main(String[] args) throws Exception {
4.12 + System.setProperty(
4.13 + "org.apidesign.anagram.api.WordLibrary",
4.14 + "org.apidesign.anagram.wordstatic.StaticWordLibrary"
4.15 + );
4.16 + System.setProperty(
4.17 + "org.apidesign.anagram.api.Scrambler",
4.18 + "org.apidesign.anagram.scramblersimple.SimpleScrambler"
4.19 + );
4.20 +
4.21 + UI ui = new org.apidesign.anagram.app.register.AnagramsWithProperties();
4.22 + ui.display();
4.23 + }
4.24 +
4.25 +
4.26 +}