You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ar...@apache.org on 2018/04/18 11:27:48 UTC

olingo-odata2 git commit: [OLINGO-1258]JPA Filter for null is throwing exception

Repository: olingo-odata2
Updated Branches:
  refs/heads/master 2db7d0a03 -> 48b8d3ee3


[OLINGO-1258]JPA Filter for null is throwing exception


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/48b8d3ee
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/48b8d3ee
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/48b8d3ee

Branch: refs/heads/master
Commit: 48b8d3ee372ede49a5a23fe9a090f2856e730677
Parents: 2db7d0a
Author: Archana Rai <ar...@sap.com>
Authored: Wed Apr 18 16:57:38 2018 +0530
Committer: Archana Rai <ar...@sap.com>
Committed: Wed Apr 18 16:57:38 2018 +0530

----------------------------------------------------------------------
 .../odata2/jpa/processor/core/ODataExpressionParser.java  |  2 +-
 .../processor/core/ODataFilterExpressionParserTest.java   | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/48b8d3ee/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 7d845e9..3ccb290 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
@@ -156,7 +156,7 @@ public class ODataExpressionParser {
         if(EdmSimpleTypeKind.String.getEdmSimpleTypeInstance().isCompatible(type)){
           return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
               + (!"null".equals(right) ? JPQLStatement.Operator.LIKE : "IS") + JPQLStatement.DELIMITER.SPACE + right
-              + " ESCAPE '\\'" + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
+              + ("null".equals(right) ? "" : " ESCAPE '\\'") + JPQLStatement.DELIMITER.PARENTHESIS_RIGHT;
         }
         return JPQLStatement.DELIMITER.PARENTHESIS_LEFT + left + JPQLStatement.DELIMITER.SPACE
             + (!"null".equals(right) ? JPQLStatement.Operator.EQ : "IS") + JPQLStatement.DELIMITER.SPACE + right

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/48b8d3ee/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 bd15849..f964d7d 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
@@ -130,6 +130,8 @@ public class ODataFilterExpressionParserTest {
   
   private static final String[] EXPRESSION_STARTSWITHEQTRUE_ANDTRUE = {"startswith(text,'abc') eq true and true", 
       "((E1.text LIKE CONCAT('abc','%') ESCAPE '\\' ) AND true)"};
+
+  private static final String[] EXPRESSION_NULL_EQ = { "id eq null", "(E1.id IS null)" };
   
   private static Edm edm = null;
 
@@ -248,6 +250,14 @@ public class ODataFilterExpressionParserTest {
     assertEquals(EXPRESSION_EQ[OUTPUT], whereExpression);
   
   }
+  
+  @Test
+  public void testNullEqRelation() {
+    String whereExpression = parseWhereExpression(EXPRESSION_NULL_EQ[INPUT], false);
+    whereExpression = replacePositionalParameters(whereExpression);
+    assertEquals(EXPRESSION_NULL_EQ[OUTPUT], whereExpression);
+  
+  }
 
   @Test
   public void testSimpleNeRelation() {