cayenne-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Savva Kolbachev (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CAY-1995) Add support for iterators to Select
Date Wed, 01 Apr 2015 10:25:53 GMT

     [ https://issues.apache.org/jira/browse/CAY-1995?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Savva Kolbachev updated CAY-1995:
---------------------------------
    Summary: Add support for iterators to Select  (was: Apply iterators to Select queries
API)

> Add support for iterators to Select
> -----------------------------------
>
>                 Key: CAY-1995
>                 URL: https://issues.apache.org/jira/browse/CAY-1995
>             Project: Cayenne
>          Issue Type: Improvement
>            Reporter: Savva Kolbachev
>            Assignee: Savva Kolbachev
>             Fix For: 4.0.M3
>
>
> There are some improvements which we want to apply:
> *1. To make ResultIterator extending java.io.Closeable;*
> It is important for those, who uses Java 1.7 and higher, because interface java.io.Closeable
extends java.lang.AutoCloseable. So users will be able to use try-with-resources.
> *2. Add next methods to interface Select<T>:*
> {code:title=Select.java|borderStyle=solid}
>     /**
>      * Selects objects using provided context. 
>      * Essentially the inversion of "ObjectContext.select(query)".
>      */
>     <T> List<T> select(ObjectContext context);
>     /**
>      * Selects a single object using provided context. The query is expected to
>      * match zero or one object. It returns null if no objects were matched. If
>      * query matched more than one object, org.apache.cayenne.CayenneRuntimeException
is
>      * thrown.
>      * Essentially the inversion of "ObjectContext.selectOne(Select)".
>      */
>     <T> T selectOne(ObjectContext context);
>     /**
>      * Creates a ResultIterator based on the provided context and passes it to a
>      * callback for processing. The caller does not need to worry about closing
>      * the iterator. This method takes care of it.
>      * Essentially the inversion of "ObjectContext.iterate(Select, ResultIteratorCallback)".
>      */
>     <T> void iterate(ObjectContext context, ResultIteratorCallback<T> callback);
>     /**
>      * Creates a ResultIterator based on the provided context. It is usually
>      * backed by an open result set and is useful for processing of large data
>      * sets, preserving a constant memory footprint. The caller must wrap
>      * iteration in try/finally (or try-with-resources for Java 1.7 and higher) and close
the ResultIterator explicitly.
>      * Essentially the inversion of "ObjectContext.iterator(Select)".
>      */
>     <T> ResultIterator<T> iterator(ObjectContext context);
> {code}
> *3. Investigate Java 8 Streams API and how it works with Iterable;*
> *4. Discuss and apply micro-batches.*



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Mime
View raw message