Author: craigmcc
Date: Mon Jul 24 13:16:09 2006
New Revision: 425175
URL: http://svn.apache.org/viewvc?rev=425175&view=rev
Log:
[SHALE-225] Further improvements to JPA entity classes
* Use a non-JTA transaction type, so that application logic
can consistently use EntityTransaction in both standalone
and web applications.
* Correct equals() implementation to not throw NPE when
the "id" property has not yet been set (for example,
when a new instance is being compared to an old one).
* Tweak User.removeSubscription() to not attempt to set
the "user" property of the subscription to null. This
was causing an update to the underlying database to set
the USER_ID column to null, which would fail due to a
NOT NULL integrity constraint.
Modified:
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Protocol.java
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Subscription.java
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/User.java
shale/sandbox/mailreader-jpa/src/main/resources/META-INF/persistence.xml
Modified:
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Protocol.java
URL:
http://svn.apache.org/viewvc/shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Protocol.java?rev=425175&r1=425174&r2=425175&view=diff
==============================================================================
---
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Protocol.java
(original)
+++
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Protocol.java
Mon Jul 24 13:16:09 2006
@@ -61,7 +61,8 @@
}
public boolean equals(Object obj) {
- if (obj instanceof Protocol) {
+ if ((obj instanceof Protocol)
+ && (getId() != null)) {
return getId().equals(((Protocol) obj).getId());
} else {
return false;
Modified:
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Subscription.java
URL:
http://svn.apache.org/viewvc/shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Subscription.java?rev=425175&r1=425174&r2=425175&view=diff
==============================================================================
---
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Subscription.java
(original)
+++
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/Subscription.java
Mon Jul 24 13:16:09 2006
@@ -69,7 +69,8 @@
}
public boolean equals(Object obj) {
- if (obj instanceof Subscription) {
+ if ((obj instanceof Subscription)
+ && (getId() != null)) {
return getId().equals(((Subscription) obj).getId());
} else {
return false;
Modified:
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/User.java
URL:
http://svn.apache.org/viewvc/shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/User.java?rev=425175&r1=425174&r2=425175&view=diff
==============================================================================
---
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/User.java
(original)
+++
shale/sandbox/mailreader-jpa/src/main/java/org/apache/mailreaderjpa/User.java
Mon Jul 24 13:16:09 2006
@@ -76,7 +76,8 @@
}
public boolean equals(Object obj) {
- if (obj instanceof User) {
+ if ((obj instanceof User)
+ && (getId() != null)) {
return getId().equals(((User) obj).getId());
} else {
return false;
@@ -167,7 +168,10 @@
List<Subscription> subscriptions = getSubscriptions();
if (subscriptions.contains(subscription)) {
subscriptions.remove(subscription);
- subscription.setUser(null);
+ // Commment out following line because it seems to cause
+ // an update of the USER_ID column setting it to null, which
+ // would violate the database integrity constraints
+// subscription.setUser(null);
}
}
Modified:
shale/sandbox/mailreader-jpa/src/main/resources/META-INF/persistence.xml
URL:
http://svn.apache.org/viewvc/shale/sandbox/mailreader-jpa/src/main/resources/META-INF/persistence.xml?rev=425175&r1=425174&r2=425175&view=diff
==============================================================================
--- shale/sandbox/mailreader-jpa/src/main/resources/META-INF/persistence.xml
(original)
+++ shale/sandbox/mailreader-jpa/src/main/resources/META-INF/persistence.xml
Mon Jul 24 13:16:09 2006
@@ -20,7 +20,20 @@
*/
-->
-<!-- Persistence unit for a predeployed data source on a Java EE 5 server -->
+<!-- Persistence unit for a predeployed data source on a Java EE 5 server
+ using RESOURCE_LOCAL transactions -->
+<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
+ <persistence-unit name="MailReaderJpa" transaction-type="RESOURCE_LOCAL">
+
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
+ <non-jta-data-source>jdbc/mailreader</non-jta-data-source>
+ <properties>
+ <property name="toplink.ddl-generation" value="create-tables"/>
+ </properties>
+ </persistence-unit>
+</persistence>
+
+<!-- Persistence unit for a predeployed data source on a Java EE 5 server
+ using JTA transactions
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">
<persistence-unit name="MailReaderJpa" transaction-type="JTA">
<provider>oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider</provider>
@@ -30,6 +43,7 @@
</properties>
</persistence-unit>
</persistence>
+-->
<!-- Persistence unit for standalone JPA implementation
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence">