1 10 11 package org.mmbase.util.functions; 12 13 import org.mmbase.bridge.*; 14 import org.mmbase.core.AbstractDescriptor; 15 import org.mmbase.datatypes.*; 16 import org.mmbase.util.*; 17 import org.mmbase.util.logging.*; 18 import java.util.*; 19 import java.io.*; 20 21 33 34 public class Parameter extends AbstractDescriptor implements java.io.Serializable { 35 private static final Logger log = Logging.getLoggerInstance(Parameter.class); 36 37 private static final long serialVersionUID = 1L; 38 44 public static final Parameter LANGUAGE = new Parameter("language", String .class); 45 public static final Parameter LOCALE = new Parameter("locale", Locale.class); 46 public static final Parameter USER = new Parameter("user", org.mmbase.security.UserContext.class); 47 public static final Parameter RESPONSE = new Parameter("response", javax.servlet.http.HttpServletResponse .class); 48 public static final Parameter REQUEST = new Parameter("request", javax.servlet.http.HttpServletRequest .class); 49 public static final Parameter CLOUD = new Parameter("cloud", org.mmbase.bridge.Cloud.class); 50 51 55 public static final Parameter NODE = new Parameter("_node", org.mmbase.bridge.Node.class); 56 public final static Parameter CORENODE = new Parameter("_corenode", Object .class); 58 59 60 public static final Parameter FIELD = new Parameter("field", String .class); 61 62 65 public static final Parameter[] EMPTY = new Parameter[0]; 66 67 68 private void writeObject(ObjectOutputStream out) throws IOException { 71 out.writeUTF(key); 72 out.writeObject(description); 73 out.writeObject(guiName); 74 out.writeObject(dataType); 75 } 76 private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException { 78 key = in.readUTF(); 79 description = (LocalizedString) in.readObject(); 80 guiName = (LocalizedString) in.readObject(); 81 dataType = (DataType) in.readObject(); 82 } 83 84 88 protected DataType dataType; 89 90 96 public Parameter(String name, DataType dataType) { 97 this(name, dataType, true); 98 } 99 100 108 public Parameter(String name, DataType dataType, boolean copy) { 109 super(name); 110 if (copy) { 111 this.dataType = (DataType)dataType.clone(name); 112 } else { 113 this.dataType = dataType; 114 } 115 } 116 117 122 public Parameter(String name, Class type) { 123 super(name); 124 dataType = DataTypes.createDataType(name, type); 125 } 126 127 133 public Parameter(String name, Class type, boolean required) { 134 this(name,type); 135 dataType.setRequired(required); 136 } 137 138 144 public Parameter(String name, Class type, Object defaultValue) { 145 this(name,type); 146 dataType.setDefaultValue(defaultValue); 147 } 148 149 152 public Parameter(Parameter p, boolean required) { 153 this(p.key, p.getDataType()); 154 dataType.setRequired(required); 155 } 156 157 160 public Parameter(Parameter p, Object defaultValue) { 161 this(p.key, p.getDataType()); 162 dataType.setDefaultValue(defaultValue); 163 } 164 165 169 public Object getDefaultValue() { 170 return dataType.getDefaultValue(); 171 } 172 173 177 public void setDefaultValue(Object defaultValue) { 178 dataType.setDefaultValue(defaultValue); 179 } 180 181 186 public DataType getDataType() { 187 return dataType; 188 } 189 190 194 public Class getTypeAsClass() { 195 return dataType.getTypeAsClass(); 196 } 197 198 202 public boolean isRequired() { 203 return dataType.isRequired(); 204 } 205 206 212 public void checkType(Object value) { 213 dataType.checkType(value); 214 } 215 216 217 222 protected Object autoCast(Object value) { 223 return dataType.cast(value, null, null); 224 } 225 226 public int hashCode() { 227 return getName().hashCode() + 13 * getDataType().hashCode(); 228 } 229 230 235 public boolean equals(Object o) { 236 if (o instanceof Parameter) { 237 Parameter a = (Parameter) o; 238 return a.getName().equals(getName()) && a.getDataType().equals(getDataType()); 239 } 240 return false; 241 } 242 243 public String toString() { 244 return getTypeAsClass().getName() + " " + getName(); 245 } 246 247 253 public static class Wrapper extends Parameter { 254 Parameter[] arguments; 255 256 public Wrapper(Parameter[] arg) { 257 super("[ARRAYWRAPPER]", Parameter[].class); 258 arguments = arg; 259 } 260 261 public String toString() { 263 StringBuffer buf = new StringBuffer (); 264 for (int i = 0 ; i < arguments.length; i++) { 265 if (i > 0) buf.append(", "); 266 buf.append(arguments[i].toString()); 267 268 } 269 return buf.toString(); 270 271 } 272 } 273 274 275 } 276 | Popular Tags |