001    
002    /*
003     * Copyright (C) 2011 Archie L. Cobbs. All rights reserved.
004     *
005     * $Id: DellRoadStuffNamespaceHandler.java 214 2012-01-16 23:52:12Z archie.cobbs $
006     */
007    
008    package org.dellroad.stuff.spring;
009    
010    import org.springframework.beans.factory.xml.NamespaceHandlerSupport;
011    
012    /**
013     * Spring {@link org.springframework.beans.factory.xml.NamespaceHandler NamespaceHandler}
014     * for the <code>dellroad-stuff</code> XML namespace.
015     *
016     * <p>
017     * This adds support for the following Spring custom XML tags:
018     * <ul>
019     *  <li><code>&lt;dellroad-stuff:sql/&gt;</code>, which defines a {@link org.dellroad.stuff.schema.SQLCommandList} bean</li>
020     *  <li><code>&lt;dellroad-stuff:sql-update/&gt;</code>, which wraps a {@link org.dellroad.stuff.schema.SQLCommandList}
021     *  in a {@link org.dellroad.stuff.schema.SpringSQLSchemaUpdate} bean</li>
022     * </ul>
023     */
024    public class DellRoadStuffNamespaceHandler extends NamespaceHandlerSupport {
025    
026        public static final String NAMESPACE_URI = "http://dellroad-stuff.googlecode.com/schema/dellroad-stuff";
027    
028        public static final String SQL_ELEMENT_NAME = "sql";
029        public static final String SQL_UPDATE_ELEMENT_NAME = "sql-update";
030    
031        @Override
032        public void init() {
033            this.registerBeanDefinitionParser(SQL_ELEMENT_NAME, new SQLBeanDefinitionParser());
034            this.registerBeanDefinitionParser(SQL_UPDATE_ELEMENT_NAME, new SQLUpdateBeanDefinitionParser());
035        }
036    }
037