samples/componentinjection/anagram-modular/src-app-property/org/apidesign/anagram/app/property/AnagramsWithProperties.java
author Jaroslav Tulach <jtulach@netbeans.org>
Sat, 14 Jun 2008 10:07:30 +0200
changeset 233 15d31c98a129
parent 224 7a15b5efae6a
permissions -rw-r--r--
Making the examples more appropriate for the book
     1 package org.apidesign.anagram.app.property;
     2 
     3 import org.apidesign.anagram.api.Scrambler;
     4 import org.apidesign.anagram.api.WordLibrary;
     5 import org.apidesign.anagram.gui.Anagrams;
     6 
     7 public final class AnagramsWithProperties extends Anagrams {
     8     private WordLibrary wordLibrary;
     9     private Scrambler scrambler;
    10     
    11     public AnagramsWithProperties() {
    12     }
    13 
    14     // BEGIN: anagram.property
    15     @Override
    16     protected WordLibrary getWordLibrary() {
    17         try {
    18             if (wordLibrary == null) {
    19                 String implName = System.getProperty(
    20                     "org.apidesign.anagram.api.WordLibrary"
    21                 );
    22                 assert implName != null;
    23                 Class<?> impl = Class.forName(implName);
    24                 wordLibrary = (WordLibrary)impl.newInstance();
    25             }
    26             return wordLibrary;
    27         } catch (Exception ex) {
    28             throw new IllegalStateException(ex);
    29         }
    30     }
    31 
    32     @Override
    33     protected Scrambler getScrambler() {
    34         try {
    35             if (scrambler == null) {
    36                 String implName = System.getProperty(
    37                     "org.apidesign.anagram.api.Scrambler"
    38                 );
    39                 assert implName != null;
    40                 Class<?> impl = Class.forName(implName);
    41                 scrambler = (Scrambler)impl.newInstance();
    42             }
    43             return scrambler;
    44         } catch (Exception ex) {
    45             throw new IllegalStateException(ex);
    46         }
    47     }
    48     // END: anagram.property
    49 }