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;
+ }
}