You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2009/02/25 21:18:53 UTC
svn commit: r747909 -
/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
Author: ppoddar
Date: Wed Feb 25 20:18:53 2009
New Revision: 747909
URL: http://svn.apache.org/viewvc?rev=747909&view=rev
Log:
OPENJPA-703: Reinstate performance optimization for DEFAULT and ALL fetch group lookup that was inadvertently rolled back.
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.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=747909&r1=747908&r2=747909&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 Feb 25 20:18:53 2009
@@ -83,6 +83,8 @@
public Set rootClasses;
public Set rootInstances;
public Map hints = null;
+ public boolean fetchGroupContainsDefault = false;
+ public boolean fetchGroupContainsAll = false;
}
private final ConfigurationState _state;
@@ -241,6 +243,16 @@
|| _state.fetchGroups.contains(FetchGroup.NAME_ALL));
}
+ public boolean hasFetchGroupDefault() {
+ // Fetch group All includes fetch group Default by definition
+ return _state.fetchGroupContainsDefault ||
+ _state.fetchGroupContainsAll;
+ }
+
+ public boolean hasFetchGroupAll() {
+ return _state.fetchGroupContainsAll;
+ }
+
public FetchConfiguration addFetchGroup(String name) {
if (StringUtils.isEmpty(name))
throw new UserException(_loc.get("null-fg"));
@@ -250,6 +262,10 @@
if (_state.fetchGroups == null)
_state.fetchGroups = new HashSet();
_state.fetchGroups.add(name);
+ if (FetchGroup.NAME_ALL.equals(name))
+ _state.fetchGroupContainsAll = true;
+ else if (FetchGroup.NAME_DEFAULT.equals(name))
+ _state.fetchGroupContainsDefault = true;
} finally {
unlock();
}
@@ -267,8 +283,13 @@
public FetchConfiguration removeFetchGroup(String group) {
lock();
try {
- if (_state.fetchGroups != null)
+ if (_state.fetchGroups != null) {
_state.fetchGroups.remove(group);
+ if (FetchGroup.NAME_ALL.equals(group))
+ _state.fetchGroupContainsAll = false;
+ else if (FetchGroup.NAME_DEFAULT.equals(group))
+ _state.fetchGroupContainsDefault = false;
+ }
} finally {
unlock();
}
@@ -278,8 +299,9 @@
public FetchConfiguration removeFetchGroups(Collection groups) {
lock();
try {
- if (_state.fetchGroups != null)
- _state.fetchGroups.removeAll(groups);
+ if (_state.fetchGroups != null && groups != null)
+ for (Object group : groups)
+ removeFetchGroup(group.toString());
} finally {
unlock();
}
@@ -289,8 +311,11 @@
public FetchConfiguration clearFetchGroups() {
lock();
try {
- if (_state.fetchGroups != null)
+ if (_state.fetchGroups != null) {
_state.fetchGroups.clear();
+ _state.fetchGroupContainsAll = false;
+ _state.fetchGroupContainsDefault = true;
+ }
} finally {
unlock();
}
@@ -588,13 +613,11 @@
* Whether our configuration state includes the given field.
*/
private boolean includes(FieldMetaData fmd) {
- if ((fmd.isInDefaultFetchGroup()
- && hasFetchGroup(FetchGroup.NAME_DEFAULT))
- || hasFetchGroup(FetchGroup.NAME_ALL)
- || hasField(fmd.getFullName(false))
- || hasField(fmd.getRealName()) // OPENJPA-704
- || (_fromField != null
- && hasField(_fromField + "." + fmd.getName())))
+ if (hasFetchGroupAll()
+ || (hasFetchGroupDefault() && fmd.isInDefaultFetchGroup())
+ || hasField(fmd.getFullName(false))
+ || hasField(fmd.getRealName())
+ || (_fromField != null && hasField(_fromField + "." + fmd.getName())))
return true;
String[] fgs = fmd.getCustomFetchGroups();
for (int i = 0; i < fgs.length; i++)