You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by sk...@apache.org on 2016/12/19 14:51:38 UTC
[1/2] cayenne git commit: CAY-2175 AliasName used in EJBQLQuery is
not working if it contains mixed case Fix and tests
Repository: cayenne
Updated Branches:
refs/heads/master 1fd28cb46 -> 3ad0f4a22
CAY-2175 AliasName used in EJBQLQuery is not working if it contains mixed case
Fix and tests
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/8ea40b0e
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/8ea40b0e
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/8ea40b0e
Branch: refs/heads/master
Commit: 8ea40b0ede74db9bf58ff97da51317f0dcd1d20f
Parents: 1fd28cb
Author: Nikita Timofeev <st...@gmail.com>
Authored: Mon Dec 19 17:05:56 2016 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Mon Dec 19 17:05:56 2016 +0300
----------------------------------------------------------------------
.../apache/cayenne/ejbql/parser/Compiler.java | 71 ++++++++++----------
.../cayenne/ejbql/EJBQLParser_CompileIT.java | 29 ++++++++
docs/doc/src/main/resources/RELEASE-NOTES.txt | 6 +-
3 files changed, 68 insertions(+), 38 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8ea40b0e/cayenne-server/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java b/cayenne-server/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
index 95a728b..3908ff3 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/ejbql/parser/Compiler.java
@@ -88,49 +88,48 @@ class Compiler {
Map<EJBQLPath, Integer> pathsInSelect = new HashMap<>();
- if (parsed != null) {
- for (int i = 0; i < parsed.getChildrenCount(); i++) {
- if (parsed.getChild(i) instanceof EJBQLSelectClause) {
-
- EJBQLExpression parsedTemp = parsed.getChild(i);
- boolean stop = false;
-
- while (parsedTemp.getChildrenCount() > 0 && !stop) {
- EJBQLExpression newParsedTemp = null;
- for (int j = 0; j < parsedTemp.getChildrenCount(); j++) {
- if (parsedTemp.getChild(j) instanceof EJBQLSelectExpression) {
- for (int k = 0; k < parsedTemp
- .getChild(j)
- .getChildrenCount(); k++) {
-
- if (parsedTemp.getChild(j).getChild(k) instanceof EJBQLPath) {
- pathsInSelect.put((EJBQLPath) parsedTemp
- .getChild(j)
- .getChild(k), j);
-
- }
+ for (int i = 0; i < parsed.getChildrenCount(); i++) {
+ if (parsed.getChild(i) instanceof EJBQLSelectClause) {
+
+ EJBQLExpression parsedTemp = parsed.getChild(i);
+ boolean stop = false;
+
+ while (parsedTemp.getChildrenCount() > 0 && !stop) {
+ EJBQLExpression newParsedTemp = null;
+ for (int j = 0; j < parsedTemp.getChildrenCount(); j++) {
+ if (parsedTemp.getChild(j) instanceof EJBQLSelectExpression) {
+ for (int k = 0; k < parsedTemp
+ .getChild(j)
+ .getChildrenCount(); k++) {
+
+ if (parsedTemp.getChild(j).getChild(k) instanceof EJBQLPath) {
+ pathsInSelect.put((EJBQLPath) parsedTemp
+ .getChild(j)
+ .getChild(k), j);
+
}
}
+ }
+ else {
+ if (parsedTemp.getChild(j).getChildrenCount() == 0) {
+ stop = true;
+ }
else {
- if (parsedTemp.getChild(j).getChildrenCount() == 0) {
- stop = true;
- }
- else {
- newParsedTemp = parsedTemp.getChild(j);
- }
+ newParsedTemp = parsedTemp.getChild(j);
}
}
+ }
- if (!stop && newParsedTemp != null) {
- parsedTemp = newParsedTemp;
- }
- else {
- stop = true;
- }
+ if (!stop && newParsedTemp != null) {
+ parsedTemp = newParsedTemp;
+ }
+ else {
+ stop = true;
}
}
}
}
+
// postprocess paths, now that all id vars are resolved
if (paths != null) {
for (EJBQLPath path : paths) {
@@ -178,7 +177,7 @@ class Compiler {
Integer integer = pathsInSelect.get(path);
if (integer != null) {
resultComponents.remove(integer.intValue());
- resultComponents.add(pathsInSelect.get(path).intValue(), ident);
+ resultComponents.add(integer, ident);
rootId = pathRelationshipString;
}
}
@@ -538,7 +537,7 @@ class Compiler {
@Override
public boolean visitPath(EJBQLExpression expression, int finishedChildIndex) {
if (finishedChildIndex + 1 < expression.getChildrenCount()) {
- this.id = ((EJBQLPath) expression).getId();
+ this.id = normalizeIdPath(((EJBQLPath) expression).getId());
this.descriptor = descriptorsById.get(id);
if (descriptor == null) {
@@ -568,7 +567,7 @@ class Compiler {
public boolean visitIdentifier(EJBQLExpression expression) {
if (incoming != null) {
- String aliasId = expression.getText();
+ String aliasId = expression.getText().toLowerCase();
// map id variable to class descriptor
ClassDescriptor old = descriptorsById.put(aliasId, descriptor);
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8ea40b0e/cayenne-server/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java b/cayenne-server/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java
index 33c3cf0..f9e05f9 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/ejbql/EJBQLParser_CompileIT.java
@@ -105,4 +105,33 @@ public class EJBQLParser_CompileIT extends ServerCase {
assertNotNull(select3.getEntityDescriptor("a"));
assertNotNull(select3.getEntityDescriptor("A"));
}
+
+ /**
+ * CAY-2175
+ */
+ @Test
+ public void testGetEntityDescriptorCaseSensitivityInJoin() {
+ EJBQLCompiledExpression select1 = parser.compile(
+ "SELECT artistAlias FROM Artist artistAlias " +
+ "WHERE artistAlias.artistName = 'Abcd'",
+ resolver
+ );
+ assertNotNull(select1.getEntityDescriptor("artistalias"));
+ assertNotNull(select1.getEntityDescriptor("artistAlias"));
+ assertNotNull(select1.getEntityDescriptor("ArTiStAlIaS"));
+
+ EJBQLCompiledExpression select2 = parser.compile(
+ "SELECT artistalias from Artist AS ArtistAlias JOIN artistalias.paintingArray as PaintingAlias " +
+ "where aRtistALiaS.artistName = 'Abcd'",
+ resolver
+ );
+ assertNotNull(select2.getEntityDescriptor("artistalias"));
+ assertNotNull(select2.getEntityDescriptor("artistAlias"));
+ assertNotNull(select2.getEntityDescriptor("ArTiStAlIaS"));
+
+ assertNotNull(select2.getEntityDescriptor("PaintingAlias"));
+ assertNotNull(select2.getEntityDescriptor("paintingalias"));
+ assertNotNull(select2.getEntityDescriptor("PaInTinGAlIaS"));
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/8ea40b0e/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 eb13a0e..c67b2b9 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -24,11 +24,13 @@ CAY-2172 Cleanup Modeler import and migrate db actions
CAY-2176 Java 7 diamond class generation templates
Bug Fixes:
+
CAY-2174 Change FK attribute name cause ObjAttribute appear after Reverse Engineering
+CAY-2175 AliasName used in EJBQLQuery is not working if it contains mixed case
----------------------------------
Release: 4.0.M4
-Date:
+Date: December 13, 2016
----------------------------------
Changes/New Features:
@@ -100,7 +102,7 @@ CAY-2154 Migrate db: queries order
----------------------------------
Release: 4.0.M3
-Date:
+Date: February 12, 2016
----------------------------------
Changes/New Features:
[2/2] cayenne git commit: Merge branch '165'
Posted by sk...@apache.org.
Merge branch '165'
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/3ad0f4a2
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/3ad0f4a2
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/3ad0f4a2
Branch: refs/heads/master
Commit: 3ad0f4a2298bc00097cb825359a30a0a2eebbf09
Parents: 1fd28cb 8ea40b0
Author: Savva Kolbachev <s....@gmail.com>
Authored: Mon Dec 19 17:51:27 2016 +0300
Committer: Savva Kolbachev <s....@gmail.com>
Committed: Mon Dec 19 17:51:27 2016 +0300
----------------------------------------------------------------------
.../apache/cayenne/ejbql/parser/Compiler.java | 71 ++++++++++----------
.../cayenne/ejbql/EJBQLParser_CompileIT.java | 29 ++++++++
docs/doc/src/main/resources/RELEASE-NOTES.txt | 6 +-
3 files changed, 68 insertions(+), 38 deletions(-)
----------------------------------------------------------------------