/* * Copyright 2003-2007 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.codehaus.groovy.ant; import org.apache.tools.ant.Project; import java.util.Hashtable; import java.util.Collection; import java.util.Enumeration; import java.util.Map; import java.util.Set; import java.util.Iterator; /** * @author Guillaume Laforge */ public class AntProjectPropertiesDelegate extends Hashtable { private Project project; public AntProjectPropertiesDelegate(Project project) { super(); this.project = project; } public synchronized int hashCode() { return project.getProperties().hashCode(); } public synchronized int size() { return project.getProperties().size(); } /** * @throws UnsupportedOperationException is always thrown when this method is invoked. The Project properties are immutable. */ public synchronized void clear() { throw new UnsupportedOperationException("Impossible to clear the project properties."); } public synchronized boolean isEmpty() { return project.getProperties().isEmpty(); } public synchronized Object clone() { return project.getProperties().clone(); } public synchronized boolean contains(Object value) { return project.getProperties().contains(value); } public synchronized boolean containsKey(Object key) { return project.getProperties().containsKey(key); } public boolean containsValue(Object value) { return project.getProperties().containsValue(value); } public synchronized boolean equals(Object o) { return project.getProperties().equals(o); } public synchronized String toString() { return project.getProperties().toString(); } public Collection values() { return project.getProperties().values(); } public synchronized Enumeration elements() { return project.getProperties().elements(); } public synchronized Enumeration keys() { return project.getProperties().keys(); } public AntProjectPropertiesDelegate(Map t) { super(t); } public synchronized void putAll(Map t) { Set keySet = t.keySet(); for (Iterator iterator = keySet.iterator(); iterator.hasNext();) { Object key = iterator.next(); Object value = t.get(key); put(key, value); } } public Set entrySet() { return project.getProperties().entrySet(); } public Set keySet() { return project.getProperties().keySet(); } public synchronized Object get(Object key) { return project.getProperties().get(key); } /** * @throws UnsupportedOperationException is always thrown when this method is invoked. The Project properties are immutable. */ public synchronized Object remove(Object key) { throw new UnsupportedOperationException("Impossible to remove a property from the project properties."); } public synchronized Object put(Object key, Object value) { Object oldValue = null; if (containsKey(key)) { oldValue = get(key); } project.setProperty(key.toString(), value.toString()); return oldValue; } }