Author: simoneg
Date: Tue Jan 19 23:51:15 2010
New Revision: 901006

URL: http://svn.apache.org/viewvc?rev=901006&view=rev
Log:
Rollback a database when nothing was explicitly saved on it, we don't want 
automagic modifications

Modified:
    
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/InstallJPADatabase.aj
    
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/JPADatabase.java

Modified: 
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/InstallJPADatabase.aj
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/InstallJPADatabase.aj?rev=901006&r1=901005&r2=901006&view=diff
==============================================================================
--- 
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/InstallJPADatabase.aj
 (original)
+++ 
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/InstallJPADatabase.aj
 Tue Jan 19 23:51:15 2010
@@ -31,7 +31,7 @@
        
        public void Cycle.teardownJPADatabase() {
                if (this.currentDb == null) return;
-               if (isInError()) {
+               if (isInError() || !this.currentDb.hasBeenWritten) {
                        currentDb.rollback();
                } else {
                        currentDb.commit();

Modified: 
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/JPADatabase.java
URL: 
http://svn.apache.org/viewvc/labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/JPADatabase.java?rev=901006&r1=901005&r2=901006&view=diff
==============================================================================
--- 
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/JPADatabase.java
 (original)
+++ 
labs/magma/trunk/database-jpa/src/main/java/org/apache/magma/database/openjpa/JPADatabase.java
 Tue Jan 19 23:51:15 2010
@@ -36,6 +36,7 @@
         * If true, the manager as been injected by Magma and not by the 
container.
         */
        boolean manualManager = false;
+       boolean hasBeenWritten = false;
        
        @Resource
        EntityManager manager = null;
@@ -88,18 +89,25 @@
        
        
        public void delete(Object bean) {
+               hasBeenWritten = true;
                manager.remove(bean);
                manager.flush();
        }
 
        public void save(Object bean) {
+               hasBeenWritten = true;
                manager.persist(bean);
                manager.flush();
        }
        
        public void rollback() {
+               if (manualManager) {
+                       manager.clear();
+               }
                if (transaction != null) transaction.rollback();
-               if (manualManager) manager.close();             
+               if (manualManager) {
+                       manager.close();                
+               }
        }
        
        public void commit() {



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to