From 37c711c84e8ed8f02c518654d3df82cdb4be040d Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Thu, 20 Oct 2016 07:55:51 +0200 Subject: [PATCH] add npe check for current token Signed-off-by: Michael Hirsch --- .../jpa/rsql/RsqlParserValidationOracle.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/RsqlParserValidationOracle.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/RsqlParserValidationOracle.java index adec49389..181fef656 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/RsqlParserValidationOracle.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/RsqlParserValidationOracle.java @@ -122,6 +122,9 @@ public class RsqlParserValidationOracle implements RsqlValidationOracle { final ParseExceptionWrapper parseExceptionWrapper = new ParseExceptionWrapper(parseException); final int[][] expectedTokenSequence = parseExceptionWrapper.getExpectedTokenSequence(); final TokenWrapper currentToken = parseExceptionWrapper.getCurrentToken(); + if (currentToken == null) { + return Collections.emptyList(); + } final TokenWrapper nextToken = currentToken.getNext(); final int currentTokenKind = currentToken.getKind(); final String currentTokenImageName = currentToken.getImage(); @@ -138,17 +141,22 @@ public class RsqlParserValidationOracle implements RsqlValidationOracle { } for (final int[] is : expectedTokenSequence) { - for (final int i : is) { - final Collection tokenImage = TokenDescription.getTokenImage(i); - if (tokenImage != null && !tokenImage.isEmpty()) { - tokenImage.forEach(image -> listTokens.add(new SuggestToken(currentTokenEndColumn + 1, - nextTokenBeginColumn + image.length(), null, image))); - } - } + addSuggestionOnTokenImage(listTokens, nextTokenBeginColumn, currentTokenEndColumn, is); } return listTokens; } + private static void addSuggestionOnTokenImage(final List listTokens, final int nextTokenBeginColumn, + final int currentTokenEndColumn, final int[] is) { + for (final int i : is) { + final Collection tokenImage = TokenDescription.getTokenImage(i); + if (tokenImage != null && !tokenImage.isEmpty()) { + tokenImage.forEach(image -> listTokens.add(new SuggestToken(currentTokenEndColumn + 1, + nextTokenBeginColumn + image.length(), null, image))); + } + } + } + private static Optional> handleFieldTokenSuggestion(final String currentTokenImageName, final int nextTokenBeginColumn, final int currentTokenEndColumn) { final boolean containsDot = currentTokenImageName.indexOf('.') != -1;