1.1 --- a/samples/componentinjection/anagram-modular/src-app-lookup/org/apidesign/anagram/app/lookup/AnagramsWithLookup.java Sat Jun 14 10:08:28 2008 +0200
1.2 +++ b/samples/componentinjection/anagram-modular/src-app-lookup/org/apidesign/anagram/app/lookup/AnagramsWithLookup.java Sat Jun 14 10:08:31 2008 +0200
1.3 @@ -6,6 +6,8 @@
1.4 import org.openide.util.Lookup;
1.5
1.6 // BEGIN: anagram.lookup.Anagrams
1.7 +import org.openide.util.LookupEvent;
1.8 +import org.openide.util.LookupListener;
1.9 class AnagramsWithLookup extends Anagrams {
1.10
1.11 public AnagramsWithLookup() {
1.12 @@ -20,6 +22,24 @@
1.13 protected Scrambler getScrambler() {
1.14 return Lookup.getDefault().lookup(Scrambler.class);
1.15 }
1.16 -
1.17 +// FINISH: anagram.lookup.Anagrams
1.18 +
1.19 + private Lookup.Result<Scrambler> scramblers = Lookup.getDefault().lookupResult(Scrambler.class);
1.20 +// BEGIN: anagram.lookup.Listeners
1.21 + private Lookup.Result<WordLibrary> libraries
1.22 + = Lookup.getDefault().lookupResult(WordLibrary.class);
1.23 + private LookupListener listener = new LookupListener() {
1.24 + public void resultChanged(LookupEvent ev) {
1.25 + initWord();
1.26 + }
1.27 + };
1.28 + {
1.29 + libraries.addLookupListener(listener);
1.30 +// FINISH: anagram.lookup.Listeners
1.31 +
1.32 + scramblers.addLookupListener(listener);
1.33 + // initialize the results for listening
1.34 + libraries.allItems();
1.35 + scramblers.allItems();
1.36 + }
1.37 }
1.38 -// END: anagram.lookup.Anagrams
2.1 --- a/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java Sat Jun 14 10:08:28 2008 +0200
2.2 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/Anagrams.java Sat Jun 14 10:08:31 2008 +0200
2.3 @@ -199,7 +199,8 @@
2.4 int index = wordIdx % words.length;
2.5
2.6 original = words[index];
2.7 - scrambled = getScrambler().scramble(original);
2.8 + Scrambler scrambler = getScrambler();
2.9 + scrambled = scrambler != null ? scrambler.scramble(original) : original;
2.10
2.11 scrambledWord.setText(scrambled);
2.12 }
3.1 --- a/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/app/lookup/AnagramsWithLookupTest.java Sat Jun 14 10:08:28 2008 +0200
3.2 +++ b/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/app/lookup/AnagramsWithLookupTest.java Sat Jun 14 10:08:31 2008 +0200
3.3 @@ -1,11 +1,47 @@
3.4 package org.apidesign.anagram.app.lookup;
3.5
3.6 +import org.apidesign.anagram.api.WordLibrary;
3.7 import org.apidesign.anagram.gui.*;
3.8 -import org.apidesign.anagram.app.lookup.AnagramsWithLookup;
3.9 +import static org.junit.Assert.*;
3.10 +import org.junit.Test;
3.11 +import org.netbeans.junit.MockServices;
3.12
3.13 public class AnagramsWithLookupTest extends AnagramsTestBase {
3.14 @Override
3.15 protected Anagrams create() {
3.16 return new AnagramsWithLookup();
3.17 }
3.18 +
3.19 + @Test public void testChangesInTheRegistrationAreReflected() {
3.20 + Anagrams ui = create();
3.21 +
3.22 + MockServices.setServices(FirstMockWordLibrary.class);
3.23 + ui.display();
3.24 +
3.25 + assertEquals(
3.26 + "Original word has to be from FirstMockWordLibrary",
3.27 + "1st", ui.getOriginalWord()
3.28 + );
3.29 +
3.30 + MockServices.setServices(SecondMockWordLibrary.class);
3.31 +
3.32 + assertEquals(
3.33 + "Original word has to be from new library now",
3.34 + "2nd", ui.getOriginalWord()
3.35 + );
3.36 + }
3.37 +
3.38 + public static final class FirstMockWordLibrary implements WordLibrary {
3.39 + public String[] getWords() {
3.40 + return new String[] { "1st" };
3.41 + }
3.42 + }
3.43 +
3.44 + public static final class SecondMockWordLibrary implements WordLibrary {
3.45 + public String[] getWords() {
3.46 + return new String[] { "2nd" };
3.47 + }
3.48 + }
3.49 +
3.50 +
3.51 }
4.1 --- a/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/gui/AnagramsTestBase.java Sat Jun 14 10:08:28 2008 +0200
4.2 +++ b/samples/componentinjection/anagram-modular/src-test/org/apidesign/anagram/gui/AnagramsTestBase.java Sat Jun 14 10:08:31 2008 +0200
4.3 @@ -2,6 +2,7 @@
4.4
4.5 import org.apidesign.anagram.api.Scrambler;
4.6 import org.apidesign.anagram.api.WordLibrary;
4.7 +import org.junit.Before;
4.8 import static org.junit.Assert.*;
4.9 import org.junit.Test;
4.10 import org.netbeans.junit.MockServices;
4.11 @@ -10,6 +11,11 @@
4.12
4.13 protected abstract Anagrams create();
4.14
4.15 + @Before
4.16 + public void cleanUpServices() {
4.17 + MockServices.setServices();
4.18 + }
4.19 +
4.20 @Test public void testInjectionOfServices() throws Exception {
4.21 Anagrams ui = create();
4.22