深入浅出 jackrabbit 十三 查询之AST和QT
2009-09-17 00:00:00 来源:WEB开发网从这两个简单的类的关系中,我们可以看到如下事实:SimpleNode类接受一个Vistor,然后在vistor的vist方法中,会处理该SimpleNode,换句话说,一个domain对象会拿另外一个process对象来处理自己。
另外一个值得注意的是SimpleNode其实就是AST上的节点。下面一个主要工作就是处理AST上的节点,并且生成QueryNode Tree。
在visitor模式中,处理数据结构的主要逻辑在是visit方法,那么下面我们就来看看XPathVisitor实现类XPathQueryBuilder的visit方法,该方法中集中了AST转成QT的关键逻辑。代码如下:
Java代码
public Object visit(SimpleNode node, Object data) {
QueryNode queryNode = (QueryNode) data;
switch (node.getId()) {
case JJTXPATH2:
queryNode = createPathQueryNode(node);
break;
case JJTROOT:
case JJTROOTDESCENDANTS:
if (queryNode instanceof PathQueryNode) {
((PathQueryNode) queryNode).setAbsolute(true);
} else {
exceptions.add(new InvalidQueryException(
"Unsupported root level query node: " + queryNode));
}
break;
case JJTSTEPEXPR:
………………………..
return queryNode;
}
Tags:深入浅出 jackrabbit 十三
编辑录入:爽爽 [复制链接] [打 印]更多精彩
赞助商链接