You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by mi...@apache.org on 2016/04/26 22:52:46 UTC
[04/15] olingo-odata2 git commit: [OLINGO-836] compare to null
handling
[OLINGO-836] compare to null handling
Signed-off-by: Michael Bolz <mi...@sap.com>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/27fced0c
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/27fced0c
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/27fced0c
Branch: refs/heads/OLINGO-882_EnableContainerManagedPersistence
Commit: 27fced0c26f84852df17d3cd343c0eb7642c95e6
Parents: 2538dcc
Author: tothgya <to...@gmail.com>
Authored: Mon Dec 14 13:38:34 2015 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Thu Mar 3 08:26:45 2016 +0100
----------------------------------------------------------------------
.../jpa/processor/core/ODataExpressionParser.java | 9 ++++++---
.../core/ODataFilterExpressionParserTest.java | 15 +++++++++++++++
2 files changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/27fced0c/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
index a6f7c9b..1141831 100644
--- a/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
+++ b/odata2-jpa-processor/jpa-core/src/main/java/org/apache/olingo/odata2/jpa/processor/core/ODataExpressionParser.java
@@ -135,11 +135,14 @@ public class ODataExpressionParser {
+ JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
case EQ:
return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
- + JPQLStatement.Operator.EQ + JPQLStatement.DELIMITER.SPACE + right
+ + (!"null".equals(right) ? JPQLStatement.Operator.EQ : "IS") + JPQLStatement.DELIMITER.SPACE + right
+ JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
case NE:
return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
- + JPQLStatement.Operator.NE + JPQLStatement.DELIMITER.SPACE + right
+ + (!"null".equals(right) ?
+ JPQLStatement.Operator.NE :
+ "IS" + JPQLStatement.DELIMITER.SPACE + JPQLStatement.Operator.NOT)
+ + JPQLStatement.DELIMITER.SPACE + right
+ JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
case LT:
return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
@@ -428,7 +431,7 @@ public class ODataExpressionParser {
throw ODataJPARuntimeException.throwException(ODataJPARuntimeException.GENERAL.addContent(e.getMessage()), e);
}
- } else if (edmSimpleType.getDefaultType().equals(Long.class)) {
+ } else if (Long.class.equals(edmSimpleType.getDefaultType())) {
uriLiteral = uriLiteral + JPQLStatement.DELIMITER.LONG; //$NON-NLS-1$
}
return uriLiteral;
http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/27fced0c/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
----------------------------------------------------------------------
diff --git a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
index 24062a2..a29ba5c 100644
--- a/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
+++ b/odata2-jpa-processor/jpa-core/src/test/java/org/apache/olingo/odata2/jpa/processor/core/ODataFilterExpressionParserTest.java
@@ -93,6 +93,11 @@ public class ODataFilterExpressionParserTest {
"(((E1.id = '123') AND (E1.id <> '123')) OR ((E1.id = '123') AND (E1.id <> '123')))" };
private static final String[] EXPRESSION_DATETIME = { "date eq datetime'2000-01-01T00:00:00'",
"(E1.date = {ts '2000-01-01 00:00:00.000'})" };
+
+ private static final String[] EXPRESSION_NULL = { "date eq null", "(E1.date IS null)" };
+
+ private static final String[] EXPRESSION_NOT_NULL = { "date ne null", "(E1.date IS NOT null)" };
+
private static Edm edm = null;
@BeforeClass
@@ -205,6 +210,16 @@ public class ODataFilterExpressionParserTest {
assertEquals(EXPRESSION_MEMBER_OR[OUTPUT], parseWhereExpression(EXPRESSION_MEMBER_OR[INPUT], false));
}
+ @Test
+ public void testNull() {
+ assertEquals(EXPRESSION_NULL[OUTPUT], parseWhereExpression(EXPRESSION_NULL[INPUT], false));
+ }
+
+ @Test
+ public void testNotNull() {
+ assertEquals(EXPRESSION_NOT_NULL[OUTPUT], parseWhereExpression(EXPRESSION_NOT_NULL[INPUT], false));
+ }
+
private String parseWhereExpression(final String input, final boolean isExceptionExpected) {
FilterExpression expression;
try {