private static boolean starting = false;
private static boolean ready = false;
+ private static ThreadSetup threadSetup = null;
private static LRUCacheMap<String, Transliterator> cache = new LRUCacheMap<String, Transliterator>(4);
// Whom to notify when we're all set up and ready to go.
return result;
}
- public static synchronized boolean init(final Callback callback) {
+ public static synchronized boolean init(final Callback callback, final ThreadSetup setupCallback) {
if (ready) {
return true;
}
}
if (!starting) {
starting = true;
+ threadSetup = setupCallback;
new Thread(init).start();
}
return false;
private static final Runnable init = new Runnable() {
@Override
public void run() {
+ synchronized (TransliteratorManager.class) {
+ if (threadSetup != null) threadSetup.onThreadStart();
+ }
System.out.println("Starting Transliterator load.");
final String transliterated = get(Language.en.getDefaultNormalizerRules()).transliterate("Îñţérñåţîöñåļîžåţîờñ");
if (!"internationalization".equals(transliterated)) {
}
};
+ public interface ThreadSetup {
+ void onThreadStart();
+ }
+
public interface Callback {
void onTransliteratorReady();
}