This is an automated email from the ASF dual-hosted git repository.

ntimofeev pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cayenne.git


The following commit(s) were added to refs/heads/master by this push:
     new 5bb9ad566 Improve javadocs for map() methods of SQLSelect and 
ColumnSelect
5bb9ad566 is described below

commit 5bb9ad566d1e63b904b83ab434ea996197278789
Author: Nikita Timofeev <stari...@gmail.com>
AuthorDate: Fri Jul 15 15:24:58 2022 +0300

    Improve javadocs for map() methods of SQLSelect and ColumnSelect
---
 .../main/java/org/apache/cayenne/query/ColumnSelect.java   | 11 ++++++++---
 .../src/main/java/org/apache/cayenne/query/SQLSelect.java  | 14 ++++++++++++++
 .../main/java/org/apache/cayenne/reflect/PojoMapper.java   | 12 ++++++++++--
 .../test/java/org/apache/cayenne/query/ColumnSelectIT.java |  1 -
 4 files changed, 32 insertions(+), 6 deletions(-)

diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java 
b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
index 994e65345..dd74e6063 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/ColumnSelect.java
@@ -605,10 +605,15 @@ public class ColumnSelect<T> extends FluentSelect<T> {
     }
 
     /**
-     * Wrap result to given class.  Wrapper class should be public and have 
public constructor with no args.
-     * Columns order in the query should corespond to fields defined in that 
class.
+     * Maps result of this query by processing with a given function.
+     * <br/>
+     * Could be used to map plain Object[] to some domain-specific object.
+     * <br/>
+     * <b>Note:</b> this method could be called multiple time, result will be 
mapped by all functions in the call order.
+     * @param mapper function that maps result to the required type.
+     * @return this query with changed result type
+     * @param <E> new result type
      *
-     * @param mapper function that maps result to required form.
      * @since 4.2
      */
     @SuppressWarnings("unchecked")
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java 
b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
index 2e5fda6ec..f069c5a43 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/query/SQLSelect.java
@@ -603,6 +603,20 @@ public class SQLSelect<T> extends IndirectQuery implements 
Select<T> {
                return this;
        }
 
+       /**
+        * Map result of this query by processing with a given function.
+        * <br/>
+        * Could be used to map plain Object[] to some domain-specific object.
+        * <br/>
+        * <b>Note:</b> this method could be called multiple time, result will 
be mapped by all functions in the call order.
+        * @param mapper function that maps result to the required type.
+        * @return this query with changed result type
+        * @param <E> new result type
+        *
+        * @see ColumnSelect#map(Function)
+        *
+        * @since 4.2
+        */
        @SuppressWarnings("unchecked")
        public <E> SQLSelect<E> map(Function<T, E> mapper) {
                this.resultMapper = mapper;
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java 
b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java
index c0abf6e19..7739c8c6d 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/reflect/PojoMapper.java
@@ -27,13 +27,21 @@ import java.util.function.Function;
 import org.apache.cayenne.CayenneRuntimeException;
 
 /**
- * Simple mapper of Object[] to POJO class. This class relies on field order, 
so use with caution.
+ * Simple mapper of Object[] to a POJO class.
+ * Target class must have default constructor and at least as many fields as a 
processed array.
+ * <br/>
+ * <b>Note:</b> Current implementation relies on the field order,
+ * so use with caution as this order may vary on different JDK platforms.
  * @param <T> type of object to produce
+ *
+ * @see org.apache.cayenne.query.ColumnSelect#map(Function)
+ * @see org.apache.cayenne.query.SQLSelect#map(Function)
+ *
  * @since 4.2
  */
 public class PojoMapper<T> implements Function<Object[], T> {
 
-    private static MethodHandles.Lookup lookup = MethodHandles.lookup();
+    private static final MethodHandles.Lookup lookup = MethodHandles.lookup();
 
     private final Class<T> type;
     private final MethodHandle constructor;
diff --git 
a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java 
b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
index 448ac88f8..d8ff323f6 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
@@ -41,7 +41,6 @@ import org.apache.cayenne.exp.property.EntityProperty;
 import org.apache.cayenne.exp.property.NumericProperty;
 import org.apache.cayenne.exp.property.PropertyFactory;
 import org.apache.cayenne.exp.property.StringProperty;
-import org.apache.cayenne.reflect.PojoMapper;
 import org.apache.cayenne.test.jdbc.DBHelper;
 import org.apache.cayenne.test.jdbc.TableHelper;
 import org.apache.cayenne.testdo.testmap.Artist;

Reply via email to