WEB开发网
开发学院软件开发Java 深入浅出 jackrabbit 十三 查询之AST和QT 阅读

深入浅出 jackrabbit 十三 查询之AST和QT

 2009-09-17 00:00:00 来源:WEB开发网   
核心提示: 从这两个简单的类的关系中,我们可以看到如下事实:SimpleNode类接受一个Vistor,深入浅出 jackrabbit 十三 查询之AST和QT(3),然后在vistor的vist方法中,会处理该SimpleNode,处理数据结构的主要逻辑在是visit方法,那么下面我们就来看看XPathV

从这两个简单的类的关系中,我们可以看到如下事实: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; 
  }

上一页  1 2 3 4 5 6  下一页

Tags:深入浅出 jackrabbit 十三

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接