public void apply(Node.Nodes page, ErrorDispatcher err, PageInfo pageInfo)
      throws JasperException {

    init(err);
    if (tagPlugins == null || tagPlugins.size() == 0) {
      return;
    }

    this.pageInfo = pageInfo;

    page.visit(
        new Node.Visitor() {
          public void visit(Node.CustomTag n) throws JasperException {
            invokePlugin(n);
            visitBody(n);
          }
        });
  }
 public void generateJavaSource(String sourceCode) {
   curNodes.add(new Node.Scriptlet(sourceCode, node.getStart(), null));
 }
 public void generateAttribute(String attributeName) {
   curNodes.add(new Node.AttributeGenerator(node.getStart(), attributeName, node));
 }
 public void generateDeclaration(String id, String text) {
   if (pageInfo.isPluginDeclared(id)) {
     return;
   }
   curNodes.add(new Node.Declaration(text, node.getStart(), null));
 }