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/18 01:49:52 UTC
svn commit: r745329 - in /openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/
openjpa-kernel/src/main/java/org/apache/openjpa/enhance/
openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
Author: ppoddar
Date: Wed Feb 18 00:49:51 2009
New Revision: 745329
URL: http://svn.apache.org/viewvc?rev=745329&view=rev
Log:
OPENJPA-924: Cache primary key field indices. Simplify QueryStatistics template.
Modified:
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderQueryImpl.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FinderCache.java
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java?rev=745329&r1=745328&r2=745329&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderCacheImpl.java Wed Feb 18 00:49:51 2009
@@ -60,8 +60,7 @@
// Key: class name Value: Reason why excluded
private final Map<String, String> _uncachables;
private List<String> _exclusionPatterns;
- private QueryStatistics<FinderQuery<ClassMapping,SelectExecutor,Result>>
- _stats;
+ private QueryStatistics<ClassMapping> _stats;
private ReentrantLock _lock = new ReentrantLock();
private Log _log;
private Localizer _loc = Localizer.forPackage(FinderCacheImpl.class);
@@ -71,8 +70,7 @@
_delegate = new HashMap<ClassMapping,
FinderQuery<ClassMapping, SelectExecutor, Result>>();
_uncachables = new HashMap<String, String>();
- _stats = new QueryStatistics.Default<FinderQuery<ClassMapping,
- SelectExecutor,Result>>();
+ _stats = new QueryStatistics.Default<ClassMapping>();
}
/**
@@ -96,8 +94,7 @@
/**
* Gets basic statistics of execution and hit count of finder queries.
*/
- public QueryStatistics<FinderQuery<ClassMapping,SelectExecutor,Result>>
- getStatistics() {
+ public QueryStatistics<ClassMapping> getStatistics() {
return _stats;
}
@@ -121,7 +118,7 @@
return null;
FinderQuery<ClassMapping, SelectExecutor, Result> result =
_delegate.get(mapping);
- _stats.recordExecution(result, result != null);
+ _stats.recordExecution(mapping, result != null);
return result;
}
Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderQueryImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderQueryImpl.java?rev=745329&r1=745328&r2=745329&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderQueryImpl.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/FinderQueryImpl.java Wed Feb 18 00:49:51 2009
@@ -36,6 +36,7 @@
import org.apache.openjpa.kernel.FinderQuery;
import org.apache.openjpa.kernel.OpenJPAStateManager;
import org.apache.openjpa.kernel.StoreManager;
+import org.apache.openjpa.meta.FieldMetaData;
import org.apache.openjpa.util.ApplicationIds;
import org.apache.openjpa.util.Id;
@@ -55,6 +56,7 @@
private final SelectImpl _select;
private final Column[] _pkCols;
private final Joinable[] _joins;
+ private final int[] _pkIndices;
private final SQLBuffer _buffer;
private final String _sql;
@@ -86,6 +88,12 @@
_joins = new Joinable[_pkCols.length];
for (int i = 0; i < _pkCols.length; i++)
_joins[i] = _mapping.assertJoinable(_pkCols[i]);
+ _pkIndices = new int[_pkCols.length];
+ for (int i = 0; i < _pkCols.length; i++) {
+ FieldMetaData pk = _mapping.getField(_joins[i].getFieldIndex());
+ _pkIndices[i] = pk == null ? 0 : pk.getPrimaryKeyIndex();
+ }
+
}
public ClassMapping getIdentifier() {
@@ -111,12 +119,10 @@
for (int i = 0; i < _pkCols.length; i++, count++) {
if (pks == null)
val[0] = (oid == null)
- ? null
- : Numbers.valueOf(((Id) oid).getId());
+ ? null : Numbers.valueOf(((Id) oid).getId());
else {
- val[i] = pks[_mapping.getField(_joins[i].getFieldIndex()).
- getPrimaryKeyIndex()];
- val[i] = _joins[i].getJoinValue(val[i], _pkCols[i], store);
+ val[i] = _joins[i].getJoinValue(pks[_pkIndices[i]], _pkCols[i],
+ store);
}
}
return val;
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java?rev=745329&r1=745328&r2=745329&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/ManagedClassSubclasser.java Wed Feb 18 00:49:51 2009
@@ -203,7 +203,8 @@
private static Set<Class> collectUnspecifiedType(Class cls,
Collection<? extends Class> classes, Set<Class> unspecified) {
if (cls != null && !classes.contains(cls)
- && !ImplHelper.isManagedType(null, cls)) {
+ && !ImplHelper.isManagedType(null, cls)
+ && !cls.isInterface()) {
if (unspecified == null)
unspecified = new HashSet<Class>();
unspecified.add(cls);
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FinderCache.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FinderCache.java?rev=745329&r1=745328&r2=745329&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FinderCache.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FinderCache.java Wed Feb 18 00:49:51 2009
@@ -140,5 +140,5 @@
/**
* Gets the simple statistics for executed finder queries.
*/
- public QueryStatistics<FinderQuery<K,V,R>> getStatistics();
+ public QueryStatistics<K> getStatistics();
}
\ No newline at end of file