samples/componentinjection/anagram-modular/src-app-register/org/apidesign/anagram/app/register/Launcher.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 10:07:30 +0200
changeset 233 15d31c98a129
parent 219 3fb53f65db57
permissions -rw-r--r--
Making the examples more appropriate for the book
     1 package org.apidesign.anagram.app.register;
     2 
     3 import org.apidesign.anagram.api.Scrambler;
     4 import org.apidesign.anagram.api.UI;
     5 import org.apidesign.anagram.api.WordLibrary;
     6 
     7 // BEGIN: anagram.programatic.register
     8 public final class Launcher {
     9     private static Class<? extends WordLibrary> wordLibrary;
    10     private static Class<? extends Scrambler> scrambler;
    11     private static Class<? extends UI> ui;
    12     
    13     
    14     private Launcher() {
    15     }
    16 
    17     
    18     public static void registerWordLibrary(
    19         Class<? extends WordLibrary> libraryClass
    20     ) {
    21         wordLibrary = libraryClass;
    22     }
    23     public static void registerScrambler(
    24         Class<? extends Scrambler> scramblerClass
    25     ) {
    26         scrambler = scramblerClass;
    27     }
    28     public static void registerUI(Class<? extends UI> uiClass) {
    29         ui = uiClass;
    30     }
    31     
    32     public static UI launch() throws Exception {
    33         WordLibrary w = wordLibrary.newInstance();
    34         Scrambler s = scrambler.newInstance();
    35         return ui.getConstructor(
    36             WordLibrary.class, Scrambler.class
    37         ).newInstance(w, s);
    38     }
    39 }
    40 // END: anagram.programatic.register