void element()

in tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java [365:462]


    void element(TemplateParserState initialState)
    {
        TemplateParserState state = setupForElement(initialState);

        String uri = tokenStream.getNamespaceURI();
        String name = tokenStream.getLocalName();
        Version version = NAMESPACE_URI_TO_VERSION.get(uri);

        if (T_5_1.sameOrEarlier(version))
        {

            if (name.equalsIgnoreCase("remove"))
            {
                removeContent();

                return;
            }

            if (name.equalsIgnoreCase("content"))
            {
                limitContent(state);

                return;
            }

            if (name.equalsIgnoreCase("extension-point"))
            {
                extensionPoint(state);

                return;
            }

            if (name.equalsIgnoreCase("replace"))
            {
                throw new RuntimeException(
                        "The <replace> element may only appear directly within an extend element.");
            }

            if (MUST_BE_ROOT.contains(name))
                mustBeRoot(name);
        }

        if (version != null)
        {

            if (name.equalsIgnoreCase("body"))
            {
                body();
                return;
            }

            if (name.equalsIgnoreCase("container"))
            {
                mustBeRoot(name);
            }

            if (name.equalsIgnoreCase("block"))
            {
                block(state);
                return;
            }

            if (name.equalsIgnoreCase("parameter"))
            {
                if (T_5_3.sameOrEarlier(version))
                {
                    throw new RuntimeException(
                            String.format("The <parameter> element has been deprecated in Tapestry 5.3 in favour of '%s' namespace.", TAPESTRY_PARAMETERS_URI));
                }

                classicParameter(state);

                return;
            }

            possibleTapestryComponent(state, null, tokenStream.getLocalName().replace('.', '/'));

            return;
        }

        if (uri != null && uri.startsWith(LIB_NAMESPACE_URI_PREFIX))
        {
            libraryNamespaceComponent(state);

            return;
        }

        if (TAPESTRY_PARAMETERS_URI.equals(uri))
        {
            parameterElement(state);

            return;
        }

        // Just an ordinary element ... unless it has t:id or t:type

        possibleTapestryComponent(state, tokenStream.getLocalName(), null);
    }