craigmcc 01/12/27 19:59:41 Modified: beanutils/src/java/org/apache/commons/beanutils DynaBean.java DynaClass.java Added: beanutils/src/java/org/apache/commons/beanutils BasicDynaBean.java BasicDynaClass.java DynaProperty.java Log: Here's bare-bones implementations of the DynaBean and DynaClass interfaces for us to start chewing over -- BasicDynaBean only implements simple properties at the moment (not indexed or mapped). I also removed (from DynaBean) the support for "modified" and "readOnly" properties of the DynaBean instance itself. In keeping with the minimalist design that Paulo is nudging me towards :-), these are now value-added features of a particular implementation. Revision Changes Path 1.4 +5 -52 jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaBean.java Index: DynaBean.java =================================================================== RCS file: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaBean.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DynaBean.java 2001/12/28 00:33:56 1.3 +++ DynaBean.java 2001/12/28 03:59:41 1.4 @@ -1,13 +1,13 @@ /* - * $Header: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaBean.java,v 1.3 2001/12/28 00:33:56 craigmcc Exp $ - * $Revision: 1.3 $ - * $Date: 2001/12/28 00:33:56 $ + * $Header: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaBean.java,v 1.4 2001/12/28 03:59:41 craigmcc Exp $ + * $Revision: 1.4 $ + * $Date: 2001/12/28 03:59:41 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * - * Copyright (c) 1999-2001 The Apache Software Foundation. All rights + * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -72,7 +72,7 @@ * * @author Craig McClanahan * @author Paulo Gaspar - * @version $Revision: 1.3 $ $Date: 2001/12/28 00:33:56 $ + * @version $Revision: 1.4 $ $Date: 2001/12/28 03:59:41 $ */ public interface DynaBean { @@ -85,9 +85,6 @@ * <code>contains()</code> method to distinguish these cases. * * @param name Name of the property whose value is to be retrieved - * - * @exception IllegalStateException if the specified property - * exists, but has been defined as write-only */ public Object get(String name); @@ -103,8 +100,6 @@ * * @exception IllegalArgumentException if the specified property * exists, but is not indexed - * @exception IllegalStateException if the specified property - * exists, but has been defined as write-only */ public Object get(String name, int index); @@ -120,8 +115,6 @@ * * @exception IllegalArgumentException if the specified property * exists, but is not mapped - * @exception IllegalStateException if the specified property - * exists, but has been defined as write-only */ public Object get(String name, String key); @@ -134,24 +127,6 @@ /** - * Return the value of the "dynamic modified" property, which will be - * <code>true</code> if any dynamic property has been the subject of a - * <code>set()</code> method call (even if the actual value did not - * change) since the last time that <code>setDynaModified(false)</code> - * was called for this instance. - */ - public boolean isDynaModified(); - - - /** - * Return the value of the "dynamic read only" property, which will be - * <code>true</code> if <code>set()</code> method calls against this - * property will fail because this bean has been marked read-only. - */ - public boolean isDynaReadOnly(); - - - /** * Set the value of a simple property with the specified name. A null * value is allowed unless the underlying property type is a primitive. * If there is a Converter specified for our associated DynaClass, and @@ -164,12 +139,6 @@ * * @exception ConversionException if the specified value cannot be * converted to the type required for this property - * @exception IllegalArgumentException if the specified value cannot - * be converted to the required property type - * @exception IllegalStateException if the specified property exists, - * but has been defined as read-only - * @exception IllegalStateException if the specified property exists - * and is writeable, but this bean instance has been marked read only */ public void set(String name, Object value); @@ -224,22 +193,6 @@ * and is writeable, but this bean instance has been marked read only */ public void set(String name, String key, Object value); - - - /** - * Set the value of the "dynamic modified" property. - * - * @param dynaModified The new dynamic modified property setting - */ - public void setDynaModified(boolean dynaModified); - - - /** - * Set the value of the "dynamic read only" property. - * - * @param dynaReadOnly The new dynamic read only property setting - */ - public void setDynaReadOnly(boolean dynaReadOnly); } 1.4 +15 -8 jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaClass.java Index: DynaClass.java =================================================================== RCS file: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaClass.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- DynaClass.java 2001/12/28 00:33:56 1.3 +++ DynaClass.java 2001/12/28 03:59:41 1.4 @@ -1,13 +1,13 @@ /* - * $Header: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaClass.java,v 1.3 2001/12/28 00:33:56 craigmcc Exp $ - * $Revision: 1.3 $ - * $Date: 2001/12/28 00:33:56 $ + * $Header: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaClass.java,v 1.4 2001/12/28 03:59:41 craigmcc Exp $ + * $Revision: 1.4 $ + * $Date: 2001/12/28 03:59:41 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * - * Copyright (c) 1999-2001 The Apache Software Foundation. All rights + * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without @@ -76,7 +76,7 @@ * @author Craig McClanahan * @author Michael Smith * @author Paulo Gaspar - * @version $Revision: 1.3 $ $Date: 2001/12/28 00:33:56 $ + * @version $Revision: 1.4 $ $Date: 2001/12/28 03:59:41 $ */ public interface DynaClass { @@ -98,7 +98,7 @@ * @param name Name of the dynamic property for which a descriptor * is requested */ - public PropertyDescriptor getPropertyDescriptor(String name); + public DynaProperty getPropertyDescriptor(String name); /** @@ -110,14 +110,21 @@ * <code>getBeanInfo()</code> instead, which returns property descriptors * and a bunch of other stuff?</p> */ - public PropertyDescriptor[] getPropertyDescriptors(); + public DynaProperty[] getPropertyDescriptors(); /** * Instantiate and return a new DynaBean instance, using the implementation * class specified by the <code>dynaBeanClass</code> property. + * + * @exception IllegalAccessException if the Class or the appropriate + * constructor is not accessible + * @exception InstantiationException if this Class represents an abstract + * class, an array class, a primitive type, or void; or if instantiation + * fails for some other reason */ - public DynaBean newInstance(); + public DynaBean newInstance() + throws IllegalAccessException, InstantiationException; } 1.1 jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/BasicDynaBean.java Index: BasicDynaBean.java =================================================================== /* * $Header: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/BasicDynaBean.java,v 1.1 2001/12/28 03:59:41 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2001/12/28 03:59:41 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Commons", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.commons.beanutils; import java.util.HashMap; /** * <p>Minimal implementation of the <code>DynaBean</code> interface. Can be * used as a convenience base class for more sophisticated implementations.</p> * * <p><strong>IMPLEMENTATION NOTE</strong> - Instances of this class that are * accessed from multiple threads simultaneously need to be synchronized.</p> * * @author Craig McClanahan * @version $Revision: 1.1 $ $Date: 2001/12/28 03:59:41 $ */ public class BasicDynaBean implements DynaBean { // ---------------------------------------------------------- Constructors /** * Construct a new <code>DynaBean</code> associated with the specified * <code>DynaClass</code> instance. * * @param dynaClass The DynaClass we are associated with */ public BasicDynaBean(DynaClass dynaClass) { super(); this.dynaClass = dynaClass; } // ---------------------------------------------------- Instance Variables /** * The <code>DynaClass</code> "base class" that this DynaBean * is associated with. */ protected DynaClass dynaClass = null; /** * Have any properties of this instance been modified since the last time * that <code>setDynaModified(false)</code> was called? */ protected boolean modified = false; /** * Has this DynaBean instance been declared read only? */ protected boolean readOnly = false; /** * The set of property values for this DynaBean, keyed by property name. */ protected HashMap values = new HashMap(); // ------------------------------------------------------ DynaBean Methods /** * Return the value of a simple property with the specified name. A * <code>null</code> return value means that either the property does * not exist, or that the property exists with a null value. Use the * <code>contains()</code> method to distinguish these cases. * * @param name Name of the property whose value is to be retrieved * * @exception IllegalArgumentException if there is no property * of the specified name */ public Object get(String name) { if (!values.containsKey(name)) throw new IllegalArgumentException ("No property " + name + " exists"); return (values.get(name)); } /** * Return the value of an indexed property with the specified name. A * <code>null</code> return value means that either the property does * not exist, or that the property exists with a null value. Use the * <code>contains()</code> method to distinguish these cases. * * @param name Name of the property whose value is to be retrieved * @param index Index of the value to be retrieved * * @exception IllegalArgumentException if there is no property * of the specified name * @exception IllegalArgumentException if the specified property * exists, but is not indexed */ public Object get(String name, int index) { if (!values.containsKey(name)) throw new IllegalArgumentException ("No property " + name + " exists"); return (null); // FIXME - get(String,int) } /** * Return the value of a mapped property with the specified name. A * <code>null</code> return value means that either the property does * not exist, or that the property exists with a null value. Use the * <code>contains()</code> method to distinguish these cases. * * @param name Name of the property whose value is to be retrieved * @param key Key of the value to be retrieved * * @exception IllegalArgumentException if there is no property * of the specified name * @exception IllegalArgumentException if the specified property * exists, but is not mapped */ public Object get(String name, String key) { if (!values.containsKey(name)) throw new IllegalArgumentException ("No property " + name + " exists"); return (null); // FIXME - get(String, String) } /** * Return the <code>DynaClass</code> instance that describes the set of * properties available for this DynaBean. */ public DynaClass getDynaClass() { return (this.dynaClass); } /** * Set the value of a simple property with the specified name. A null * value is allowed unless the underlying property type is a primitive. * If there is a Converter specified for our associated DynaClass, and * if the specified property is restricted to a particular data type, * the Converter will be used as necessary to convert the input value to * an object of the specified type. * * @param name Name of the property whose value is to be set * @param value Value to which this property is to be set * * @exception ConversionException if the specified value cannot be * converted to the type required for this property * @exception IllegalArgumentException if there is no property * of the specified name * @exception IllegalStateException if the specified property exists * and is writeable, but this bean instance has been marked read only */ public void set(String name, Object value) { DynaProperty descriptor = dynaClass.getPropertyDescriptor(name); if (descriptor == null) throw new IllegalArgumentException ("No property " + name + " exists"); if (value != null) if (!descriptor.getType().isAssignableFrom(value.getClass())) throw new IllegalArgumentException ("Cannot assign value of type " + value.getClass().getName() + " to property " + name); if (readOnly) throw new IllegalStateException ("This instance is read-only"); this.modified = true; values.put(name, value); } /** * Set the value of an indexed property with the specified name. A null * value is allowed unless the underlying property type is a primitive. * If there is a Converter specified for our associated DynaClass, and * if the specified property is restricted to a particular data type, * the Converter will be used as necessary to convert the input value to * an object of the specified type. * * @param name Name of the property whose value is to be set * @param index Index of the property to be set * @param value Value to which this property is to be set * * @exception ConversionException if the specified value cannot be * converted to the type required for this property * @exception IllegalArgumentException if the specified value cannot * be converted to the required property type * @exception IllegalArgumentException if the specified property * exists, but is not indexed * @exception IllegalStateException if the specified property exists, * but has been defined as read-only * @exception IllegalStateException if the specified property exists * and is writeable, but this bean instance has been marked read only */ public void set(String name, int index, Object value) { ; // FIXME - set(String, int, Object) } /** * Set the value of a mapped property with the specified name. A null * value is allowed unless the underlying property type is a primitive. * If there is a Converter specified for our associated DynaClass, and * if the specified property is restricted to a particular data type, * the Converter will be used as necessary to convert the input value to * an object of the specified type. * * @param name Name of the property whose value is to be set * @param key Key of the property to be set * @param value Value to which this property is to be set * * @exception ConversionException if the specified value cannot be * converted to the type required for this property * @exception IllegalArgumentException if the specified value cannot * be converted to the required property type * @exception IllegalArgumentException if the specified property * exists, but is not mapped * @exception IllegalStateException if the specified property exists, * but has been defined as read-only * @exception IllegalStateException if the specified property exists * and is writeable, but this bean instance has been marked read only */ public void set(String name, String key, Object value) { ; // FIXME - set(String, String, Object) } // --------------------------------------------------------- Public Methods /** * Return the value of the "dynamic modified" property, which will be * <code>true</code> if any dynamic property has been the subject of a * <code>set()</code> method call (even if the actual value did not * change) since the last time that <code>setDynaModified(false)</code> * was called for this instance. */ public boolean isModified() { return (this.modified); } /** * Return the value of the "dynamic read only" property, which will be * <code>true</code> if <code>set()</code> method calls against this * property will fail because this bean has been marked read-only. */ public boolean isReadOnly() { return (this.readOnly); } /** * Set the value of the "dynamic modified" property. * * @param modified The new dynamic modified property setting */ public void setModified(boolean modified) { this.modified = modified; } /** * Set the value of the "dynamic read only" property. * * @param readOnly The new dynamic read only property setting */ public void setReadOnly(boolean readOnly) { this.readOnly = readOnly; } } 1.1 jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/BasicDynaClass.java Index: BasicDynaClass.java =================================================================== /* * $Header: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/BasicDynaClass.java,v 1.1 2001/12/28 03:59:41 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2001/12/28 03:59:41 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Commons", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.commons.beanutils; import java.beans.PropertyDescriptor; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationTargetException; /** * <p>Minimal implementation of the <code>DynaClass</code> interface. Can be * used as a convenience base class for more sophisticated implementations.</p> * * <p><strong>IMPLEMENTATION NOTE</strong> - The <code>DynaBean</code> * implementation class supplied to our constructor MUST have a one-argument * constructor of its own that accepts a <code>DynaClass</code>. This is * used to associate the DynaBean instance with this DynaClass.</p> * * @author Craig McClanahan * @version $Revision: 1.1 $ $Date: 2001/12/28 03:59:41 $ */ public class BasicDynaClass implements DynaClass { // ----------------------------------------------------------- Constructors /** * Construct a new BasicDynaClass with default parameters. */ public BasicDynaClass() { this(null, null, null); } /** * Construct a new BasicDynaClass with the specified parameters. * * @param name Name of this DynaBean class * @param dynaBeanClass The implementation class for new instances */ public BasicDynaClass(String name, Class dynaBeanClass) { this(name, dynaBeanClass, null); } /** * Construct a new BasicDynaClass with the specified parameters. * * @param name Name of this DynaBean class * @param dynaBeanClass The implementation class for new intances * @param properties Property descriptors for the supported properties */ public BasicDynaClass(String name, Class dynaBeanClass, DynaProperty properties[]) { super(); if (name != null) this.name = name; if (dynaBeanClass != null) setDynaBeanClass(dynaBeanClass); if (properties != null) this.properties = properties; } // ----------------------------------------------------- Instance Variables /** * The constructor of the <code>dynaBeanClass</code> that we will use * for creating new instances. */ protected Constructor constructor = null; /** * The method signature of the constructor we will use to create * new DynaBean instances. */ protected static Class constructorTypes[] = { DynaClass.class }; /** * The argument values to be passed to the constructore we will use * to create new DynaBean instances. */ protected Object constructorValues[] = { this }; /** * The <code>DynaBean</code> implementation class we will use for * creating new instances. */ protected Class dynaBeanClass = null; // BasicDynaBean.class /** * The "name" of this DynaBean class. */ protected String name = this.getClass().getName(); /** * The set of dynamic properties that are part of this DynaClass. */ protected DynaProperty properties[] = new DynaProperty[0]; // ------------------------------------------------------ DynaClass Methods /** * Return the Class object we will use to create new instances in the * <code>newInstance()</code> method. This Class <strong>MUST</strong> * implement the <code>DynaBean</code> interface. */ public Class getDynaBeanClass() { return (this.dynaBeanClass); } /** * Return the name of this DynaClass (analogous to the * <code>getName()</code> method of <code>java.lang.Class</code), which * allows the same <code>DynaClass</code> implementation class to support * different dynamic classes, with different sets of properties. */ public String getName() { return (this.name); } /** * Return a property descriptor for the specified property, if it exists; * otherwise, return <code>null</code>. * * @param name Name of the dynamic property for which a descriptor * is requested */ public DynaProperty getPropertyDescriptor(String name) { // FIXME - HashMap for better performance? for (int i = 0; i < properties.length; i++) { if (name.equals(properties[i].getName())) return (properties[i]); } return (null); } /** * <p>Return an array of <code>ProperyDescriptors</code> for the properties * currently defined in this DynaClass. If no properties are defined, a * zero-length array will be returned.</p> * * <p><strong>FIXME</strong> - Should we really be implementing * <code>getBeanInfo()</code> instead, which returns property descriptors * and a bunch of other stuff?</p> */ public DynaProperty[] getPropertyDescriptors() { return (properties); } /** * Instantiate and return a new DynaBean instance, using the implementation * class specified by the <code>dynaBeanClass</code> property. * * @exception IllegalAccessException if the Class or the appropriate * constructor is not accessible * @exception InstantiationException if this Class represents an abstract * class, an array class, a primitive type, or void; or if instantiation * fails for some other reason */ public DynaBean newInstance() throws IllegalAccessException, InstantiationException { try { return ((DynaBean) constructor.newInstance(constructorValues)); } catch (InvocationTargetException e) { throw new InstantiationException (e.getTargetException().getMessage()); } } // ------------------------------------------------------ Protected Methods /** * Set the Class object we will use to create new instances in the * <code>newInstance()</code> method. This Class <strong>MUST</strong> * implement the <code>DynaBean</code> interface. * * @param dynaBeanClass The new Class object * * @exception IllegalArgumentException if the specified Class does not * implement the <code>DynaBean</code> interface */ protected void setDynaBeanClass(Class dynaBeanClass) { // Validate the argument type specified if (dynaBeanClass.isInterface()) throw new IllegalArgumentException ("Class " + dynaBeanClass.getName() + " is an interface, not a class"); if (DynaBean.class.isAssignableFrom(dynaBeanClass)) throw new IllegalArgumentException ("Class " + dynaBeanClass.getName() + " does not implement DynaBean"); // Identify the Constructor we will use in newInstance() try { this.constructor = dynaBeanClass.getConstructor(constructorTypes); } catch (NoSuchMethodException e) { throw new IllegalArgumentException ("Class " + dynaBeanClass.getName() + " does not have an appropriate constructor"); } this.dynaBeanClass = dynaBeanClass; } } 1.1 jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaProperty.java Index: DynaProperty.java =================================================================== /* * $Header: /home/cvs/jakarta-commons/beanutils/src/java/org/apache/commons/beanutils/DynaProperty.java,v 1.1 2001/12/28 03:59:41 craigmcc Exp $ * $Revision: 1.1 $ * $Date: 2001/12/28 03:59:41 $ * * ==================================================================== * * The Apache Software License, Version 1.1 * * Copyright (c) 1999-2002 The Apache Software Foundation. All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, if * any, must include the following acknowlegement: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowlegement may appear in the software itself, * if and wherever such third-party acknowlegements normally appear. * * 4. The names "The Jakarta Project", "Commons", and "Apache Software * Foundation" must not be used to endorse or promote products derived * from this software without prior written permission. For written * permission, please contact [EMAIL PROTECTED] * * 5. Products derived from this software may not be called "Apache" * nor may "Apache" appear in their names without prior written * permission of the Apache Group. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * <http://www.apache.org/>. * */ package org.apache.commons.beanutils; /** * <p>The metadata describing an individual property of a DynaBean.</p> * * @author Craig R. McClanahan * @version $Revision: 1.1 $ $Date: 2001/12/28 03:59:41 $ */ public class DynaProperty { // ----------------------------------------------------------- Constructors /** * Construct a property that accepts any data type. * * @param name Name of the property being described */ public DynaProperty(String name) { this(name, Object.class); } /** * Construct a property of the specified data type. * * @param name Name of the property being described * @param type Java class representing the property data type */ public DynaProperty(String name, Class type) { super(); this.name = name; this.type = type; } // ------------------------------------------------------------- Properties /** * The name of this property. */ protected String name = null; public String getName() { return (this.name); } /** * The Java class representing the data type of the underlying property * values. */ protected Class type = null; public Class getType() { return (this.type); } // --------------------------------------------------------- Public Methods /** * Return a String representation of this Object. */ public String toString() { StringBuffer sb = new StringBuffer("DynaProperty[name="); sb.append(this.name); sb.append(",type="); sb.append(this.type); sb.append("]"); return (sb.toString()); } }
-- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>