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 <[email protected]> Authored: Wed Jun 1 07:07:34 2016 +0200 Committer: mibo <[email protected]> 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:
