Sounds good. Since Jason is in the process of putting out another tdk,
I would assume we might want to wait on this until cvs gets tagged for
the tdk. But it is slightly confusing as it stands, as I have dropped
the use of the property BaseObject.primaryKey and the torque objects
provide their own implementation of get/setPrimaryKey.
Daniel Rall wrote:
>
> I would like to put an equals() method in BaseObject, and make
> BaseObject and a couple of its methods abstract (nothing should ever
> be instantiating a BaseObject). Specifically, the getPrimaryKey() and
> setPrimaryKey() which deal with an Object instance would become
> abstract. As I discussed with John McNally yesterday, this obviates
> the need to store duplicate primary key information in multiple
> locations within a BaseObject extension class. John's recent Torque
> changes now supply implementations for both of these methods, so
> Torque generated code requires zero modification. I am willing to
> port the existing non-Torque-gen'd BaseObject subclasses that make up
> Turbine (yeah, yeah I know it's rather trivial).
>
> Here's an example patch:
>
> Index: BaseObject.java
> ===================================================================
> RCS file:
>/products/cvs/turbine/turbine/src/java/org/apache/turbine/om/BaseObject.java,v
> retrieving revision 1.10
> diff -u -u -r1.10 BaseObject.java
> --- BaseObject.java 2001/01/31 22:27:53 1.10
> +++ BaseObject.java 2001/02/02 18:52:33
> @@ -68,7 +68,7 @@
> * @author <a href="mailto:[EMAIL PROTECTED]">John D. McNally</a>
> * @version $Id: BaseObject.java,v 1.10 2001/01/31 22:27:53 mcnally Exp $
> */
> -public class BaseObject implements Serializable
> +public abstract class BaseObject implements Serializable
> {
> public static final int NEW_ID = -1;
>
> @@ -78,11 +78,6 @@
> private boolean is_new = true;
>
> /**
> - * The unique id for the object which can be used for persistence.
> - */
> - private Object primaryKey = null;
> -
> - /**
> * A flag which can be set to indicate that an object has been
> * modified, since it was last retrieved from the persistence
> * mechanism.
> @@ -95,10 +90,7 @@
> *
> * @return the object primaryKey as an Object
> */
> - public Object getPrimaryKey()
> - {
> - return primaryKey;
> - }
> + public abstract Object getPrimaryKey();
>
> /**
> * Attempts to return the object primaryKey as an int.
> @@ -214,7 +206,7 @@
> */
> public void setPrimaryKey(int primaryKey) throws Exception
> {
> - this.primaryKey = new Integer(primaryKey);
> + setPrimaryKey(new Integer(primaryKey));
> }
>
> /**
> @@ -226,7 +218,7 @@
> */
> public void setPrimaryKey(long primaryKey) throws Exception
> {
> - this.primaryKey = new Long(primaryKey);
> + setPrimaryKey(new Long(primaryKey));
> }
>
> /**
> @@ -236,10 +228,7 @@
> * @exception Exception, This method will not throw any exceptions
> * but this allows for children to override the method more easily
> */
> - public void setPrimaryKey(Object primaryKey) throws Exception
> - {
> - this.primaryKey = primaryKey;
> - }
> + public abstract void setPrimaryKey(Object primaryKey) throws Exception;
>
> /**
> * Sets the modified state for the object.
> @@ -279,6 +268,45 @@
> public Object getByName(String field)
> {
> throw new Error("BaseObject.getByName: method must be overridden if
>called");
> + }
> +
> + /**
> + * Compares this with another <code>BaseObject</code> instance. Returns
> + * <code>false</code> if <code>obj</code> is not an instance of
> + * <code>BaseObject</code>, and calls <code>equals(BaseObject)</code>
> + * otherwise.
> + *
> + * @param obj The object to compare to.
> + * @return Whether equal to the object specified.
> + */
> + public boolean equals(Object obj)
> + {
> + if (obj instanceof BaseObject)
> + {
> + return equals((BaseObject)obj);
> + }
> + else
> + {
> + return false;
> + }
> + }
> +
> + /**
> + * Compares the primary key of this instance with that of another.
> + *
> + * @param bo The object to compare to.
> + * @return Whether the primary keys are equal.
> + */
> + public boolean equals(BaseObject bo)
> + {
> + if (this == bo)
> + {
> + return true;
> + }
> + else
> + {
> + return getPrimaryKey().equals(bo.getPrimaryKey());
> + }
> }
>
> /*
>
> --
>
> Daniel Rall <[EMAIL PROTECTED]>
>
> ------------------------------------------------------------
> To subscribe: [EMAIL PROTECTED]
> To unsubscribe: [EMAIL PROTECTED]
> Search: <http://www.mail-archive.com/turbine%40list.working-dogs.com/>
> Problems?: [EMAIL PROTECTED]
------------------------------------------------------------
To subscribe: [EMAIL PROTECTED]
To unsubscribe: [EMAIL PROTECTED]
Search: <http://www.mail-archive.com/turbine%40list.working-dogs.com/>
Problems?: [EMAIL PROTECTED]