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/06/01 05:08:04 UTC

olingo-odata2 git commit: [OLINGO-955] Fix NPE for ListProcessors

Repository: olingo-odata2
Updated Branches:
  refs/heads/master 46afc9901 -> 5a2718b0a


[OLINGO-955] Fix NPE for ListProcessors


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

Branch: refs/heads/master
Commit: 5a2718b0a3084f4f241d852f9ad4387d0b0661f4
Parents: 46afc99
Author: mibo <mi...@apache.org>
Authored: Wed Jun 1 07:07:34 2016 +0200
Committer: mibo <mi...@apache.org>
Committed: Wed Jun 1 07:07:34 2016 +0200

----------------------------------------------------------------------
 .../processor/core/ListsProcessor.java          |  9 ++---
 .../odata2/ref/processor/ListsProcessor.java    | 35 ++++++++++----------
 2 files changed, 23 insertions(+), 21 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5a2718b0/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
index a03136b..df23b31 100644
--- a/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
+++ b/odata2-annotation-processor/annotation-processor-core/src/main/java/org/apache/olingo/odata2/annotation/processor/core/ListsProcessor.java
@@ -1431,9 +1431,9 @@ public class ListsProcessor extends DataSourceProcessor {
       final MethodExpression methodExpression = (MethodExpression) expression;
       final String first = evaluateExpression(data, methodExpression.getParameters().get(0));
       final String second = methodExpression.getParameterCount() > 1 ?
-          evaluateExpression(data, methodExpression.getParameters().get(1)) : null;
+          evaluateExpression(data, methodExpression.getParameters().get(1)) : "";
       final String third = methodExpression.getParameterCount() > 2 ?
-          evaluateExpression(data, methodExpression.getParameters().get(2)) : null;
+          evaluateExpression(data, methodExpression.getParameters().get(2)) : "";
 
       switch (methodExpression.getMethod()) {
       case ENDSWITH:
@@ -1449,8 +1449,9 @@ public class ListsProcessor extends DataSourceProcessor {
       case TRIM:
         return first.trim();
       case SUBSTRING:
-        final int offset = Integer.parseInt(second);
-        return first.substring(offset, offset + Integer.parseInt(third));
+        final int offset = second.length() == 0 ? 0 : Integer.parseInt(second);
+        final int length = third.length() == 0 ? 0 : Integer.parseInt(second);
+        return first.substring(offset, offset + length);
       case SUBSTRINGOF:
         return Boolean.toString(second.contains(first));
       case CONCAT:

http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/5a2718b0/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
----------------------------------------------------------------------
diff --git a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
index 86ae0cb..fb48d5f 100644
--- a/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
+++ b/odata2-lib/odata-ref/src/main/java/org/apache/olingo/odata2/ref/processor/ListsProcessor.java
@@ -1438,26 +1438,27 @@ public class ListsProcessor extends ODataSingleProcessor {
       final MethodExpression methodExpression = (MethodExpression) expression;
       final String first = evaluateExpression(data, methodExpression.getParameters().get(0));
       final String second = methodExpression.getParameterCount() > 1 ?
-          evaluateExpression(data, methodExpression.getParameters().get(1)) : null;
+          evaluateExpression(data, methodExpression.getParameters().get(1)) : "";
       final String third = methodExpression.getParameterCount() > 2 ?
-          evaluateExpression(data, methodExpression.getParameters().get(2)) : null;
+          evaluateExpression(data, methodExpression.getParameters().get(2)) : "";
 
       switch (methodExpression.getMethod()) {
-      case ENDSWITH:
-        return Boolean.toString(first.endsWith(second));
-      case INDEXOF:
-        return Integer.toString(first.indexOf(second));
-      case STARTSWITH:
-        return Boolean.toString(first.startsWith(second));
-      case TOLOWER:
-        return first.toLowerCase(Locale.ROOT);
-      case TOUPPER:
-        return first.toUpperCase(Locale.ROOT);
-      case TRIM:
-        return first.trim();
-      case SUBSTRING:
-        final int offset = Integer.parseInt(second);
-        return first.substring(offset, offset + Integer.parseInt(third));
+        case ENDSWITH:
+          return Boolean.toString(first.endsWith(second));
+        case INDEXOF:
+          return Integer.toString(first.indexOf(second));
+        case STARTSWITH:
+          return Boolean.toString(first.startsWith(second));
+        case TOLOWER:
+          return first.toLowerCase(Locale.ROOT);
+        case TOUPPER:
+          return first.toUpperCase(Locale.ROOT);
+        case TRIM:
+          return first.trim();
+        case SUBSTRING:
+          final int offset = second.length() == 0 ? 0 : Integer.parseInt(second);
+          final int length = third.length() == 0 ? 0 : Integer.parseInt(second);
+          return first.substring(offset, offset + length);
       case SUBSTRINGOF:
         return Boolean.toString(second.contains(first));
       case CONCAT: