You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by nt...@apache.org on 2017/02/16 11:42:50 UTC
cayenne git commit: CAY-2232 Proper conversion to String for new
functional expressions
Repository: cayenne
Updated Branches:
refs/heads/master 51a3399d4 -> 5c805019a
CAY-2232 Proper conversion to String for new functional expressions
Project: http://git-wip-us.apache.org/repos/asf/cayenne/repo
Commit: http://git-wip-us.apache.org/repos/asf/cayenne/commit/5c805019
Tree: http://git-wip-us.apache.org/repos/asf/cayenne/tree/5c805019
Diff: http://git-wip-us.apache.org/repos/asf/cayenne/diff/5c805019
Branch: refs/heads/master
Commit: 5c805019a21c10f182e86ca98bc5063246e36851
Parents: 51a3399
Author: Nikita Timofeev <st...@gmail.com>
Authored: Thu Feb 16 14:42:40 2017 +0300
Committer: Nikita Timofeev <st...@gmail.com>
Committed: Thu Feb 16 14:42:40 2017 +0300
----------------------------------------------------------------------
.../cayenne/exp/parser/ASTFunctionCall.java | 29 ++++++++++++++++---
.../apache/cayenne/exp/parser/ASTAbsTest.java | 11 +++++++
.../cayenne/exp/parser/ASTAggregateTest.java | 30 ++++++++++++++++----
.../cayenne/exp/parser/ASTConcatTest.java | 10 +++++++
.../cayenne/exp/parser/ASTLocateTest.java | 12 ++++++++
.../apache/cayenne/exp/parser/ASTLowerTest.java | 11 +++++++
.../apache/cayenne/exp/parser/ASTModTest.java | 12 ++++++++
.../apache/cayenne/exp/parser/ASTSqrtTest.java | 11 +++++++
.../cayenne/exp/parser/ASTSubstringTest.java | 11 +++++++
.../apache/cayenne/exp/parser/ASTTrimTest.java | 12 ++++++++
.../apache/cayenne/exp/parser/ASTUpperTest.java | 12 ++++++++
docs/doc/src/main/resources/RELEASE-NOTES.txt | 1 +
12 files changed, 152 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTFunctionCall.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTFunctionCall.java b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTFunctionCall.java
index 004a306..c8d7f06 100644
--- a/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTFunctionCall.java
+++ b/cayenne-server/src/main/java/org/apache/cayenne/exp/parser/ASTFunctionCall.java
@@ -19,6 +19,9 @@
package org.apache.cayenne.exp.parser;
+import java.io.IOException;
+import java.util.List;
+
import org.apache.cayenne.exp.Expression;
/**
@@ -57,12 +60,9 @@ public abstract class ASTFunctionCall extends SimpleNode {
return functionName;
}
- /**
- * TODO what should this method return?
- */
@Override
protected String getExpressionOperator(int index) {
- return functionName;
+ return ",";
}
@Override
@@ -78,4 +78,25 @@ public abstract class ASTFunctionCall extends SimpleNode {
public int hashCode() {
return 31 * super.hashCode() + functionName.hashCode();
}
+
+ @Override
+ public void appendAsString(Appendable out) throws IOException {
+ out.append(getFunctionName());
+ if(parent == null) {
+ // else call to super method will append parenthesis
+ out.append("(");
+ }
+ super.appendAsString(out);
+ if(parent == null) {
+ out.append(")");
+ }
+ }
+
+ @Override
+ public void appendAsEJBQL(List<Object> parameterAccumulator, Appendable out, String rootId) throws IOException {
+ out.append(getFunctionName());
+ out.append("(");
+ super.appendChildrenAsEJBQL(parameterAccumulator, out, rootId);
+ out.append(")");
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAbsTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAbsTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAbsTest.java
index a8ec060..c5c88d1 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAbsTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAbsTest.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.exp.parser;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.testdo.table_primitives.TablePrimitives;
import org.junit.Test;
@@ -42,4 +44,13 @@ public class ASTAbsTest {
assertEquals(10.0, res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "ABS(xyz)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTAbs);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
index 496e449..67ce3d0 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTAggregateTest.java
@@ -46,10 +46,13 @@ public class ASTAggregateTest {
@Test
public void testAvgParse() throws Exception {
- Expression exp = ExpressionFactory.exp("AVG(artistName)");
+ String expressionString = "AVG(artistName)";
+ Expression exp = ExpressionFactory.exp(expressionString);
assertTrue(exp instanceof ASTAvg);
assertEquals(1, exp.getOperandCount());
assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+
+ assertEquals(expressionString, exp.toString());
}
@Test
@@ -60,18 +63,24 @@ public class ASTAggregateTest {
@Test
public void testCountExpParse() throws Exception {
- Expression exp = ExpressionFactory.exp("COUNT(artistName)");
+ String expressionString = "COUNT(artistName)";
+ Expression exp = ExpressionFactory.exp(expressionString);
assertTrue(exp instanceof ASTCount);
assertEquals(1, exp.getOperandCount());
assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+
+ assertEquals(expressionString, exp.toString());
}
@Test
public void testCountAsteriskParse() throws Exception {
- Expression exp = ExpressionFactory.exp("COUNT(*)");
+ String expressionString = "COUNT(*)";
+ Expression exp = ExpressionFactory.exp(expressionString);
assertTrue(exp instanceof ASTCount);
assertEquals(1, exp.getOperandCount());
assertTrue(exp.getOperand(0) instanceof ASTAsterisk);
+
+ assertEquals(expressionString, exp.toString());
}
@Test
@@ -82,10 +91,13 @@ public class ASTAggregateTest {
@Test
public void testMinParse() throws Exception {
- Expression exp = ExpressionFactory.exp("MIN(artistName)");
+ String expressionString = "MIN(artistName)";
+ Expression exp = ExpressionFactory.exp(expressionString);
assertTrue(exp instanceof ASTMin);
assertEquals(1, exp.getOperandCount());
assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+
+ assertEquals(expressionString, exp.toString());
}
@Test
@@ -96,10 +108,13 @@ public class ASTAggregateTest {
@Test
public void testMaxParse() throws Exception {
- Expression exp = ExpressionFactory.exp("MAX(artistName)");
+ String expressionString = "MAX(artistName)";
+ Expression exp = ExpressionFactory.exp(expressionString);
assertTrue(exp instanceof ASTMax);
assertEquals(1, exp.getOperandCount());
assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+
+ assertEquals(expressionString, exp.toString());
}
@Test
@@ -110,10 +125,13 @@ public class ASTAggregateTest {
@Test
public void testSumParse() throws Exception {
- Expression exp = ExpressionFactory.exp("SUM(artistName)");
+ String expressionString = "SUM(artistName)";
+ Expression exp = ExpressionFactory.exp(expressionString);
assertTrue(exp instanceof ASTSum);
assertEquals(1, exp.getOperandCount());
assertTrue(exp.getOperand(0) instanceof ASTObjPath);
+
+ assertEquals(expressionString, exp.toString());
}
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java
index b468efe..d951327 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTConcatTest.java
@@ -63,4 +63,14 @@ public class ASTConcatTest {
assertEquals("name test", res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "CONCAT(xyz , \" \" , abc)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTConcat);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLocateTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLocateTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLocateTest.java
index 9c4090c..9e1a0e8 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLocateTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLocateTest.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.exp.parser;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.testdo.testmap.Artist;
import org.junit.Test;
@@ -50,4 +52,14 @@ public class ASTLocateTest {
assertEquals(0, res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "LOCATE(\"xyz\" , abc , 4)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTLocate);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLowerTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLowerTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLowerTest.java
index 887e5b5..96a6671 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLowerTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTLowerTest.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.exp.parser;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.testdo.testmap.Artist;
import org.junit.Test;
@@ -43,4 +45,13 @@ public class ASTLowerTest {
assertEquals("abcdefg02x", res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "LOWER(xyz)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTLower);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTModTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTModTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTModTest.java
index fb014f6..0f9febd 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTModTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTModTest.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.exp.parser;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.testdo.table_primitives.TablePrimitives;
import org.junit.Test;
@@ -42,4 +44,14 @@ public class ASTModTest {
assertEquals(1.0, res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "MOD(xyz , 3)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTMod);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
+
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSqrtTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSqrtTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSqrtTest.java
index 50dbf2f..13c015b 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSqrtTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSqrtTest.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.exp.parser;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.testdo.table_primitives.TablePrimitives;
import org.junit.Test;
@@ -41,4 +43,13 @@ public class ASTSqrtTest {
assertEquals(3.0, res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "SQRT(xyz)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTSqrt);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSubstringTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSubstringTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSubstringTest.java
index ac51846..ee6a74a 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSubstringTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTSubstringTest.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.exp.parser;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.testdo.testmap.Artist;
import org.junit.Test;
@@ -45,4 +47,13 @@ public class ASTSubstringTest {
assertEquals("34567890", res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "SUBSTRING(xyz , 2 , 3)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTSubstring);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTTrimTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTTrimTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTTrimTest.java
index 6a45370..65b94ea 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTTrimTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTTrimTest.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.exp.parser;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.testdo.testmap.Artist;
import org.junit.Test;
@@ -42,4 +44,14 @@ public class ASTTrimTest {
assertEquals("testArtist", res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "TRIM(xyz)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTTrim);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTUpperTest.java
----------------------------------------------------------------------
diff --git a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTUpperTest.java b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTUpperTest.java
index 6918041..375fe8d 100644
--- a/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTUpperTest.java
+++ b/cayenne-server/src/test/java/org/apache/cayenne/exp/parser/ASTUpperTest.java
@@ -19,6 +19,8 @@
package org.apache.cayenne.exp.parser;
+import org.apache.cayenne.exp.Expression;
+import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.testdo.testmap.Artist;
import org.junit.Test;
@@ -43,4 +45,14 @@ public class ASTUpperTest {
assertEquals("ABCDEFX981", res);
}
+ @Test
+ public void parseTest() throws Exception {
+ String expString = "UPPER(xyz)";
+ Expression exp = ExpressionFactory.exp(expString);
+
+ assertTrue(exp instanceof ASTUpper);
+ String toString = exp.toString();
+ assertEquals(expString, toString);
+ }
+
}
http://git-wip-us.apache.org/repos/asf/cayenne/blob/5c805019/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 56984e8..94d9729 100644
--- a/docs/doc/src/main/resources/RELEASE-NOTES.txt
+++ b/docs/doc/src/main/resources/RELEASE-NOTES.txt
@@ -31,6 +31,7 @@ CAY-2212 cdbimport cleanup and configuration schema refactoring
CAY-2223 JCacheQueryCache - a query cache provider to plug in JCache implementers
CAY-2225 Extensible CacheInvalidationFilter logic
CAY-2228 Deprecate multiple cache groups in caching and query API
+CAY-2232 Proper conversion to String for new functional expressions
CAY-2235 Deprecate Query.getDataMap() method
Bug Fixes: