001    // Copyright 2004, 2005 The Apache Software Foundation
002    //
003    // Licensed under the Apache License, Version 2.0 (the "License");
004    // you may not use this file except in compliance with the License.
005    // You may obtain a copy of the License at
006    //
007    //     http://www.apache.org/licenses/LICENSE-2.0
008    //
009    // Unless required by applicable law or agreed to in writing, software
010    // distributed under the License is distributed on an "AS IS" BASIS,
011    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
012    // See the License for the specific language governing permissions and
013    // limitations under the License.
014    
015    package org.apache.tapestry.util;
016    
017    import java.util.List;
018    
019    /**
020     * An interface that defines an object that can store named propertys. The names
021     * and the properties are Strings.
022     * 
023     * @author Howard Lewis Ship
024     */
025    
026    public interface IPropertyHolder
027    {
028    
029        /**
030         * Returns a List of Strings, the names of all properties held by the
031         * receiver. May return an empty list. The List is sorted alphabetically.
032         * The List may be modified without affecting this property holder.
033         * <p>
034         * Prior to release 2.2, this method returned Collection.
035         */
036    
037        List getPropertyNames();
038    
039        /**
040         * Sets a named property. The new value replaces the existing value, if any.
041         * Setting a property to null is the same as removing the property.
042         */
043    
044        void setProperty(String name, String value);
045    
046        /**
047         * Removes the named property, if present.
048         */
049    
050        void removeProperty(String name);
051    
052        /**
053         * Retrieves the named property, or null if the property is not defined.
054         */
055    
056        String getProperty(String name);
057    }