# HG changeset patch # User Jaroslav Tulach # Date 1213430841 -7200 # Node ID 3282ef5328a84839e257cd31d067f782904b7284 # Parent b01da7eb41dd5a79f5cbc1361de06f027f9d8a3a Yet another example of spring autoconfiguration diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/build.xml --- a/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:07:17 2008 +0200 +++ b/samples/componentinjection/anagram-modular/build.xml Sat Jun 14 10:07:21 2008 +0200 @@ -36,6 +36,10 @@ + + + + @@ -61,6 +65,12 @@ + + + + + + diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/nbproject/project.xml --- a/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:07:17 2008 +0200 +++ b/samples/componentinjection/anagram-modular/nbproject/project.xml Sat Jun 14 10:07:21 2008 +0200 @@ -58,6 +58,12 @@ UTF-8 + + java + src-app-spring-scan + UTF-8 + + java src-app-lookup @@ -135,6 +141,10 @@ src-app-spring + + src-app-spring-scan + + src-app-lookup @@ -201,6 +211,12 @@ 1.5 + src-app-spring-scan + src-api:src-scrambler-simple:src-word-static:src-gui:../../libs/dist/spring-2.5.jar + build/app-spring-scan/classes + 1.5 + + src-app-lookup src-api:src-scrambler-simple:src-word-static:src-gui:../../libs/dist/org-openide-util.jar build/app-lookup/classes diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/AnagramsAnnotated.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/AnagramsAnnotated.java Sat Jun 14 10:07:21 2008 +0200 @@ -0,0 +1,22 @@ +package org.apidesign.anagram.app.springscan; + +import org.apidesign.anagram.api.Scrambler; +import org.apidesign.anagram.api.WordLibrary; +import org.apidesign.anagram.gui.AnagramsWithConstructor; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/* This class shall be in its own module, not here, but because of the need + * to see the @Service annotation, I've put it here. The right solution would + * be to add dependency of the module providing super class on spring and + * use the annotation directly there. + */ + +@Service("ui") +public class AnagramsAnnotated extends AnagramsWithConstructor { + @Autowired + public AnagramsAnnotated(WordLibrary library, Scrambler scrambler) { + super(library, scrambler); + } + +} diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/Main.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/Main.java Sat Jun 14 10:07:21 2008 +0200 @@ -0,0 +1,17 @@ +package org.apidesign.anagram.app.springscan; + +import org.apidesign.anagram.api.UI; +import org.springframework.context.ApplicationContext; +import org.springframework.context.support.ClassPathXmlApplicationContext; + +public final class Main { + private Main() { } + + public static void main(String[] args) throws Exception { + ApplicationContext context = new ClassPathXmlApplicationContext( + "org/apidesign/anagram/app/springscan/conf.xml" + ); + UI ui = (UI)context.getBean("ui", UI.class); + ui.display(); + } +} diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/SimpleScramblerAnnotated.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/SimpleScramblerAnnotated.java Sat Jun 14 10:07:21 2008 +0200 @@ -0,0 +1,15 @@ +package org.apidesign.anagram.app.springscan; + +import org.apidesign.anagram.scramblersimple.SimpleScrambler; +import org.springframework.stereotype.Service; + +/* This class shall be in its own module, not here, but because of the need + * to see the @Service annotation, I've put it here. The right solution would + * be to add dependency of the module providing super class on spring and + * use the annotation directly there. + */ + + +@Service +public class SimpleScramblerAnnotated extends SimpleScrambler { +} diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/StaticWordLibraryAnnotated.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/StaticWordLibraryAnnotated.java Sat Jun 14 10:07:21 2008 +0200 @@ -0,0 +1,15 @@ +package org.apidesign.anagram.app.springscan; + +import org.apidesign.anagram.wordstatic.StaticWordLibrary; +import org.springframework.stereotype.Service; + +/* This class shall be in its own module, not here, but because of the need + * to see the @Service annotation, I've put it here. The right solution would + * be to add dependency of the module providing super class on spring and + * use the annotation directly there. + */ + + +@Service +public class StaticWordLibraryAnnotated extends StaticWordLibrary { +} diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/conf.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/samples/componentinjection/anagram-modular/src-app-spring-scan/org/apidesign/anagram/app/springscan/conf.xml Sat Jun 14 10:07:21 2008 +0200 @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/AnagramsWithConstructor.java --- a/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/AnagramsWithConstructor.java Sat Jun 14 10:07:17 2008 +0200 +++ b/samples/componentinjection/anagram-modular/src-gui/org/apidesign/anagram/gui/AnagramsWithConstructor.java Sat Jun 14 10:07:21 2008 +0200 @@ -3,7 +3,7 @@ import org.apidesign.anagram.api.Scrambler; import org.apidesign.anagram.api.WordLibrary; -public final class AnagramsWithConstructor extends Anagrams { +public class AnagramsWithConstructor extends Anagrams { private final WordLibrary library; private final Scrambler scrambler; diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/src-scrambler-simple/org/apidesign/anagram/scramblersimple/SimpleScrambler.java --- a/samples/componentinjection/anagram-modular/src-scrambler-simple/org/apidesign/anagram/scramblersimple/SimpleScrambler.java Sat Jun 14 10:07:17 2008 +0200 +++ b/samples/componentinjection/anagram-modular/src-scrambler-simple/org/apidesign/anagram/scramblersimple/SimpleScrambler.java Sat Jun 14 10:07:21 2008 +0200 @@ -3,7 +3,7 @@ import java.util.Random; import org.apidesign.anagram.api.Scrambler; -public final class SimpleScrambler implements Scrambler { +public class SimpleScrambler implements Scrambler { private static final Random random = new Random(); public String scramble(String word) { diff -r b01da7eb41dd -r 3282ef5328a8 samples/componentinjection/anagram-modular/src-word-static/org/apidesign/anagram/wordstatic/StaticWordLibrary.java --- a/samples/componentinjection/anagram-modular/src-word-static/org/apidesign/anagram/wordstatic/StaticWordLibrary.java Sat Jun 14 10:07:17 2008 +0200 +++ b/samples/componentinjection/anagram-modular/src-word-static/org/apidesign/anagram/wordstatic/StaticWordLibrary.java Sat Jun 14 10:07:21 2008 +0200 @@ -4,7 +4,7 @@ import org.apidesign.anagram.api.WordLibrary; -public final class StaticWordLibrary implements WordLibrary { +public class StaticWordLibrary implements WordLibrary { private static String wordList[] = { "abstraction", "ambiguous",