You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2013/05/24 20:31:39 UTC

svn commit: r1486154 - in /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src: main/java/org/apache/cayenne/ main/java/org/apache/cayenne/access/ test/java/org/apache/cayenne/

Author: aadamchik
Date: Fri May 24 18:31:38 2013
New Revision: 1486154

URL: http://svn.apache.org/r1486154
Log:
CAY-1829 Make ResultIterator implement Iterable<T>, create ObjectContext.iterate method

adding 'ierator' method for those who don't like the callback

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ResultIteratorCallback.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockBaseContext.java
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockObjectContext.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java?rev=1486154&r1=1486153&r2=1486154&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/BaseContext.java Fri May 24 18:31:38 2013
@@ -305,7 +305,7 @@ public abstract class BaseContext implem
         }
     }
 
-    protected abstract <T> ResultIterator<T> iterator(Select<T> query);
+    public abstract <T> ResultIterator<T> iterator(Select<T> query);
 
     public void prepareForAccess(Persistent object, String property, boolean lazyFaulting) {
         if (object.getPersistenceState() == PersistenceState.HOLLOW) {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java?rev=1486154&r1=1486153&r2=1486154&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/CayenneContext.java Fri May 24 18:31:38 2013
@@ -387,7 +387,7 @@ public class CayenneContext extends Base
      * 
      * @since 3.2
      */
-    protected <T> ResultIterator<T> iterator(org.apache.cayenne.query.Select<T> query) {
+    public <T> ResultIterator<T> iterator(org.apache.cayenne.query.Select<T> query) {
         List<T> objects = select(query);
         return new CollectionResultIterator<T>(objects);
     }

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContext.java?rev=1486154&r1=1486153&r2=1486154&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ObjectContext.java Fri May 24 18:31:38 2013
@@ -183,6 +183,17 @@ public interface ObjectContext extends S
     <T> void iterate(Select<T> query, ResultIteratorCallback<T> callback);
 
     /**
+     * Creates a ResultIterator based on the provided query. It is usually
+     * backed by an open result set and is useful for processing of large data
+     * sets, preservign a constant memory footpront. The caller must wrap
+     * iteration in try/finally and close the ResultIterator explicitly. Or use
+     * {@link #iterate(Select, ResultIteratorCallback)} as an alternative.
+     * 
+     * @since 3.2
+     */
+    <T> ResultIterator<T> iterator(Select<T> query);
+
+    /**
      * Executes any kind of query providing the result in a form of
      * QueryResponse.
      */

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ResultIteratorCallback.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ResultIteratorCallback.java?rev=1486154&r1=1486153&r2=1486154&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ResultIteratorCallback.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/ResultIteratorCallback.java Fri May 24 18:31:38 2013
@@ -18,8 +18,10 @@
  ****************************************************************/
 package org.apache.cayenne;
 
-
 /**
+ * A callback interface that allows to scan through a {@link ResultIterator}
+ * without the need to close it explicitly.
+ * 
  * @since 3.2
  */
 public interface ResultIteratorCallback<T> {

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java?rev=1486154&r1=1486153&r2=1486154&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/DataContext.java Fri May 24 18:31:38 2013
@@ -785,7 +785,7 @@ public class DataContext extends BaseCon
 
     @SuppressWarnings("unchecked")
     @Override
-    protected <T> ResultIterator<T> iterator(Select<T> query) {
+    public <T> ResultIterator<T> iterator(Select<T> query) {
         final ResultIterator<DataRow> rows = performIteratedQuery(query);
 
         QueryMetadata md = query.getMetaData(getEntityResolver());

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockBaseContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockBaseContext.java?rev=1486154&r1=1486153&r2=1486154&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockBaseContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockBaseContext.java Fri May 24 18:31:38 2013
@@ -112,7 +112,7 @@ public class MockBaseContext extends Bas
     }
 
     @Override
-    protected <T> ResultIterator<T> iterator(Select<T> query) {
+    public <T> ResultIterator<T> iterator(Select<T> query) {
         return null;
     }
 

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockObjectContext.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockObjectContext.java?rev=1486154&r1=1486153&r2=1486154&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockObjectContext.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/MockObjectContext.java Fri May 24 18:31:38 2013
@@ -152,4 +152,8 @@ public class MockObjectContext implement
     public <T> void iterate(Select<T> query, ResultIteratorCallback<T> callback) {
 
     }
+    
+    public <T> ResultIterator<T> iterator(Select<T> query) {
+        return null;
+    }
 }