public void doTag()

in core/src/main/java/org/apache/commons/jelly/tags/core/ArgTag.java [205:267]


    public void doTag(XMLOutput output) throws JellyTagException {
        invokeBody(output);

        Class klass = null;
        if ("boolean".equals(typeString)) {
            klass = Boolean.TYPE;
            assertNotNull(value);
        } else if ("byte".equals(typeString)) {
            klass = Byte.TYPE;
            assertNotNull(value);
        } else if ("short".equals(typeString)) {
            klass = Short.TYPE;
            assertNotNull(value);
        } else if ("int".equals(typeString)) {
            klass = Integer.TYPE;
            assertNotNull(value);
        } else if ("char".equals(typeString)) {
            klass = Character.TYPE;
            assertNotNull(value);
        } else if ("float".equals(typeString)) {
            klass = Float.TYPE;
            assertNotNull(value);
        } else if ("long".equals(typeString)) {
            klass = Long.TYPE;
            assertNotNull(value);
        } else if ("double".equals(typeString)) {
            klass = Double.TYPE;
            assertNotNull(value);
        } else if (null != typeString) {
            try {
              // klass = getClassLoader().loadClass(typeString);
              // JELLY-274: rather use the three args static class-load-method
              klass = Class.forName(typeString, false, getClassLoader());
            } catch (ClassNotFoundException e) {
                throw new JellyTagException(e);
            }
        } else if (null == value) { // and (by construction) null == typeString
            klass = Object.class;
        } else {
            klass = value.getClass();
        }

        if (!isInstanceOf(klass, value)) {
            if (klass.equals(Class.class)) {
                try {
                    // value = getClassLoader().loadClass((String) value);
                    // JELLY-274: rather use three-args class.forName
                    value = Class.forName((String) value, false, getClassLoader());
                } catch (ClassNotFoundException e) {
                    throw new JellyTagException(e);
                }
            } else {
                value = convert(klass, value);
            }
        }

        ArgTagParent parent = (ArgTagParent)findAncestorWithClass(ArgTagParent.class);
        if (null == parent) {
            throw new JellyTagException("This tag must be enclosed inside an ArgTagParent implementation (for example, <new> or <invoke>)");
        } else {
            parent.addArgument(klass, value);
        }
    }