眺め読み #7 ModelManager
ModelManagerは、Diconファイルをパースした結果のDiconエレメントを保持します。
package org.seasar.kijimuna.core.dicon; public class ModelManager implements Serializable { private transient IProject project; private String projectName; // HashMap<String diconFilename, ContainerElement diconElement> private Map containerMap = new HashMap(); // HashMap<String diconFilename, HashSet<String javaOrIncludeDiconFile>> private Map relatedMap = new HashMap(); // Outlineが入る private Set listeners = new HashSet(); private transient IFileProcessor builder; private transient IFileProcessor validator;
containerMapには、Diconファイル名とSAXパースした結果のDiconエレメントが入ります。
relatedMapには、Diconファイル名と、そのDiconファイルが参照しているjavaファイルのリストが入ります。また、IncludeしているDiconファイルも入ります。
Diconファイルの変更時には、containerMapとrelatedMapを更新します。
javaファイルまたはIncludeされているDiconファイルの変更時には、relatedMapから参照しているDiconファイルを見つけ出して、containerMapを更新します。
フルビルド時は、containerMapとrelatedMapを空にして、すべてのDiconファイルについて、containerMapとrelatedMapを更新します。
Kijimunaプラグインの終了時に、ModelManagerをシリアライズでファイルに書き出しています。Kijimunaプラグインの開始時に、ファイルからModelManagerを復元しています。