Allen Gilliland wrote:
I agree, and in general any object which is associated with a specific
weblog should probably be using the website in its equals() and
hashCode() methods. So maybe the what really needs to happen is to
revert revision 499419 which removes those comparisons from the Folder
and Category objects.
Revision 499419 is a workaround for a toplink issue. From the comments
in previous version of code ("NOTE: currently we are implementing equals
only using the path of the folder. technically the business key should
be for both the weblog & path, but we don't expect to be comparing
folders from 2 different weblogs so this should be fine"), I think the
workaround should be ok for now.
While we are on issue of equals() and hashcode() - Currently the impls
of this methods use couple of fields that are mutable (e.g FolderData
uses path which will change if a folder is moved or renamed). I think it
is not a good idea to have any mutable field as part of the calculation.
If the field is mutated after the pojo is placed in a collection (almost
all the persistence providers use them for caching) we might get into
issues that are hard to debug.
I think we require current form of equals() and hashcode() that uses
couple of fields instead of pk of the object for equality because we are
using generated ids. I am proposing that we switch to user supplied ids.
Instead of hibernate generating a UUID and assigning it at insert time,
we can generate and assign a UUID in constructor of the pojos. We can
use UUID generator based on JavaSE 5 or use one bundled with apache
commons
(http://jakarta.apache.org/commons/sandbox/id/apidocs/org/apache/commons/id/uuid/UUID.html)
What do others think?
Thanks,
Mitesh
-- Allen
Mitesh Meswani wrote:
Hi Dave,
I don't think this is a workaround. At least during the test I came
across instances of RefererData that belonged to different website
but where refererUrl was equal and weblogEntry was null. Is that not
a probable scenario?
Regards,
Mitesh
[EMAIL PROTECTED] wrote:
Author: snoopdave
Date: Wed Jan 24 06:36:15 2007
New Revision: 499420
URL: http://svn.apache.org/viewvc?view=rev&rev=499420
Log:
Add website to equals() and hashCode(), which is redundant but
allows us to work around a JPA issue.
Modified:
incubator/roller/trunk/src/org/apache/roller/pojos/RefererData.java
Modified:
incubator/roller/trunk/src/org/apache/roller/pojos/RefererData.java
URL:
http://svn.apache.org/viewvc/incubator/roller/trunk/src/org/apache/roller/pojos/RefererData.java?view=diff&rev=499420&r1=499419&r2=499420
==============================================================================
---
incubator/roller/trunk/src/org/apache/roller/pojos/RefererData.java
(original)
+++
incubator/roller/trunk/src/org/apache/roller/pojos/RefererData.java
Wed Jan 24 06:36:15 2007
@@ -438,6 +438,7 @@
return new EqualsBuilder()
.append(getRefererUrl(),
o.getRefererUrl()) .append(getWeblogEntry(),
o.getWeblogEntry()) + .append(getWebsite(),o.getWebsite())
.isEquals();
}
@@ -445,6 +446,7 @@
return new HashCodeBuilder()
.append(getRefererUrl())
.append(getWeblogEntry())
+ .append(getWebsite())
.toHashCode();
}