Search in sources :

Example 1 with Visitor

use of org.apache.tapestry5.dom.Visitor in project tapestry-5 by apache.

the class MethodNode method accept.

/**
 * Makes the given method visitor visit this method.
 *
 * @param methodVisitor a method visitor.
 */
public void accept(final MethodVisitor methodVisitor) {
    // Visit the parameters.
    if (parameters != null) {
        for (int i = 0, n = parameters.size(); i < n; i++) {
            parameters.get(i).accept(methodVisitor);
        }
    }
    // Visit the annotations.
    if (annotationDefault != null) {
        AnnotationVisitor annotationVisitor = methodVisitor.visitAnnotationDefault();
        AnnotationNode.accept(annotationVisitor, null, annotationDefault);
        if (annotationVisitor != null) {
            annotationVisitor.visitEnd();
        }
    }
    if (visibleAnnotations != null) {
        for (int i = 0, n = visibleAnnotations.size(); i < n; ++i) {
            AnnotationNode annotation = visibleAnnotations.get(i);
            annotation.accept(methodVisitor.visitAnnotation(annotation.desc, true));
        }
    }
    if (invisibleAnnotations != null) {
        for (int i = 0, n = invisibleAnnotations.size(); i < n; ++i) {
            AnnotationNode annotation = invisibleAnnotations.get(i);
            annotation.accept(methodVisitor.visitAnnotation(annotation.desc, false));
        }
    }
    if (visibleTypeAnnotations != null) {
        for (int i = 0, n = visibleTypeAnnotations.size(); i < n; ++i) {
            TypeAnnotationNode typeAnnotation = visibleTypeAnnotations.get(i);
            typeAnnotation.accept(methodVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, true));
        }
    }
    if (invisibleTypeAnnotations != null) {
        for (int i = 0, n = invisibleTypeAnnotations.size(); i < n; ++i) {
            TypeAnnotationNode typeAnnotation = invisibleTypeAnnotations.get(i);
            typeAnnotation.accept(methodVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, false));
        }
    }
    if (visibleAnnotableParameterCount > 0) {
        methodVisitor.visitAnnotableParameterCount(visibleAnnotableParameterCount, true);
    }
    if (visibleParameterAnnotations != null) {
        for (int i = 0, n = visibleParameterAnnotations.length; i < n; ++i) {
            List<AnnotationNode> parameterAnnotations = visibleParameterAnnotations[i];
            if (parameterAnnotations == null) {
                continue;
            }
            for (int j = 0, m = parameterAnnotations.size(); j < m; ++j) {
                AnnotationNode annotation = parameterAnnotations.get(j);
                annotation.accept(methodVisitor.visitParameterAnnotation(i, annotation.desc, true));
            }
        }
    }
    if (invisibleAnnotableParameterCount > 0) {
        methodVisitor.visitAnnotableParameterCount(invisibleAnnotableParameterCount, false);
    }
    if (invisibleParameterAnnotations != null) {
        for (int i = 0, n = invisibleParameterAnnotations.length; i < n; ++i) {
            List<AnnotationNode> parameterAnnotations = invisibleParameterAnnotations[i];
            if (parameterAnnotations == null) {
                continue;
            }
            for (int j = 0, m = parameterAnnotations.size(); j < m; ++j) {
                AnnotationNode annotation = parameterAnnotations.get(j);
                annotation.accept(methodVisitor.visitParameterAnnotation(i, annotation.desc, false));
            }
        }
    }
    // Visit the non standard attributes.
    if (visited) {
        instructions.resetLabels();
    }
    if (attrs != null) {
        for (int i = 0, n = attrs.size(); i < n; ++i) {
            methodVisitor.visitAttribute(attrs.get(i));
        }
    }
    // Visit the code.
    if (instructions.size() > 0) {
        methodVisitor.visitCode();
        // Visits the try catch blocks.
        if (tryCatchBlocks != null) {
            for (int i = 0, n = tryCatchBlocks.size(); i < n; ++i) {
                tryCatchBlocks.get(i).updateIndex(i);
                tryCatchBlocks.get(i).accept(methodVisitor);
            }
        }
        // Visit the instructions.
        instructions.accept(methodVisitor);
        // Visits the local variables.
        if (localVariables != null) {
            for (int i = 0, n = localVariables.size(); i < n; ++i) {
                localVariables.get(i).accept(methodVisitor);
            }
        }
        // Visits the local variable annotations.
        if (visibleLocalVariableAnnotations != null) {
            for (int i = 0, n = visibleLocalVariableAnnotations.size(); i < n; ++i) {
                visibleLocalVariableAnnotations.get(i).accept(methodVisitor, true);
            }
        }
        if (invisibleLocalVariableAnnotations != null) {
            for (int i = 0, n = invisibleLocalVariableAnnotations.size(); i < n; ++i) {
                invisibleLocalVariableAnnotations.get(i).accept(methodVisitor, false);
            }
        }
        methodVisitor.visitMaxs(maxStack, maxLocals);
        visited = true;
    }
    methodVisitor.visitEnd();
}
Also used : AnnotationVisitor(org.apache.tapestry5.internal.plastic.asm.AnnotationVisitor)

Example 2 with Visitor

use of org.apache.tapestry5.dom.Visitor in project tapestry-5 by apache.

the class RecordComponentNode method accept.

/**
 * Makes the given class visitor visit this record component.
 *
 * @param classVisitor a class visitor.
 */
public void accept(final ClassVisitor classVisitor) {
    RecordComponentVisitor recordComponentVisitor = classVisitor.visitRecordComponent(name, descriptor, signature);
    if (recordComponentVisitor == null) {
        return;
    }
    // Visit the annotations.
    if (visibleAnnotations != null) {
        for (int i = 0, n = visibleAnnotations.size(); i < n; ++i) {
            AnnotationNode annotation = visibleAnnotations.get(i);
            annotation.accept(recordComponentVisitor.visitAnnotation(annotation.desc, true));
        }
    }
    if (invisibleAnnotations != null) {
        for (int i = 0, n = invisibleAnnotations.size(); i < n; ++i) {
            AnnotationNode annotation = invisibleAnnotations.get(i);
            annotation.accept(recordComponentVisitor.visitAnnotation(annotation.desc, false));
        }
    }
    if (visibleTypeAnnotations != null) {
        for (int i = 0, n = visibleTypeAnnotations.size(); i < n; ++i) {
            TypeAnnotationNode typeAnnotation = visibleTypeAnnotations.get(i);
            typeAnnotation.accept(recordComponentVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, true));
        }
    }
    if (invisibleTypeAnnotations != null) {
        for (int i = 0, n = invisibleTypeAnnotations.size(); i < n; ++i) {
            TypeAnnotationNode typeAnnotation = invisibleTypeAnnotations.get(i);
            typeAnnotation.accept(recordComponentVisitor.visitTypeAnnotation(typeAnnotation.typeRef, typeAnnotation.typePath, typeAnnotation.desc, false));
        }
    }
    // Visit the non standard attributes.
    if (attrs != null) {
        for (int i = 0, n = attrs.size(); i < n; ++i) {
            recordComponentVisitor.visitAttribute(attrs.get(i));
        }
    }
    recordComponentVisitor.visitEnd();
}
Also used : RecordComponentVisitor(org.apache.tapestry5.internal.plastic.asm.RecordComponentVisitor)

Example 3 with Visitor

use of org.apache.tapestry5.dom.Visitor in project tapestry-5 by apache.

the class AbstractSelectModel method visit.

public final void visit(SelectModelVisitor visitor) {
    List<OptionGroupModel> groups = getOptionGroups();
    if (groups != null) {
        for (OptionGroupModel groupModel : groups) {
            visitor.beginOptionGroup(groupModel);
            visitOptions(groupModel.getOptions(), visitor);
            visitor.endOptionGroup(groupModel);
        }
    }
    visitOptions(getOptions(), visitor);
}
Also used : OptionGroupModel(org.apache.tapestry5.OptionGroupModel)

Example 4 with Visitor

use of org.apache.tapestry5.dom.Visitor in project tapestry-5 by apache.

the class PlasticInternalUtils method dissasembleBytecode.

public static String dissasembleBytecode(ClassNode classNode) {
    StringWriter stringWriter = new StringWriter();
    PrintWriter writer = new PrintWriter(stringWriter);
    TraceClassVisitor visitor = new TraceClassVisitor(writer);
    classNode.accept(visitor);
    writer.close();
    return stringWriter.toString();
}
Also used : TraceClassVisitor(org.apache.tapestry5.internal.plastic.asm.util.TraceClassVisitor)

Example 5 with Visitor

use of org.apache.tapestry5.dom.Visitor in project tapestry-5 by apache.

the class PageTester method pushFieldValuesIntoRequest.

private void pushFieldValuesIntoRequest(Element form) {
    Visitor visitor = new Visitor() {

        public void visit(Element element) {
            if (InternalUtils.isNonBlank(element.getAttribute("disabled")))
                return;
            String name = element.getName();
            if (name.equals("input")) {
                String type = extractNonBlank(element, "type");
                if (type.equals("radio") || type.equals("checkbox")) {
                    if (InternalUtils.isBlank(element.getAttribute("checked")))
                        return;
                }
                if (type.equals("button") || type.equals("submit"))
                    return;
                // Handle radio, checkbox, text, radio, hidden
                String value = element.getAttribute("value");
                if (InternalUtils.isNonBlank(value))
                    request.loadParameter(extractNonBlank(element, "name"), value);
                return;
            }
            if (name.equals("option")) {
                String value = element.getAttribute("value");
                if (InternalUtils.isNonBlank(element.getAttribute("selected"))) {
                    String selectName = extractNonBlank(findAncestor(element, "select"), "name");
                    request.loadParameter(selectName, value);
                }
                return;
            }
            if (name.equals("textarea")) {
                String content = element.getChildMarkup();
                if (InternalUtils.isNonBlank(content))
                    request.loadParameter(extractNonBlank(element, "name"), content);
                return;
            }
        }
    };
    form.visit(visitor);
}
Also used : Visitor(org.apache.tapestry5.dom.Visitor) Element(org.apache.tapestry5.dom.Element)

Aggregations

AnnotationVisitor (org.apache.tapestry5.internal.plastic.asm.AnnotationVisitor)2 ArrayList (java.util.ArrayList)1 List (java.util.List)1 OptionGroupModel (org.apache.tapestry5.OptionGroupModel)1 Element (org.apache.tapestry5.dom.Element)1 Visitor (org.apache.tapestry5.dom.Visitor)1 FieldVisitor (org.apache.tapestry5.internal.plastic.asm.FieldVisitor)1 MethodVisitor (org.apache.tapestry5.internal.plastic.asm.MethodVisitor)1 RecordComponentVisitor (org.apache.tapestry5.internal.plastic.asm.RecordComponentVisitor)1 TraceClassVisitor (org.apache.tapestry5.internal.plastic.asm.util.TraceClassVisitor)1