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