shohaku.sugina.beans
クラス MethodGraph

java.lang.Object
  拡張shohaku.sugina.beans.MethodGraph

public final class MethodGraph
extends java.lang.Object

簡易な記述式を基に、オブジェクトグラフをメソッドの連鎖として、再帰的に実行して最後の実行結果を戻り値として返却します。
このオブジェクトはスレッドセーフであることが保証されています。
MethodGraph.compile(String) から返されるインスタンスは不変オブジェクトです。
インスタンス生成の以降は、全ての処理がメソッド内で完結します。

処理例:

  // 以下の例は ((String[] ) bean.get("names"))[0].substring(0, 11) と同等です。
  
  MethodGraph methodGraph = MethodGraph.compile("get('names')[0].substring(0, 11)"); //コンパイル
 
  Map bean = new HashMap();
  bean.put("names", new String[] { "Aleksandros III Megas", "Napoléon Bonaparte", "jinkiz khān"});
  
  Object name = methodGraph.invoke(bean); //メソッドを再起的に呼び出し最後の結果を返す
  
  System.out.println("name=" + name);
  
  .....................
  name=Aleksandros  
 
構文内の引数やインデクサには、松柏ライブラリの提供する式言語の OGDL が使用されます。
OGDL はデータ生成に特化した簡易な式言語です。
参照:OGDL リファレンス

構文の説明:


フィールドの概要
static int LAST_ESC
          このモードが指定されると、パターン文字列が、構文式として認識できない書式で終了する場合に、それ以降の文字列を無視します。
 
メソッドの概要
static MethodGraph compile(java.lang.String pattern)
          書式パターンをコンパイルし MethodGraph インスタンスを返却します。
static MethodGraph compile(java.lang.String pattern, int flags)
          書式パターンをコンパイルし MethodGraph インスタンスを返却します。
 java.lang.Object invoke(java.lang.Object target)
          引数のオブジェクトを対象にして処理を実行します。
 java.lang.Object invoke(java.lang.Object target, java.lang.Object value)
          引数のオブジェクトを対象にして値の設定処理を実行します。
 java.lang.String pattern()
          コンパイル元の書式パターンを返します。
 java.lang.String toString()
          文字列表現を返却します。
 
クラス java.lang.Object から継承したメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

フィールドの詳細

LAST_ESC

public static final int LAST_ESC
このモードが指定されると、パターン文字列が、構文式として認識できない書式で終了する場合に、それ以降の文字列を無視します。
例として構文 "property[0].property;abcdewshjp..." はこのモードが指定されない場合は構文エラーが発生しますが、
このモードが指定された場合は、構文式以外の文字 ";" の地点で解析が終了しコンパイルが正常に終了します。

関連項目:
定数フィールド値
メソッドの詳細

invoke

public java.lang.Object invoke(java.lang.Object target)
                        throws shohaku.core.lang.IntrospectionBeansException
引数のオブジェクトを対象にして処理を実行します。

パラメータ:
target - 処理対象のオブジェクト
戻り値:
処理の戻り値、void の場合 null
例外:
shohaku.core.lang.IntrospectionBeansException - メソッドの呼出に失敗した場合

invoke

public java.lang.Object invoke(java.lang.Object target,
                               java.lang.Object value)
                        throws shohaku.core.lang.IntrospectionBeansException
引数のオブジェクトを対象にして値の設定処理を実行します。
パターンの最終的な処理対象が値設定可能である必要があります、メソッドには使用出来ません。

パラメータ:
target - 処理対象のオブジェクト
value - 設定する値
戻り値:
処理の戻り値、void の場合 null
例外:
shohaku.core.lang.IntrospectionBeansException - メソッドの呼出に失敗した場合

pattern

public java.lang.String pattern()
コンパイル元の書式パターンを返します。

戻り値:
コンパイル元の書式パターン

toString

public java.lang.String toString()
文字列表現を返却します。

戻り値:
文字列表現
関連項目:
Object.toString()

compile

public static MethodGraph compile(java.lang.String pattern)
書式パターンをコンパイルし MethodGraph インスタンスを返却します。

パラメータ:
pattern - 書式パターンを定義する文字列
戻り値:
コンパイルされた MethodGraph インスタンス
例外:
MethodGraphSyntaxException - 書式パターンの構文が無効である場合

compile

public static MethodGraph compile(java.lang.String pattern,
                                  int flags)
書式パターンをコンパイルし MethodGraph インスタンスを返却します。

パラメータ:
pattern - 書式パターンを定義する文字列
flags - コンパイルオプションを示すフラグ。LAST_EC などを含むビットマスク
戻り値:
コンパイルされた MethodGraph インスタンス
例外:
MethodGraphSyntaxException - 書式パターンの構文が無効である場合
java.lang.IllegalArgumentException - 定義されたマッチフラグに対応しないビット値が flags に設定された場合