protected void configureLibraryCommon()

in tapestry-framework/src/org/apache/tapestry/parse/SpecificationParser.java [882:973]


    protected void configureLibraryCommon(SpecificationDigester digester, String rootElementName)
    {
        String pattern = rootElementName + "/page";

        // <page>

        digester.addValidate(
            pattern,
            "name",
            PAGE_NAME_PATTERN,
            "SpecificationParser.invalid-page-name");
        digester.addCallMethod(pattern, "setPageSpecificationPath", 2);
        digester.addCallParam(pattern, 0, "name");
        digester.addCallParam(pattern, 1, "specification-path");

        // <component-type>

        pattern = rootElementName + "/component-type";
        digester.addValidate(
            pattern,
            "type",
            COMPONENT_ALIAS_PATTERN,
            "SpecificationParser.invalid-component-type");
        digester.addCallMethod(pattern, "setComponentSpecificationPath", 2);
        digester.addCallParam(pattern, 0, "type");
        digester.addCallParam(pattern, 1, "specification-path");

        // <component-alias>
        // From 1.3 DTD, replaced with <component-type> in 3.0 DTD

        pattern = rootElementName + "/component-alias";
        digester.addValidate(
            pattern,
            "type",
            COMPONENT_ALIAS_PATTERN,
            "SpecificationParser.invalid-component-type");
        digester.addCallMethod(pattern, "setComponentSpecificationPath", 2);
        digester.addCallParam(pattern, 0, "type");
        digester.addCallParam(pattern, 1, "specification-path");

        // <service>

        pattern = rootElementName + "/service";

        digester.addValidate(
            pattern,
            "name",
            SERVICE_NAME_PATTERN,
            "SpecificationParser.invalid-service-name");
        digester.addCallMethod(pattern, "setServiceClassName", 2);
        digester.addCallParam(pattern, 0, "name");
        digester.addCallParam(pattern, 1, "class");

        // <library>

        pattern = rootElementName + "/library";

        digester.addValidate(
            pattern,
            "id",
            LIBRARY_ID_PATTERN,
            "SpecificationParser.invalid-library-id");
        digester.addRule(pattern, new DisallowFrameworkNamespaceRule());
        digester.addCallMethod(pattern, "setLibrarySpecificationPath", 2);
        digester.addCallParam(pattern, 0, "id");
        digester.addCallParam(pattern, 1, "specification-path");

        // <extension>

        pattern = rootElementName + "/extension";

        digester.addRule(pattern, new CreateExtensionSpecificationRule());
        digester.addValidate(
            pattern,
            "name",
            EXTENSION_NAME_PATTERN,
            "SpecificationParser.invalid-extension-name");
        digester.addSetBooleanProperty(pattern, "immediate", "immediate");
        digester.addSetLimitedProperties(pattern, "class", "className");
        digester.addConnectChild(pattern, "addExtensionSpecification", "name");

        // <configure> within <extension>

        pattern = rootElementName + "/extension/configure";
        digester.addValidate(
            pattern,
            "property-name",
            PROPERTY_NAME_PATTERN,
            "SpecificationParser.invalid-property-name");
        digester.addRule(pattern, new ProcessExtensionConfigurationRule());

    }