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 2015/11/13 17:51:42 UTC
olingo-odata4 git commit: [OLINGO-568] Minor code clean up
Repository: olingo-odata4
Updated Branches:
refs/heads/OLINGO-568_SearchParser_Draft 8457c0f60 -> 7d4944d10
[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/OLINGO-568_SearchParser_Draft
Commit: 7d4944d10e3da762ea5d089b911aafcd3f6d73c5
Parents: 8457c0f
Author: mibo <mi...@apache.org>
Authored: Fri Nov 13 17:51:24 2015 +0100
Committer: mibo <mi...@apache.org>
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;