001/* $Id: ContainerCustomRules.java 1102402 2011-05-12 18:03:26Z simonetripodi $
002 *
003 * Licensed to the Apache Software Foundation (ASF) under one or more
004 * contributor license agreements.  See the NOTICE file distributed with
005 * this work for additional information regarding copyright ownership.
006 * The ASF licenses this file to You under the Apache License, Version 2.0
007 * (the "License"); you may not use this file except in compliance with
008 * the License.  You may obtain a copy of the License at
009 *
010 *      http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing, software
013 * distributed under the License is distributed on an "AS IS" BASIS,
014 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015 * See the License for the specific language governing permissions and
016 * limitations under the License.
017 */
018
019package org.apache.commons.digester3.plugins;
020
021import org.apache.commons.digester3.Digester;
022import org.apache.commons.digester3.plugins.PluginCreateRule;
023import org.apache.commons.digester3.plugins.PluginDeclarationRule;
024
025public class ContainerCustomRules
026{
027    public static void addRules( Digester digester, String pattern )
028    {
029        // A Container object can have subtags called "widget" which
030        // define any object of type Widget. Because a Container is
031        // itself a widget, this allows us to build trees of objects.
032        PluginCreateRule pcr = new PluginCreateRule( Widget.class );
033        digester.addRule( pattern + "/widget", pcr );
034        digester.addSetNext( pattern + "/widget", "addChild" );
035
036        // allow users to declare plugins under a container as well
037        PluginDeclarationRule pdr = new PluginDeclarationRule();
038        digester.addRule( pattern + "/plugin", pdr );
039    }
040}