Example usage for javax.servlet.jsp.tagext TagAttributeInfo TagAttributeInfo

List of usage examples for javax.servlet.jsp.tagext TagAttributeInfo TagAttributeInfo

Introduction

In this page you can find the example usage for javax.servlet.jsp.tagext TagAttributeInfo TagAttributeInfo.

Prototype

public TagAttributeInfo(String name, boolean required, String type, boolean reqTime, boolean fragment,
        String description, boolean deferredValue, boolean deferredMethod, String expectedTypeName,
        String methodSignature) 

Source Link

Document

JSP 2.1 Constructor for TagAttributeInfo.

Usage

From source file:org.tinygroup.jspengine.compiler.TagLibraryInfoImpl.java

private TagAttributeInfo createAttribute(TreeNode elem, String jspVersion) throws JasperException {

    String name = null;//  w  w w  .  java2  s  . c  om
    String type = null;
    boolean required = false, rtexprvalue = false, reqTime = false, isFragment = false;
    boolean deferredValue = false;
    boolean deferredMethod = false;
    String expectedType = "java.lang.Object";
    String methodSignature = "void method()";
    String description = null;

    Iterator list = elem.findChildren();
    while (list.hasNext()) {
        TreeNode element = (TreeNode) list.next();
        String tname = element.getName();

        if ("name".equals(tname)) {
            name = element.getBody();
        } else if ("required".equals(tname)) {
            String s = element.getBody();
            if (s != null)
                required = JspUtil.booleanValue(s);
        } else if ("rtexprvalue".equals(tname)) {
            String s = element.getBody();
            if (s != null)
                rtexprvalue = JspUtil.booleanValue(s);
        } else if ("type".equals(tname)) {
            type = element.getBody();
            if ("1.2".equals(jspVersion) && (type.equals("Boolean") || type.equals("Byte")
                    || type.equals("Character") || type.equals("Double") || type.equals("Float")
                    || type.equals("Integer") || type.equals("Long") || type.equals("Object")
                    || type.equals("Short") || type.equals("String"))) {
                type = "java.lang." + type;
            }
        } else if ("fragment".equals(tname)) {
            String s = element.getBody();
            if (s != null) {
                isFragment = JspUtil.booleanValue(s);
            }
        } else if ("description".equals(tname)) {
            description = element.getBody();
        } else if ("deferred-value".equals(tname)) {
            deferredValue = true;
            Iterator iter = element.findChildren();
            if (iter.hasNext()) {
                TreeNode element2 = (TreeNode) iter.next();
                tname = element2.getName();
                if ("type".equals(tname)) {
                    String s = element2.getBody();
                    if (s != null) {
                        expectedType = s;
                    }
                } else {
                    err.jspError("jsp.error.unknown.element.in.attribute", tname);
                }
            }
        } else if ("deferred-method".equals(tname)) {
            deferredMethod = true;
            Iterator iter = element.findChildren();
            if (iter.hasNext()) {
                TreeNode element2 = (TreeNode) iter.next();
                tname = element2.getName();
                if ("method-signature".equals(tname)) {
                    String s = element2.getBody();
                    if (s != null) {
                        methodSignature = s;
                    }
                } else {
                    err.jspError("jsp.error.unknown.element.in.attribute", tname);
                }
            }
        } else {
            err.jspError("jsp.error.unknown.element.in.attribute", tname);
        }
    }

    if (isFragment) {
        /*
         * According to JSP.C-3 ("TLD Schema Element Structure - tag"), 
         * 'type' and 'rtexprvalue' must not be specified if 'fragment'
         * has been specified (this will be enforced by validating parser).
         * Also, if 'fragment' is TRUE, 'type' is fixed at
         * javax.servlet.jsp.tagext.JspFragment, and 'rtexprvalue' is
         * fixed at true. See also JSP.8.5.2.
         */
        type = "javax.servlet.jsp.tagext.JspFragment";
        rtexprvalue = true;
    }

    if (!rtexprvalue) {
        // According to JSP spec, for static values (those determined at
        // translation time) the type is fixed at java.lang.String.
        type = "java.lang.String";
    }

    return new TagAttributeInfo(name, required, type, rtexprvalue, isFragment, description, deferredValue,
            deferredMethod, expectedType, methodSignature);
}