}
});
digester.setValidating(true);
// dictionary rules
digester.addRule("*/key", new ObjectCreateRule(PListNode.class)
{
public void end() throws Exception
{
// leave the node on the stack to set the value
}
});
digester.addCallMethod("*/key", "setName", 0);
digester.addRule("*/dict/string", new SetNextAndPopRule("addChild"));
digester.addRule("*/dict/data", new SetNextAndPopRule("addChild"));
digester.addRule("*/dict/integer", new SetNextAndPopRule("addChild"));
digester.addRule("*/dict/real", new SetNextAndPopRule("addChild"));
digester.addRule("*/dict/true", new SetNextAndPopRule("addChild"));
digester.addRule("*/dict/false", new SetNextAndPopRule("addChild"));
digester.addRule("*/dict/date", new SetNextAndPopRule("addChild"));
digester.addRule("*/dict/dict", new SetNextAndPopRule("addChild"));
digester.addCallMethod("*/dict/string", "addValue", 0);
digester.addCallMethod("*/dict/data", "addDataValue", 0);
digester.addCallMethod("*/dict/integer", "addIntegerValue", 0);
digester.addCallMethod("*/dict/real", "addRealValue", 0);
digester.addCallMethod("*/dict/true", "addTrueValue");
digester.addCallMethod("*/dict/false", "addFalseValue");
digester.addCallMethod("*/dict/date", "addDateValue", 0);
// rules for arrays
digester.addRule("*/dict/array", new SetNextAndPopRule("addChild"));
digester.addRule("*/dict/array", new ObjectCreateRule(ArrayNode.class));
digester.addSetNext("*/dict/array", "addList");
digester.addRule("*/array/array", new ObjectCreateRule(ArrayNode.class));
digester.addSetNext("*/array/array", "addList");
digester.addCallMethod("*/array/string", "addValue", 0);
digester.addCallMethod("*/array/data", "addDataValue", 0);
digester.addCallMethod("*/array/integer", "addIntegerValue", 0);