openjpa-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ppod...@apache.org
Subject svn commit: r676727 - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/
Date Mon, 14 Jul 2008 20:46:19 GMT
Author: ppoddar
Date: Mon Jul 14 13:46:18 2008
New Revision: 676727

URL: http://svn.apache.org/viewvc?rev=676727&view=rev
Log:
OPENJPA-659: Dirty checking fails for runtime enhanced classes. The original case reported
the failure in a Spring-Tomcat-Weaver with Embdded field. But as TestSimpleUnenhancedQuery
can raise the same failure in a simpler settings. The fix is related to initializing a SaveFieldManager
conditional to having loaded fields at invocation of saveFields(). The fix removes the condition
and ensures that a SaveFieldManager is assocaited even when saveFields() is invoked without
any field loaded.

Added:
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java
    openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java
Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java?rev=676727&r1=676726&r2=676727&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
(original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StateManagerImpl.java
Mon Jul 14 13:46:18 2008
@@ -2660,6 +2660,12 @@
             for (int i = 0, len = _loaded.length(); i < len; i++)
                 saveField(i);
             _flags &= ~FLAG_SAVE;
+            // OPENJPA-659
+            // record a saved field manager even if no field is currently loaded
+            // as existence of a SaveFieldManager is critical for a dirty check
+            if (_saved == null)
+            	_saved = new SaveFieldManager(this, getPersistenceCapable(), 
+            				_dirty);
         }
     }
 

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java?rev=676727&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java
(added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/TestSimpleUnenhancedQuery.java
Mon Jul 14 13:46:18 2008
@@ -0,0 +1,49 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openjpa.enhance;
+
+import javax.persistence.EntityManager;
+
+import org.apache.openjpa.persistence.test.SingleEMFTestCase;
+
+/**
+ * A simple query fails with unenhanced (or runtime enhanced classes)
+ * as originally reported in 
+ * <A HREF="https://issues.apache.org/jira/browse/OPENJPA-659">OPENJPA-659</A>.
+ * The original issue reports the failure in a Spring-Tomcat-Weaver settings
+ * with embedded instances but even the following test shows the same failure 
+ * in a simpler settings.
+ *  
+ * @author Pinaki Poddar
+ *
+ */
+public class TestSimpleUnenhancedQuery extends SingleEMFTestCase {
+	public void setUp() throws Exception {
+		setUp(CLEAR_TABLES, UnenhancedPObject.class);
+		EntityManager em = emf.createEntityManager();
+		em.getTransaction().begin();
+		em.persist(new UnenhancedPObject());
+		em.getTransaction().commit();
+	}
+	
+	public void testExtentQuery() {
+		EntityManager em = emf.createEntityManager();
+		assertFalse(em.createQuery("SELECT p FROM UnenhancedPObject p")
+				.getResultList().isEmpty());
+	}
+}

Added: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java?rev=676727&view=auto
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java
(added)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/enhance/UnenhancedPObject.java
Mon Jul 14 13:46:18 2008
@@ -0,0 +1,25 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ */
+package org.apache.openjpa.enhance;
+
+import javax.persistence.Entity;
+
+@Entity
+public class UnenhancedPObject {
+
+}



Mime
View raw message