予備知識。
  Woolpack を使用するための予備知識とその簡単な説明を以下に示す。(順不同)
  1. Java 言語(JSE5)
  2. OGNL(Object Graph Navigation Language)
     式言語の一種。Woolpack では Context 役に対する作用として定義することがほとんどである。 Woolpack では式言語を woolpack.el.EL インタフェースとして抽象化している。 そのため EL インタフェースを実装してJava言語で表記することもできるが、OGNLを利用することにより動的型定義の利点が維持される。 次の例はリクエストスコープのプロパティ名 "key0" に値 "value0" を設定する操作を表す。

     request.key0 = "value0"

     次の例はノードの属性 "name" の値が "name0" の場合、マップ config のキー "name0" の値を表す。

     config[node.getAttribute("name")]

     Java 言語の文字列として OGNL を指定する必要があるため、ダブルクォートがエスケープされることに注意する必要がある。
  3. XPath
     XML の位置を表すパス言語。Woolpack では基点から任意の距離を表す表現 "//" を多用する。 次の例はノードの属性 "id" の値が "dummy" であるか属性 "name" の値が "dummy" である基点以下の全てのエレメントを表す。

     //*[@id=\"dummy\" or @name=\"dummy\"]

     Jakarta Commons JXPath 1.2 では、XML だけでなく Java インスタンスの構造に対して XPath 拡張言語により検索と値設定が可能である。
  4. Generics(汎用型)
     型をパラメータ化して扱う言語機構。JSE5 からサポートされている。 静的型宣言により見える化が維持される。静的型定義により品質が維持される。 次の例はキー・値とも文字列型の HashMap の初期化宣言である。

     final Map<String,String> map = new HashMap<String,String>();

  5. DOM(Document Object Model)
     HTML または XML をオブジェクトで表現し操作するための API。 Woolpack では DOM による操作を Expression 役の実装でカプセル化するため、 ユーザが直接 DOM を操作することは少ない。
  6. 正規表現(java.util.regex パッケージ)
     文字列の集合を一つの形式で表現する言語(Wikipediaより)。 Woolpack では java.util.regex パッケージの正規表現を利用する。 Woolpack では url の変換・id(リクエスト・html)の変換・id による条件分岐・入力値の変換に正規表現を使用する。 次の正規表現は "user_registerConfirm","user_registerResult","user_updateConfirm","user_updateResult" にマッチする。

     user_(register|update)(Confirm|Result)

     正規表現を利用して値を変換することができる。 次の例は例えば"a0/a1/a2"を"a2"に変換するフォーマットの初期化宣言である。"$1"は1番目の丸括弧に該当する文字列を示す。

     new RegExpFormat("^.*/([^/]+)$", "$1"))

  7. コレクションフレームワーク(java.util パッケージ)
     コレクションとはオブジェクトのグループを表すオブジェクトのこと(JSE の API リファレンスより)。 重複要素を持たない Set、順序付けられた一覧を表す List、キーと値の組の集合を表す Map、一覧を表す Collection、一覧の反復子を表す Iterator などの概念を持つ。 またコレクションフレームワークには含まれないが、反復可能であることを表す Iterable を多用する。
  8. Servlet API
  9. HTML(Hyper Text Markup Language)
  10. JavaScript
  11. MVC2(Model-View-Controller2)アーキテクチャ

トップに戻る
Copyright (C) 2006 Takahiro Nakamura. All rights reserved.