woolpack.dom
クラス CacheNode

java.lang.Object
  上位を拡張 woolpack.dom.CacheNode
すべての実装されたインタフェース:
DomExpression
直系の既知のサブクラス:
LocaleCacheNode

public class CacheNode
extends java.lang.Object
implements DomExpression

DOM ノードをキャッシュするDomExpression。 委譲先で生成されるNodegetCacheKey(String)に対して一意であることを想定しているため並行性制御を行っていない。 適用しているパターン:Proxy, Template Method。

作成者:
nakamura

コンストラクタの概要
CacheNode(java.util.Map<java.lang.Object,org.w3c.dom.Node> cacheMap, DomExpression nodeMaker)
          コンストラクタ。
 
メソッドの概要
 java.lang.Object getCacheKey(java.lang.String id)
          委譲先で生成する DOM ノードを一意に識別するキーを取得するために呼び出される(called)。
 void interpret(DomContext context)
          DOM ノードを加工するために呼び出される(called)。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

CacheNode

public CacheNode(java.util.Map<java.lang.Object,org.w3c.dom.Node> cacheMap,
                 DomExpression nodeMaker)
コンストラクタ。

パラメータ:
cacheMap - キャッシュ。本クラスはこの引数の状態を変化させる。null が指定された場合はキャッシュを行わない。LinkedHashMap.removeEldestEntry(java.util.Map.Entry)を指定したLinkedHashMapを指定するとキャッシュの容量を制御することができる。HashMapなどの強参照のMapを指定すると容量制限のないキャッシュになる。WeakHashMapを指定すると弱参照によるキャッシュになる。
nodeMaker - DOM ノードを生成し加工する委譲先。
例外:
java.lang.NullPointerException - nodeMaker が null の場合。
メソッドの詳細

interpret

public void interpret(DomContext context)
インタフェース DomExpression の記述:
DOM ノードを加工するために呼び出される(called)。 実装クラスでは、引数が null でないことを前提としてよい。 実装クラスでRuntimeExceptionのサブ例外が発生する場合は JavaDoc コメントに記載すると部品の可用性が維持される。

定義:
インタフェース DomExpression 内の interpret
パラメータ:
context - コンテキスト。
例外:
java.lang.NullPointerException - 引数または生成されたDomContext.getNode()が null の場合。

getCacheKey

public java.lang.Object getCacheKey(java.lang.String id)
委譲先で生成する DOM ノードを一意に識別するキーを取得するために呼び出される(called)。 WeakHashMapにより GC されるようにするため、デフォルトは id でなく new String(id) を返す。 Localeや端末ごとに DOM ノードをキャッシュする際にオーバライドする。 オーバライドする際は DOM ノードを生成するクラスと整合性を保つ必要がある。

パラメータ:
id - 委譲先で DOM ノードを生成するのに使用した id。
戻り値:
委譲先で生成する DOM ノードを一意に識別するキー。


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