author | Jaroslav Tulach <jtulach@netbeans.org> |
Sat, 14 Jun 2008 10:07:00 +0200 | |
changeset 221 | a89ad3d1da08 |
child 222 | def08b238fa5 |
permissions | -rw-r--r-- |
jtulach@221 | 1 |
package org.apidesign.anagram.app.register; |
jtulach@221 | 2 |
|
jtulach@221 | 3 |
import java.util.logging.Level; |
jtulach@221 | 4 |
import java.util.logging.Logger; |
jtulach@221 | 5 |
import org.apidesign.anagram.api.Scrambler; |
jtulach@221 | 6 |
import org.apidesign.anagram.api.WordLibrary; |
jtulach@221 | 7 |
import org.apidesign.anagram.gui.Anagrams; |
jtulach@221 | 8 |
|
jtulach@221 | 9 |
public final class AnagramsWithProperties extends Anagrams { |
jtulach@221 | 10 |
private WordLibrary wordLibrary; |
jtulach@221 | 11 |
private Scrambler scrambler; |
jtulach@221 | 12 |
|
jtulach@221 | 13 |
public AnagramsWithProperties() { |
jtulach@221 | 14 |
} |
jtulach@221 | 15 |
|
jtulach@221 | 16 |
private static <T> Class<? extends T> loadImpl(Class<T> clazz) throws ClassNotFoundException { |
jtulach@221 | 17 |
String implName = System.getProperty(clazz.getName()); |
jtulach@221 | 18 |
assert implName != null; |
jtulach@221 | 19 |
ClassLoader loader = Thread.currentThread().getContextClassLoader(); |
jtulach@221 | 20 |
if (loader == null) { |
jtulach@221 | 21 |
loader = AnagramsWithProperties.class.getClassLoader(); |
jtulach@221 | 22 |
} |
jtulach@221 | 23 |
Class<?> impl = Class.forName(implName, false, loader); |
jtulach@221 | 24 |
return impl.asSubclass(clazz); |
jtulach@221 | 25 |
} |
jtulach@221 | 26 |
|
jtulach@221 | 27 |
|
jtulach@221 | 28 |
@Override |
jtulach@221 | 29 |
protected WordLibrary getWordLibrary() { |
jtulach@221 | 30 |
try { |
jtulach@221 | 31 |
if (wordLibrary == null) { |
jtulach@221 | 32 |
wordLibrary = loadImpl(WordLibrary.class).newInstance(); |
jtulach@221 | 33 |
} |
jtulach@221 | 34 |
return wordLibrary; |
jtulach@221 | 35 |
} catch (Exception ex) { |
jtulach@221 | 36 |
throw new IllegalStateException(ex); |
jtulach@221 | 37 |
} |
jtulach@221 | 38 |
} |
jtulach@221 | 39 |
|
jtulach@221 | 40 |
@Override |
jtulach@221 | 41 |
protected Scrambler getScrambler() { |
jtulach@221 | 42 |
try { |
jtulach@221 | 43 |
if (scrambler == null) { |
jtulach@221 | 44 |
scrambler = loadImpl(Scrambler.class).newInstance(); |
jtulach@221 | 45 |
} |
jtulach@221 | 46 |
return scrambler; |
jtulach@221 | 47 |
} catch (Exception ex) { |
jtulach@221 | 48 |
throw new IllegalStateException(ex); |
jtulach@221 | 49 |
} |
jtulach@221 | 50 |
} |
jtulach@221 | 51 |
} |