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";>


Reply via email to