pl.chilldev.web.spring.config.WebNamespaceHandler.java Source code

Java tutorial

Introduction

Here is the source code for pl.chilldev.web.spring.config.WebNamespaceHandler.java

Source

/**
 * This file is part of the ChillDev-Web.
 *
 * @license http://mit-license.org/ The MIT license
 * @copyright 2014  by Rafa Wrzeszcz - Wrzasq.pl.
 */

package pl.chilldev.web.spring.config;

import org.springframework.beans.factory.support.GenericBeanDefinition;
import org.springframework.beans.factory.xml.NamespaceHandlerSupport;

import pl.chilldev.web.spring.context.PageMetaModelFactoryBean;

/**
 * Handles Spring XML configuration namespace for ChillDev-Web.
 *
 * @version 0.0.2
 * @since 0.0.1
 */
public class WebNamespaceHandler extends NamespaceHandlerSupport {
    /**
     * Core initialization on-demand.
     */
    public static final String ELEMENT_HANDLEPAGEMODEL = "handle-page-model";

    /**
     * XML namespace.
     */
    public static final String ELEMENT_XMLNS = "xmlns";

    /**
     * Page title.
     */
    public static final String ELEMENT_TITLE = "title";

    /**
     * Metadata with `name=""` attribute as key.
     */
    public static final String ELEMENT_METANAME = "meta-name";

    /**
     * Metadata with `http-equiv=""` attribute as key.
     */
    public static final String ELEMENT_METAHTTPEQUIV = "meta-http-equiv";

    /**
     * Metadata with `property=""` attribute as key.
     */
    public static final String ELEMENT_METAPROPERTY = "meta-property";

    /**
     * Page keywords.
     */
    public static final String ELEMENT_KEYWORDS = "keywords";

    /**
     * `<script> element.
     */
    public static final String ELEMENT_SCRIPT = "script";

    /**
     * `<link> element.
     */
    public static final String ELEMENT_LINK = "link";

    /**
     * `<link> element with `rel=""` attribute set to `stylesheet`.
     */
    public static final String ELEMENT_STYLESHEET = "stylesheet";

    /**
     * {@inheritDoc}
     * @since 0.0.1
     */
    @Override
    public void init() {
        // create bean instance that will be subject for all other settings
        GenericBeanDefinition pageMetaModelFactoryBean = new GenericBeanDefinition();
        pageMetaModelFactoryBean.setBeanClass(PageMetaModelFactoryBean.class);

        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_HANDLEPAGEMODEL,
                new HandlePageModelBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_XMLNS,
                new XmlnsBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_TITLE,
                new TitleBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_METANAME,
                new MetaNameBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_METAHTTPEQUIV,
                new MetaHttpEquivBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_METAPROPERTY,
                new MetaPropertyBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_KEYWORDS,
                new MetaPropertyBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_SCRIPT,
                new ScriptBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_LINK,
                new LinkBeanDefinitionParser(pageMetaModelFactoryBean));
        this.registerBeanDefinitionParser(WebNamespaceHandler.ELEMENT_STYLESHEET,
                new StylesheetBeanDefinitionParser(pageMetaModelFactoryBean));
    }
}