[OLINGO-568] Minor code clean up
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/7d4944d1 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/7d4944d1 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/7d4944d1 Branch: refs/heads/master Commit: 7d4944d10e3da762ea5d089b911aafcd3f6d73c5 Parents: 8457c0f Author: mibo <[email protected]> Authored: Fri Nov 13 17:51:24 2015 +0100 Committer: mibo <[email protected]> Committed: Fri Nov 13 17:51:24 2015 +0100 ---------------------------------------------------------------------- .../core/uri/parser/search/SearchParser.java | 26 +++++++++++--------- .../uri/parser/search/SearchParserTest.java | 16 ++++++++---- 2 files changed, 25 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7d4944d1/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParser.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParser.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParser.java index 2cd03c6..804ca67 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParser.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParser.java @@ -21,6 +21,7 @@ package org.apache.olingo.server.core.uri.parser.search; import org.apache.olingo.server.api.uri.queryoption.SearchOption; import org.apache.olingo.server.api.uri.queryoption.search.SearchBinaryOperatorKind; import org.apache.olingo.server.api.uri.queryoption.search.SearchExpression; +import org.apache.olingo.server.api.uri.queryoption.search.SearchTerm; import org.apache.olingo.server.core.uri.parser.search.SearchQueryToken.Token; import org.apache.olingo.server.core.uri.queryoption.SearchOptionImpl; @@ -55,7 +56,7 @@ public class SearchParser { } private SearchExpression processSearchExpression(SearchExpression left) throws SearchParserException { - if (token == null) { + if (isEof()) { return left; } @@ -149,15 +150,10 @@ public class SearchParser { return new SearchBinaryImpl(left, SearchBinaryOperatorKind.OR, se); } - private RuntimeException illegalState() { - return new RuntimeException(); - } - private SearchExpression processNot() throws SearchParserException { nextToken(); if (isToken(Token.WORD) || isToken(Token.PHRASE)) { - SearchExpression searchExpression = processTerm(); - return new SearchUnaryImpl(searchExpression.asSearchTerm()); + return new SearchUnaryImpl(processWordOrPhrase()); } throw new SearchParserException("NOT must be followed by a term not a " + token.getToken(), SearchParserException.MessageKeys.INVALID_NOT_OPERAND, token.getToken().toString()); @@ -175,21 +171,27 @@ public class SearchParser { if (isToken(SearchQueryToken.Token.NOT)) { return processNot(); } - if (isToken(SearchQueryToken.Token.PHRASE)) { + return processWordOrPhrase(); + } + + private SearchTerm processWordOrPhrase() throws SearchParserException { + if (isToken(Token.PHRASE)) { return processPhrase(); - } else if (isToken(SearchQueryToken.Token.WORD)) { + } else if (isToken(Token.WORD)) { return processWord(); } - throw illegalState(); + throw new SearchParserException("Expected PHRASE||WORD found: " + token.getToken(), + SearchParserException.MessageKeys.EXPECTED_DIFFERENT_TOKEN, + Token.PHRASE.name() + "" + Token.WORD.name(), token.getToken().toString()); } - private SearchTermImpl processWord() { + private SearchTerm processWord() { String literal = token.getLiteral(); nextToken(); return new SearchTermImpl(literal); } - private SearchTermImpl processPhrase() { + private SearchTerm processPhrase() { String literal = token.getLiteral(); nextToken(); return new SearchTermImpl(literal); http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/7d4944d1/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserTest.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserTest.java index 0902e8a..97e941c 100644 --- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserTest.java +++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserTest.java @@ -177,6 +177,12 @@ public class SearchParserTest extends SearchParser { runEx(SearchParserException.MessageKeys.INVALID_NOT_OPERAND, Token.NOT, Token.AND); } + + @Test + public void notNotWord() throws Exception { + runEx(SearchParserException.MessageKeys.INVALID_NOT_OPERAND, Token.NOT, Token.NOT, Token.WORD); + } + @Test public void doubleAnd() throws Exception { runEx(SearchParserException.MessageKeys.INVALID_OPERATOR_AFTER_AND, Token.WORD, Token.AND, Token.AND, Token.WORD); @@ -223,17 +229,17 @@ public class SearchParserTest extends SearchParser { ArrayList<SearchQueryToken> tokenList = new ArrayList<SearchQueryToken>(); int wordNumber = 1; int phraseNumber = 1; - for (int i = 0; i < tokenArray.length; i++) { + for (Token aTokenArray : tokenArray) { SearchQueryToken token = mock(SearchQueryToken.class); - when(token.getToken()).thenReturn(tokenArray[i]); - if (tokenArray[i] == Token.WORD) { + when(token.getToken()).thenReturn(aTokenArray); + if (aTokenArray == Token.WORD) { when(token.getLiteral()).thenReturn("word" + wordNumber); wordNumber++; - } else if (tokenArray[i] == Token.PHRASE) { + } else if (aTokenArray == Token.PHRASE) { when(token.getLiteral()).thenReturn("phrase" + phraseNumber); phraseNumber++; } - when(token.toString()).thenReturn("" + tokenArray[i]); + when(token.toString()).thenReturn("" + aTokenArray); tokenList.add(token); } return tokenList;
