| package org.apache.ant.engine; |
| |
| import java.util.*; |
| |
| public class HierarchicalHashtable extends Hashtable { |
| |
| private HierarchicalHashtable parent; |
| |
| public HierarchicalHashtable() { |
| this(null); |
| } |
| |
| public HierarchicalHashtable(HierarchicalHashtable parent) { |
| super(); |
| this.parent = parent; |
| } |
| |
| public HierarchicalHashtable getParent() { |
| return parent; |
| } |
| |
| public void setParent(HierarchicalHashtable parent) { |
| this.parent = parent; |
| } |
| |
| public List getPropertyNames() { |
| ArrayList list = new ArrayList(); |
| |
| Enumeration e = keys(); |
| while (e.hasMoreElements()) { |
| list.add(e.nextElement()); |
| } |
| |
| if (getParent() != null) { |
| list.addAll(getParent().getPropertyNames()); |
| } |
| |
| return list; |
| } |
| |
| public Object getPropertyValue(String name) { |
| Object value = get(name); |
| if (value == null && getParent() != null) { |
| return getParent().getPropertyValue(name); |
| } |
| return value; |
| } |
| |
| public void setPropertyValue(String name, Object value) { |
| put(name, value); |
| } |
| |
| public void removePropertyValue(String name) { |
| Object value = get(name); |
| if (value == null && getParent() != null) { |
| getParent().removePropertyValue(name); |
| } |
| if (value != null) { |
| remove(name); |
| } |
| } |
| } |