KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > struts > tiles > xmlDefinition > XmlDefinitionsSet


1 /*
2  * $Id: XmlDefinitionsSet.java 54929 2004-10-16 16:38:42Z germuska $
3  *
4  * Copyright 1999-2004 The Apache Software Foundation.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */

18
19
20 package org.apache.struts.tiles.xmlDefinition;
21
22 import java.util.HashMap JavaDoc;
23 import java.util.Iterator JavaDoc;
24 import java.util.Map JavaDoc;
25
26 import org.apache.struts.tiles.NoSuchDefinitionException;
27
28 /**
29  * A set of definitions read from XML definitions file.
30 */

31 public class XmlDefinitionsSet
32 {
33     /** Defined definitions. */
34   protected Map JavaDoc definitions;
35
36      /**
37       * Constructor.
38       */

39   public XmlDefinitionsSet()
40    {
41    definitions = new HashMap JavaDoc();
42    }
43
44   /**
45    * Put definition in set.
46    * @param definition Definition to add.
47    */

48   public void putDefinition(XmlDefinition definition)
49   {
50   definitions.put( definition.getName(), definition );
51   }
52
53   /**
54    * Get requested definition.
55    * @param name Definition name.
56    */

57   public XmlDefinition getDefinition(String JavaDoc name)
58   {
59   return (XmlDefinition)definitions.get( name );
60   }
61
62   /**
63    * Get definitions map.
64    */

65   public Map JavaDoc getDefinitions()
66   {
67   return definitions;
68   }
69
70   /**
71    * Resolve extended instances.
72    */

73   public void resolveInheritances() throws NoSuchDefinitionException
74     {
75       // Walk through all definitions and resolve individual inheritance
76
Iterator JavaDoc i = definitions.values().iterator();
77     while( i.hasNext() )
78       {
79       XmlDefinition definition = (XmlDefinition)i.next();
80       definition.resolveInheritance( this );
81       } // end loop
82
}
83
84   /**
85    * Add definitions from specified child definitions set.
86    * For each definition in child, look if it already exists in this set.
87    * If not, add it, if yes, overload parent's definition with child definition.
88    * @param child Definition used to overload this object.
89    */

90   public void extend( XmlDefinitionsSet child )
91     {
92     if(child==null)
93       return;
94     Iterator JavaDoc i = child.getDefinitions().values().iterator();
95     while( i.hasNext() )
96       {
97       XmlDefinition childInstance = (XmlDefinition)i.next();
98       XmlDefinition parentInstance = getDefinition(childInstance.getName() );
99       if( parentInstance != null )
100         {
101         parentInstance.overload( childInstance );
102         }
103        else
104         putDefinition( childInstance );
105       } // end loop
106
}
107     /**
108      * Get String representation.
109      */

110   public String JavaDoc toString()
111     {
112     return "definitions=" + definitions.toString() ;
113     }
114
115 }
116
Popular Tags