woolpack.misc
クラス MiscUtils

java.lang.Object
  上位を拡張 woolpack.misc.MiscUtils

public final class MiscUtils
extends Object

多雑な部品のユーティリティです。


メソッドの概要
static
<C> Runnable
fnRunnable(Fn<? super C,?,? extends RuntimeException> fn, C c)
          Fnに委譲するRunnableを生成します。
static
<C,R,E extends Exception>
Fn<C,R,E>
lapTime(Fn<? super C,? extends R,? extends E> fn, Fn<? super Long,?,? extends E> reportFn)
          委譲先の実行時間を測定する関数を生成します。
static
<C,R,E extends Exception,E1 extends Exception>
Fn<C,R,E>
loadBalancer(Fn<Object,? extends Fn<? super C,? extends R,? extends E>,? extends E1> factory, int length)
          複数のスレッドで同時に実行することができないFnを、 複数生成することにより並行に実行するようにみせる関数を生成します。
static
<C,R> Fn<C,R,IllegalStateException>
retry(Fn<? super C,? extends R,? extends Exception> fn, int count)
          成功するまでリトライする関数を生成します。
static
<C,R,E extends Exception>
Fn<C,R,E>
retry(Fn<? super C,? extends R,? extends Exception> fn, int count, Fn<? super Exception,?,? extends E> errorFn, Fn<? super Exception,? extends R,? extends E> finalFn)
          成功するまでリトライする関数を生成します。
static
<R> Fn<Object,R,RuntimeException>
runnableFn(Runnable runnable)
          Runnableに委譲する関数を生成します。
static
<C,R> Fn<C,R,InterruptedException>
sleep(long sleepMillis)
          スリープする関数を生成します。
static
<R,E extends Exception>
Fn<Locale,R,E>
switchNearLocale(Map<? super Locale,? extends R> map, Fn<? super Locale,? extends R,? extends E> defaultFn)
          一覧から指定されたロケールに最も近いロケールをキーとして値を返す関数を生成します。
static
<R> Fn<Object,R,RuntimeException>
threadLocal(ThreadLocal<? extends R> threadLocal)
          ThreadLocal.get()を返す関数を生成します。
static
<R> Fn<String,R,IllegalStateException>
tryLocales(Fn<? super String,? extends R,? extends Exception> fn, ThreadLocal<Locale> threadLocal)
          Localeを元に id に接尾辞を付加して成功するまで委譲する関数を生成します。
static
<R,E extends Exception>
Fn<String,R,E>
tryLocales(Fn<? super String,? extends R,? extends Exception> fn, ThreadLocal<Locale> threadLocal, Fn<? super Exception,?,? extends E> errorFn, Fn<? super Exception,? extends R,? extends E> finalFn)
          Localeを元に id に接尾辞を付加して成功するまで委譲する関数を生成します。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

メソッドの詳細

lapTime

public static <C,R,E extends Exception> Fn<C,R,E> lapTime(Fn<? super C,? extends R,? extends E> fn,
                                                          Fn<? super Long,?,? extends E> reportFn)
委譲先の実行時間を測定する関数を生成します。
適用しているデザインパターン:FnのComposite。

型パラメータ:
C -
R -
E -
パラメータ:
fn - 委譲先。
reportFn - 結果の送付先。
戻り値:
関数。

loadBalancer

public static <C,R,E extends Exception,E1 extends Exception> Fn<C,R,E> loadBalancer(Fn<Object,? extends Fn<? super C,? extends R,? extends E>,? extends E1> factory,
                                                                                    int length)
                                                throws Exception
複数のスレッドで同時に実行することができないFnを、 複数生成することにより並行に実行するようにみせる関数を生成します。
適用しているデザインパターン:内部でFnのCompositeを生成して使用するBuilder。

型パラメータ:
C -
R -
E -
E1 -
パラメータ:
factory - 複数のスレッドで同時に実行できないFnのファクトリ。
length - 並行実行数。
戻り値:
関数。
例外:
IllegalArgumentException - length がゼロ以下の場合。
Exception - Fnの生成に失敗した場合。

fnRunnable

public static <C> Runnable fnRunnable(Fn<? super C,?,? extends RuntimeException> fn,
                                      C c)
Fnに委譲するRunnableを生成します。
適用しているデザインパターン:FnのAdapter。

型パラメータ:
C -
パラメータ:
fn - 委譲先。
c - 委譲先に渡す値。
戻り値:
ランナブル。

runnableFn

public static <R> Fn<Object,R,RuntimeException> runnableFn(Runnable runnable)
Runnableに委譲する関数を生成します。 Fn.exec(Object)は null を返します。
適用しているデザインパターン:RunnableのAdapter。

型パラメータ:
R -
パラメータ:
runnable - ランナブル。
戻り値:
関数。

sleep

public static <C,R> Fn<C,R,InterruptedException> sleep(long sleepMillis)
スリープする関数を生成します。

型パラメータ:
C -
R -
パラメータ:
sleepMillis - スリープ時間。
戻り値:
関数。

switchNearLocale

public static <R,E extends Exception> Fn<Locale,R,E> switchNearLocale(Map<? super Locale,? extends R> map,
                                                                      Fn<? super Locale,? extends R,? extends E> defaultFn)
一覧から指定されたロケールに最も近いロケールをキーとして値を返す関数を生成します。
適用しているデザインパターン:FnのProxy。

型パラメータ:
R -
E -
パラメータ:
map - マップ。
defaultFn - 引数に対応する値が null の場合の委譲先。
戻り値:
関数。

threadLocal

public static <R> Fn<Object,R,RuntimeException> threadLocal(ThreadLocal<? extends R> threadLocal)
ThreadLocal.get()を返す関数を生成します。
適用しているデザインパターン:ThreadLocalのAdapter。

型パラメータ:
R -
パラメータ:
threadLocal - スレッドローカル。
戻り値:
関数。

tryLocales

public static <R,E extends Exception> Fn<String,R,E> tryLocales(Fn<? super String,? extends R,? extends Exception> fn,
                                                                ThreadLocal<Locale> threadLocal,
                                                                Fn<? super Exception,?,? extends E> errorFn,
                                                                Fn<? super Exception,? extends R,? extends E> finalFn)
Localeを元に id に接尾辞を付加して成功するまで委譲する関数を生成します。 このクラスは LSP(The Liskov Substitution Principle) を満たしません。
適用しているデザインパターン:FnのComposite、FnのProxy。

型パラメータ:
R -
E -
パラメータ:
fn - 委譲先。
threadLocal - 現在のスレッドのLocaleを保持するスレッドローカル。
errorFn - エラー発生時の委譲先。
finalFn - 全て成功しなかった場合の委譲先。
戻り値:
関数。

tryLocales

public static <R> Fn<String,R,IllegalStateException> tryLocales(Fn<? super String,? extends R,? extends Exception> fn,
                                                                ThreadLocal<Locale> threadLocal)
Localeを元に id に接尾辞を付加して成功するまで委譲する関数を生成します。 このクラスは LSP(The Liskov Substitution Principle) を満たしません。 全て成功しなかった場合はIllegalStateExceptionを投げます。

型パラメータ:
R -
パラメータ:
fn - 委譲先。
threadLocal - 現在のスレッドのLocaleを保持するスレッドローカル。
戻り値:
関数。
関連項目:
tryLocales(Fn, ThreadLocal, Fn, Fn)

retry

public static <C,R,E extends Exception> Fn<C,R,E> retry(Fn<? super C,? extends R,? extends Exception> fn,
                                                        int count,
                                                        Fn<? super Exception,?,? extends E> errorFn,
                                                        Fn<? super Exception,? extends R,? extends E> finalFn)
成功するまでリトライする関数を生成します。
適用しているデザインパターン:FnのComposite。

型パラメータ:
C -
R -
E -
パラメータ:
fn - 委譲先。
count - リトライ回数。
errorFn - エラー発生時の委譲先。
finalFn - 全て成功しなかった場合の委譲先。
戻り値:
関数。

retry

public static <C,R> Fn<C,R,IllegalStateException> retry(Fn<? super C,? extends R,? extends Exception> fn,
                                                        int count)
成功するまでリトライする関数を生成します。 全て成功しなかった場合はIllegalStateExceptionを投げます。

型パラメータ:
C -
R -
パラメータ:
fn - 委譲先。
count - リトライ回数。
戻り値:
関数。
関連項目:
retry(Fn, int, Fn, Fn)


Copyright (C) 2006-2007 Takahiro Nakamura. All rights reserved.