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/03/10 22:42:34 UTC

svn commit: r752277 - in /openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence: FetchPlan.java FetchPlanImpl.java HintHandler.java

Author: ppoddar
Date: Tue Mar 10 21:42:33 2009
New Revision: 752277

URL: http://svn.apache.org/viewvc?rev=752277&view=rev
Log:
OPENJPA-959: Allow hink keys be set on facade fetch plan.

Modified:
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlan.java
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java
    openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java

Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlan.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlan.java?rev=752277&r1=752276&r2=752277&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlan.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlan.java Tue Mar 10 21:42:33 2009
@@ -19,6 +19,9 @@
 package org.apache.openjpa.persistence;
 
 import java.util.Collection;
+import java.util.Map;
+import java.util.Set;
+
 import javax.persistence.LockModeType;
 
 import org.apache.openjpa.kernel.FetchConfiguration;
@@ -111,6 +114,27 @@
      * @deprecated use {@link #setQueryResultCacheEnabled} instead.
      */
     public FetchPlan setQueryResultCache(boolean cache);
+    
+    /**
+     * Gets the hint for the given key.
+     * 
+     * @since 2.0.0
+     */
+    public Object getHint(String key);
+    
+    /**
+     * Sets the hint for the given key to the given value.
+     * 
+     * @since 2.0.0
+     */
+    public void setHint(String key, Object value);
+    
+    /**
+     * Gets the hint keys and values currently set of this receiver.
+     * 
+     * @since 2.0.0
+     */
+    public Map<String, Object> getHints();
 
     /**
      * Returns the names of the fetch groups that this component will use

Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java?rev=752277&r1=752276&r2=752277&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/FetchPlanImpl.java Tue Mar 10 21:42:33 2009
@@ -22,6 +22,9 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
 import javax.persistence.LockModeType;
 
 import org.apache.openjpa.kernel.DelegatingFetchConfiguration;
@@ -268,6 +271,18 @@
         return this;
     }
 
+    public Object getHint(String key) {
+        return _fetch.getHint(key);
+    }
+    
+    public void setHint(String key, Object value) {
+        _fetch.setHint(key, value);
+    }
+    
+    public Map<String, Object> getHints() {
+        return _fetch.getHints();
+    }
+    
     public int hashCode() {
         return _fetch.hashCode();
     }

Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java?rev=752277&r1=752276&r2=752277&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/HintHandler.java Tue Mar 10 21:42:33 2009
@@ -271,12 +271,12 @@
     
     private void setHintInternal(String key, Object value) {
         Boolean record = record(key, value);
-        FetchConfiguration fetch = owner.getDelegate().getFetchConfiguration();
+        FetchPlan plan = owner.getFetchPlan();
         ClassLoader loader = owner.getDelegate().getBroker().getClassLoader();
         if (record == Boolean.FALSE)
             return;
         if (record == null) {
-            fetch.setHint(key, value);
+            plan.setHint(key, value);
             return;
         }
         try {
@@ -302,25 +302,23 @@
                     owner.addAggregateListener(arr[i]);
             } else if (isFetchPlanHint(key)) {
                 if (requiresTransaction(key))
-                    ((FetchPlanImpl)owner.getFetchPlan()).getDelegate()
-                        .setHint(key, value);
+                    plan.setHint(key, value);
                 else 
-                    hintToSetter(owner.getFetchPlan(), 
-                        getFetchPlanProperty(key), value);
+                    hintToSetter(plan, getFetchPlanProperty(key), value);
             } else if (HINT_RESULT_COUNT.equals(key)) {
                 int v = (Integer)Filters.convert(value, Integer.class);
                 if (v < 0)
                     throw new ArgumentException(_loc.get("bad-query-hint-value", 
                         key, value), null,  null, false);
-                    fetch.setHint(key, v);
+                    plan.setHint(key, v);
             }  else if (HINT_INVALIDATE_PREPARED_QUERY.equals(key)) {
-                fetch.setHint(key, Filters.convert(value, Boolean.class));
+                plan.setHint(key, Filters.convert(value, Boolean.class));
                 owner.invalidatePreparedQuery();
             } else if (HINT_IGNORE_PREPARED_QUERY.equals(key)) {
-                fetch.setHint(key, Filters.convert(value, Boolean.class));
+                plan.setHint(key, Filters.convert(value, Boolean.class));
                 owner.ignorePreparedQuery();
             } else { // default 
-                fetch.setHint(key, value);
+                plan.setHint(key, value);
             }
             return;
         } catch (IllegalArgumentException iae) {