1 /* 2 * $Id: XmlListAttribute.java 471754 2006-11-06 14:55:09Z husted $ 3 * 4 * Licensed to the Apache Software Foundation (ASF) under one 5 * or more contributor license agreements. See the NOTICE file 6 * distributed with this work for additional information 7 * regarding copyright ownership. The ASF licenses this file 8 * to you under the Apache License, Version 2.0 (the 9 * "License"); you may not use this file except in compliance 10 * with the License. You may obtain a copy of the License at 11 * 12 * http://www.apache.org/licenses/LICENSE-2.0 13 * 14 * Unless required by applicable law or agreed to in writing, 15 * software distributed under the License is distributed on an 16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 17 * KIND, either express or implied. See the License for the 18 * specific language governing permissions and limitations 19 * under the License. 20 */ 21 22 package org.apache.struts.tiles.xmlDefinition; 23 24 import java.util.ArrayList; 25 import java.util.List; 26 27 28 /** 29 * An attribute as a <code>List</code>. 30 * This attribute associates a name with a list. The list can be found by the 31 * property name. 32 * Elements in list are retrieved using List methods. 33 * This class is used to read configuration files. 34 */ 35 public class XmlListAttribute extends XmlAttribute 36 { 37 /** List. 38 * We declare a List to avoid cast. 39 * Parent "value" property points to the same list. 40 */ 41 private List list; 42 43 /** 44 * Constructor. 45 */ 46 public XmlListAttribute() 47 { 48 list = new ArrayList(); 49 setValue(list); 50 } 51 52 /** 53 * Constructor. 54 * @param name Name. 55 * @param value List. 56 */ 57 public XmlListAttribute( String name, List value) 58 { 59 super( name, value ); 60 list = value; 61 } 62 63 /** 64 * Add an element in list. 65 * We use a property to avoid rewriting a new class. 66 * @param element XmlAttribute to add. 67 */ 68 public void add( XmlAttribute element ) 69 { 70 list.add( element.getValue() ); 71 } 72 73 /** 74 * Add an element in list. 75 * @param value Object to add. 76 */ 77 public void add( Object value ) 78 { 79 //list.add( value ); 80 // To correct a bug in digester, we need to check the object type 81 // Digester doesn't call correct method according to object type ;-( 82 if(value instanceof XmlAttribute) 83 { 84 add((XmlAttribute)value); 85 return; 86 } 87 else 88 list.add( value ); 89 } 90 91 /** 92 * Add an element in list. 93 * @param value Object to add. 94 */ 95 public void addObject( Object value ) 96 { 97 list.add( value ); 98 } 99 100 101 102 }