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.spec;
016
017 import java.util.Collection;
018
019 import org.apache.hivemind.LocationHolder;
020
021 /**
022 * Defines a formal parameter to a component. An
023 * <code>IParameterSpecification</code> is contained by a
024 * {@link IComponentSpecification}.
025 * <p>
026 * TBD: Identify arrays in some way.
027 *
028 * @author glongman@intelligentworks.com
029 */
030 public interface IParameterSpecification extends LocationHolder
031 {
032
033 /**
034 * Returns the class name of the expected type of the parameter. The default
035 * value is <code>java.lang.Object</code> which matches anything.
036 */
037 String getType();
038
039 /**
040 * Returns true if the parameter is required by the component. The default
041 * is false, meaning the parameter is optional.
042 */
043 boolean isRequired();
044
045 void setRequired(boolean value);
046
047 /**
048 * Sets the type of value expected for the parameter. This can be left blank
049 * to indicate any type.
050 */
051 void setType(String value);
052
053 /**
054 * Returns the documentation for this parameter.
055 *
056 * @since 1.0.9
057 */
058 String getDescription();
059
060 /**
061 * Sets the documentation for this parameter.
062 *
063 * @since 1.0.9
064 */
065 void setDescription(String description);
066
067 /**
068 * Sets the property name (of the component class) to connect the parameter
069 * to.
070 */
071 void setPropertyName(String propertyName);
072
073 /**
074 * Returns the name of the JavaBeans property to connect the parameter to.
075 */
076 String getPropertyName();
077
078 /**
079 * Returns the default value for the parameter (or null if the parameter has
080 * no default value). Required parameters may not have a default value. The
081 * default value is a <em>binding locator</em> (a prefixed value, as with
082 * a binding element).
083 */
084 String getDefaultValue();
085
086 /**
087 * Sets the default value of the JavaBeans property if no binding is
088 * provided.
089 */
090 void setDefaultValue(String defaultValue);
091
092 /**
093 * Returns true if the parameter property should cache the result of the
094 * binding.
095 *
096 * @since 4.0
097 */
098
099 boolean getCache();
100
101 /** @since 4.0 */
102
103 void setCache(boolean cache);
104
105 /**
106 * Returns the (primary) name of the parameter.
107 *
108 * @since 4.0
109 */
110
111 String getParameterName();
112
113 /**
114 * @since 4.0
115 */
116
117 void setParameterName(String name);
118
119 /**
120 * Returns a non-null collection of strings for the aliases of the
121 * parameter. This is usually an empty list.
122 *
123 * @since 4.0
124 */
125
126 Collection getAliasNames();
127
128 /**
129 * Sets the list of aliases as a comma-seperated list.
130 *
131 * @param nameList
132 * a comma seperated list of names, which may be null or empty
133 * @since 4.0
134 */
135
136 void setAliases(String nameList);
137
138 /**
139 * Returns true if the parameter is deprecated. Deprecated parameter
140 * generate a warning when bound.
141 *
142 * @since 4.0
143 */
144
145 boolean isDeprecated();
146
147 /**
148 * @since 4.0
149 */
150
151 void setDeprecated(boolean deprecated);
152
153 }