Repository: cayenne
Updated Branches:
  refs/heads/STABLE-4.0 f074a59b7 -> a07482cc3


CAY-2362 ColumnSelect: unable to use Property without type

(cherry picked from commit cb3f9f4)


Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/7c611dce
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/7c611dce
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/7c611dce

Branch: refs/heads/STABLE-4.0
Commit: 7c611dce2bb7f7c4c6e0b7607e8e944daff51759
Parents: f074a59
Author: Nikita Timofeev <stari...@gmail.com>
Authored: Mon Sep 11 12:40:55 2017 +0300
Committer: Nikita Timofeev <stari...@gmail.com>
Committed: Mon Sep 11 12:55:19 2017 +0300

----------------------------------------------------------------------
 .../translator/select/DefaultSelectTranslator.java     | 13 ++++++++++---
 .../java/org/apache/cayenne/query/ColumnSelectIT.java  | 13 +++++++++++++
 docs/doc/src/main/resources/RELEASE-NOTES.txt          |  1 +
 3 files changed, 24 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cayenne/blob/7c611dce/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java
----------------------------------------------------------------------
diff --git 
a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java
 
b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java
index 59bdc07..39eda02 100644
--- 
a/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java
+++ 
b/cayenne-server/src/main/java/org/apache/cayenne/access/translator/select/DefaultSelectTranslator.java
@@ -415,7 +415,7 @@ public class DefaultSelectTranslator extends QueryAssembler 
implements SelectTra
                        int expressionType = property.getExpression().getType();
 
                        // forbid direct selection of toMany relationships 
columns
-                       if((expressionType == Expression.OBJ_PATH || 
expressionType == Expression.DB_PATH)
+                       if(property.getType() != null && (expressionType == 
Expression.OBJ_PATH || expressionType == Expression.DB_PATH)
                                        && 
(Collection.class.isAssignableFrom(property.getType())
                                                        || 
Map.class.isAssignableFrom(property.getType()))) {
                                throw new CayenneRuntimeException("Can't 
directly select toMany relationship columns. " +
@@ -424,7 +424,9 @@ public class DefaultSelectTranslator extends QueryAssembler 
implements SelectTra
 
                        // evaluate ObjPath with Persistent type as toOne 
relations and use it as full object
                        boolean objectProperty = expressionType == 
Expression.FULL_OBJECT
-                                       || (expressionType == 
Expression.OBJ_PATH && Persistent.class.isAssignableFrom(property.getType()));
+                                       || (property.getType() != null
+                                               && expressionType == 
Expression.OBJ_PATH
+                                               && 
Persistent.class.isAssignableFrom(property.getType()));
 
                        // Qualifier Translator in case of Object Columns have 
side effect -
                        // it will create required joins, that we catch with 
listener above.
@@ -455,7 +457,12 @@ public class DefaultSelectTranslator extends 
QueryAssembler implements SelectTra
                                }
 
                                int type = getJdbcTypeForProperty(property);
-                               ColumnDescriptor descriptor = new 
ColumnDescriptor(builder.toString(), type, property.getType().getName());
+                               ColumnDescriptor descriptor;
+                               if(property.getType() != null) {
+                                       descriptor = new 
ColumnDescriptor(builder.toString(), type, property.getType().getName());
+                               } else {
+                                       descriptor = new 
ColumnDescriptor(builder.toString(), type);
+                               }
                                descriptor.setDataRowKey(alias);
                                descriptor.setIsExpression(true);
                                columns.add(descriptor);

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7c611dce/cayenne-server/src/test/java/org/apache/cayenne/query/ColumnSelectIT.java
----------------------------------------------------------------------
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 d4798c9..25fb80b 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
@@ -973,4 +973,17 @@ public class ColumnSelectIT extends ServerCase {
                 .select(context);
         assertEquals(22, result.size());
     }
+
+    /*
+     * Test deprecated property constructor
+     */
+
+    @Test
+    @SuppressWarnings("deprecation")
+    public void testDeprecateConstructor() {
+        Property<String> property = new Property<>("artistName");
+        List<String> names = ObjectSelect.columnQuery(Artist.class, 
property).select(context);
+        assertEquals(20, names.size());
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/cayenne/blob/7c611dce/docs/doc/src/main/resources/RELEASE-NOTES.txt
----------------------------------------------------------------------
diff --git a/docs/doc/src/main/resources/RELEASE-NOTES.txt 
b/docs/doc/src/main/resources/RELEASE-NOTES.txt
index 1639dd7..bd5820f 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -27,6 +27,7 @@ CAY-2356 EJBQL: Incorrect COUNT() on outer joined table
 CAY-2357 Generic select queries silently convert result to nulls if no PK 
column found
 CAY-2358 NPE when callbacks invoked on null objects
 CAY-2359 EJBQL: db path in not supported in ORDER BY
+CAY-2362 ColumnSelect: unable to use Property without type
 
 ----------------------------------
 Release: 4.0.B1

Reply via email to