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;