You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by jg...@apache.org on 2013/07/31 23:05:38 UTC
svn commit: r1509031 - in /openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDynamicFetchPlan.java
Author: jgrassel
Date: Wed Jul 31 21:05:37 2013
New Revision: 1509031
URL: http://svn.apache.org/r1509031
Log:
OPENJPA-2413: FetchPlan.clearFetchGroups() does not retain default entry in list of active Fetch Groups.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDynamicFetchPlan.java
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=1509031&r1=1509030&r2=1509031&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java Wed Jul 31 21:05:37 2013
@@ -224,7 +224,7 @@ public class FetchConfigurationImpl
setLockTimeout(fetch.getLockTimeout());
setQueryTimeout(fetch.getQueryTimeout());
setLockScope(fetch.getLockScope());
- clearFetchGroups();
+ clearFetchGroups(false);
addFetchGroups(fetch.getFetchGroups());
clearFields();
copyHints(fetch);
@@ -394,12 +394,23 @@ public class FetchConfigurationImpl
}
public FetchConfiguration clearFetchGroups() {
+ return clearFetchGroups(true);
+ }
+
+ private FetchConfiguration clearFetchGroups(boolean restoresDefault) {
lock();
try {
if (_state.fetchGroups != null) {
_state.fetchGroups.clear();
- _state.fetchGroupContainsAll = false;
+ } else {
+ _state.fetchGroups = new HashSet<String>();
+ }
+
+ _state.fetchGroupContainsAll = false;
+
+ if (restoresDefault) {
_state.fetchGroupContainsDefault = true;
+ _state.fetchGroups.add(FetchGroup.NAME_DEFAULT); // OPENJPA-2413
}
} finally {
unlock();
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDynamicFetchPlan.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDynamicFetchPlan.java?rev=1509031&r1=1509030&r2=1509031&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDynamicFetchPlan.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/persistence/kernel/TestDynamicFetchPlan.java Wed Jul 31 21:05:37 2013
@@ -18,6 +18,9 @@
*/
package org.apache.openjpa.persistence.kernel;
+import java.util.Collection;
+
+import org.apache.openjpa.meta.FetchGroup;
import org.apache.openjpa.persistence.FetchPlan;
import org.apache.openjpa.persistence.OpenJPAEntityManager;
import org.apache.openjpa.persistence.kernel.common.apps.FetchA;
@@ -60,7 +63,7 @@ public class TestDynamicFetchPlan extend
OpenJPAEntityManager em = emf.createEntityManager();
FetchPlan fp = em.getFetchPlan();
fp.setExtendedPathLookup(true);
- fp.clearFetchGroups();
+ fp.clearFetchGroups().removeFetchGroup(FetchGroup.NAME_DEFAULT);
fp.clearFields();
fp.addField(FetchA.class, "b");
fp.addField(FetchB.class, "text");
@@ -78,7 +81,7 @@ public class TestDynamicFetchPlan extend
OpenJPAEntityManager em = emf.createEntityManager();
FetchPlan fp = em.getFetchPlan();
fp.setExtendedPathLookup(true);
- fp.clearFetchGroups();
+ fp.clearFetchGroups().removeFetchGroup(FetchGroup.NAME_DEFAULT);
fp.clearFields();
fp.addField(FetchA.class, "b");
fp.addField(FetchA.class, "text");
@@ -96,7 +99,7 @@ public class TestDynamicFetchPlan extend
OpenJPAEntityManager em = emf.createEntityManager();
FetchPlan fp = em.getFetchPlan();
fp.setExtendedPathLookup(true);
- fp.clearFetchGroups();
+ fp.clearFetchGroups().removeFetchGroup(FetchGroup.NAME_DEFAULT);
fp.clearFields();
fp.addField(FetchA.class, "b");
fp.addField(FetchBase.class, "text");
@@ -114,7 +117,7 @@ public class TestDynamicFetchPlan extend
OpenJPAEntityManager em = emf.createEntityManager();
FetchPlan fp = em.getFetchPlan();
fp.setExtendedPathLookup(true);
- fp.clearFetchGroups();
+ fp.clearFetchGroups().removeFetchGroup(FetchGroup.NAME_DEFAULT);
fp.clearFields();
fp.addField(FetchA.class.getName() + ".b");
fp.addField(FetchB.class.getName() + ".text");
@@ -132,7 +135,7 @@ public class TestDynamicFetchPlan extend
OpenJPAEntityManager em = emf.createEntityManager();
FetchPlan fp = em.getFetchPlan();
fp.setExtendedPathLookup(true);
- fp.clearFetchGroups();
+ fp.clearFetchGroups().removeFetchGroup(FetchGroup.NAME_DEFAULT);
fp.clearFields();
fp.addField(FetchA.class.getName() + ".b");
fp.addField(FetchA.class.getName() + ".text");
@@ -150,7 +153,7 @@ public class TestDynamicFetchPlan extend
OpenJPAEntityManager em = emf.createEntityManager();
FetchPlan fp = em.getFetchPlan();
fp.setExtendedPathLookup(true);
- fp.clearFetchGroups();
+ fp.clearFetchGroups().removeFetchGroup(FetchGroup.NAME_DEFAULT);
fp.clearFields();
fp.addField(FetchA.class.getName() + ".b");
fp.addField(FetchBase.class.getName() + ".text");
@@ -163,4 +166,27 @@ public class TestDynamicFetchPlan extend
assertEquals("a1", a.getText());
assertEquals("b1", b.getText());
}
+
+ // OPENJPA-2413: FetchPlan.clearFetchGroups() does not retain "default" in list of active Fetch Groups.
+ public void testClearFetchPlan() {
+ OpenJPAEntityManager em = emf.createEntityManager();
+ FetchPlan fp = em.getFetchPlan();
+
+ // Make sure "default" is present in the list of active FetchGroups
+ Collection<String> fetchGroups = fp.getFetchGroups();
+ assertNotNull(fetchGroups);
+ assertTrue(fetchGroups.contains(FetchGroup.NAME_DEFAULT));
+
+ // Clear all active FetchGroups, only "default" should remain.
+ fp.clearFetchGroups();
+ Collection<String> fetchGroupsAfterClear = fp.getFetchGroups();
+ assertNotNull(fetchGroupsAfterClear);
+ assertTrue(fetchGroupsAfterClear.contains(FetchGroup.NAME_DEFAULT));
+
+ // Should still be able to remove the "default" FetchGroup
+ fp.removeFetchGroup(FetchGroup.NAME_DEFAULT);
+ Collection<String> fetchGroupsAfterRemove = fp.getFetchGroups();
+ assertNotNull(fetchGroupsAfterClear);
+ assertTrue(fetchGroupsAfterClear.isEmpty());
+ }
}