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 2010/03/16 20:10:49 UTC

svn commit: r923940 - in /openjpa/trunk/openjpa-jdbc/src/main: java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java resources/org/apache/openjpa/jdbc/kernel/localizer.properties

Author: ppoddar
Date: Tue Mar 16 19:10:49 2010
New Revision: 923940

URL: http://svn.apache.org/viewvc?rev=923940&view=rev
Log:
Better diagnostic messages on why a query can not be cached

Modified:
    openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java
    openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties

Modified: openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java?rev=923940&r1=923939&r2=923940&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/PreparedQueryImpl.java Tue Mar 16 19:10:49 2010
@@ -170,13 +170,13 @@ public class PreparedQueryImpl implement
         if (selector == null || selector.hasMultipleSelects()
             || ((selector instanceof Union) 
             && (((Union)selector).getSelects().length != 1)))
-            return new PreparedQueryCacheImpl.StrongExclusion(_id, _loc.get("exclude-multi-select").getMessage());
+            return new PreparedQueryCacheImpl.StrongExclusion(_id, _loc.get("exclude-multi-select", _id).getMessage());
         select = extractImplementation(selector);
         if (select == null)
-            return new PreparedQueryCacheImpl.StrongExclusion(_id, _loc.get("exclude-no-select").getMessage());
+            return new PreparedQueryCacheImpl.StrongExclusion(_id, _loc.get("exclude-no-select", _id).getMessage());
         SQLBuffer buffer = selector.getSQL();
         if (buffer == null)
-            return new PreparedQueryCacheImpl.StrongExclusion(_id, _loc.get("exclude-no-sql").getMessage());;
+            return new PreparedQueryCacheImpl.StrongExclusion(_id, _loc.get("exclude-no-sql", _id).getMessage());;
         setTargetQuery(buffer.getSQL());
         setParameters(buffer.getParameters());
         setUserParameterPositions(buffer.getUserParameters());
@@ -194,18 +194,18 @@ public class PreparedQueryImpl implement
      */
     private Object[] extractSelectExecutor(Object result) {
         if (result instanceof ResultList == false)
-            return new Object[]{null, _loc.get("exclude-not-result")};
+            return new Object[]{null, _loc.get("exclude-not-result", _id)};
         Object userObject = ((ResultList<?>)result).getUserObject();
         if (userObject == null || !userObject.getClass().isArray() || ((Object[])userObject).length != 2)
-            return new Object[]{null, _loc.get("exclude-no-user-object")};
+            return new Object[]{null, _loc.get("exclude-no-user-object", _id)};
         Object provider = ((Object[])userObject)[0];
         Object executor = ((Object[])userObject)[1];
         if (executor instanceof StoreQuery.Executor == false)
-            return new Object[]{null, _loc.get("exclude-not-executor")};
+            return new Object[]{null, _loc.get("exclude-not-executor", _id)};
         _exps = ((StoreQuery.Executor)executor).getQueryExpressions();
         for (int i = 0; i < _exps.length; i++) {
             if (isUsingExternalizedParameter(_exps[i])) {
-                return new Object[]{null, _loc.get("exclude-externalized-param", provider.getClass().getName())};
+                return new Object[]{null, _loc.get("exclude-externalized-param", _id)};
             }
         }
         if (_exps[0].projections.length == 0) {
@@ -225,7 +225,7 @@ public class PreparedQueryImpl implement
         if (provider instanceof SelectResultObjectProvider) {
             return new Object[]{((SelectResultObjectProvider)provider).getSelect(), null};
         } 
-        return new Object[]{null, _loc.get("exclude-not-select-rop", provider.getClass().getName())};
+        return new Object[]{null, _loc.get("exclude-not-select-rop", _id, provider.getClass().getName())};
     }
     
     private SelectImpl extractImplementation(SelectExecutor selector) {

Modified: openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties?rev=923940&r1=923939&r2=923940&view=diff
==============================================================================
--- openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties (original)
+++ openjpa/trunk/openjpa-jdbc/src/main/resources/org/apache/openjpa/jdbc/kernel/localizer.properties Tue Mar 16 19:10:49 2010
@@ -149,17 +149,21 @@ bad-lrs-size: Invalid LRS size. Valid va
     "unknown"(0), "last"(1) or "query"(2). Specified value: {0}.
 bad-join-syntax: Invalid join syntax. Valid values are \
     "sql92"(0), "tradition"(1) or "database"(2). Specified value: {0}.
-exclude-multi-select: This query generates multiple SQL statements. \
-	A query can be cached only when it corresponds to a single SQL statement.  
-exclude-not-result: This query returns a single value rather than \
-	a list. A query that returns single value can not be cached. 
-exclude-no-user-object: Post-execution data can not be extracted \
-    from this query.
-exclude-no-sql: Target SQL statement can not be extracted \
-    from this query.
-exclude-no-select: Internal select instance can not be extracted \
-    from this query.
-exclude-not-select-rop: The query result is not obtained by executing \
-	a select statement. This can happen if the query was evaluated in-memory. \
-	The result was provided by an instance of {0}.  
-exclude-not-executor: This query was not executed on a data store.    
+exclude-multi-select: Query "{0}" is not cached because it generates multiple \
+    SQL statements. A query can be cached only when it corresponds to a single \
+    SQL statement.  
+exclude-not-result: Query "{0}" is not cached because it returns a single value \
+    rather than a list. A query that returns single value can not be cached. 
+exclude-no-user-object: Query "{0}" is not cached because post-execution data \
+    can not be extracted from this query.
+exclude-no-sql: Query "{0}" is not cached because SQL statement can not be \
+    extracted from this query.
+exclude-no-select: Query "{0}" is not cached because the internal select \
+    can not be extracted from this query.
+exclude-not-select-rop: Query "{0}" is not cached because its result \
+    is not obtained by executing a select statement. This can happen \
+    if the query was evaluated in-memory. The result was provided by {1}.  
+exclude-not-executor: Query "{0}" is not cached because it was not executed on a \
+    data store.    
+exclude-externalized-param: Query "{0}" is not cached because some parameterized \
+    field values are externalized.  
\ No newline at end of file