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/17 16:04:33 UTC

[23/23] olingo-odata4 git commit: [OLINGO-568] Added exception messages and some tests

[OLINGO-568] Added exception messages and some tests


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/ae1b2754
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/ae1b2754
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/ae1b2754

Branch: refs/heads/master
Commit: ae1b2754b765a2519e7d9c1fa30e1a5af5de3862
Parents: 1a59a58
Author: Michael Bolz <mi...@sap.com>
Authored: Tue Nov 17 15:58:28 2015 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Tue Nov 17 15:58:28 2015 +0100

----------------------------------------------------------------------
 .../core/uri/parser/search/SearchParser.java    |  4 +++-
 .../parser/search/SearchParserException.java    |  6 ++++-
 .../server-core-exceptions-i18n.properties      |  9 ++++++++
 .../search/SearchParserAndTokenizerTest.java    | 24 +++++++++-----------
 4 files changed, 28 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ae1b2754/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 a9fe332..2723024 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
@@ -39,7 +39,9 @@ public class SearchParser {
     try {
       searchExpression = parse(tokenizer.tokenize(searchQuery));
     } catch (SearchTokenizerException e) {
-      return null;
+      String message = e.getMessage();
+      throw new SearchParserException("Tokenizer exception with message: " + message,
+              SearchParserException.MessageKeys.TOKENIZER_EXCEPTION, message);
     }
     final SearchOptionImpl searchOption = new SearchOptionImpl();
     searchOption.setSearchExpression(searchExpression);

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ae1b2754/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParserException.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParserException.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParserException.java
index 78a12be..9e612a0 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParserException.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/search/SearchParserException.java
@@ -24,7 +24,11 @@ public class SearchParserException extends UriParserSyntaxException {
 
   private static final long serialVersionUID = 5781553037561337795L;
 
-  public static enum MessageKeys implements MessageKey {
+  public enum MessageKeys implements MessageKey {
+    /** parameter: message */
+    TOKENIZER_EXCEPTION,
+    /** parameter: tokenCharacter */
+    INVALID_TOKEN_CHARACTER_FOUND,
     /** parameter: operatorkind */
     INVALID_BINARY_OPERATOR_POSITION, 
     /** parameter: operatorkind */

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ae1b2754/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties b/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
index 28c6dd7..bfb9440 100644
--- a/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
+++ b/lib/server-core/src/main/resources/server-core-exceptions-i18n.properties
@@ -37,6 +37,15 @@ UriParserSyntaxException.SYSTEM_QUERY_OPTION_LEVELS_NOT_ALLOWED_HERE=The system
 UriParserSyntaxException.SYNTAX=The URI is malformed.
 UriParserSyntaxException.DUPLICATED_ALIAS=Duplicated alias. An alias '%1$s' was already specified!.
 
+SearchParserException.TOKENIZER_EXCEPTION=Exception during tokenizer creation with message '%1$s'.
+SearchParserException.INVALID_TOKEN_CHARACTER_FOUND=Invalid token character with value '%1$s' found.
+SearchParserException.INVALID_BINARY_OPERATOR_POSITION=Invalid binary operator position for kind '%1$s' found.
+SearchParserException.INVALID_NOT_OPERAND=Invalid not operand for kind '%1$s' found.
+SearchParserException.EXPECTED_DIFFERENT_TOKEN=Expected token '%1$s' but found '%2$s'.
+SearchParserException.NO_EXPRESSION_FOUND=No expression found.
+SearchParserException.INVALID_OPERATOR_AFTER_AND=Invalid operator after AND found of kind '%1$s'.
+
+
 UriParserSemanticException.FUNCTION_NOT_FOUND=The function import '%1$s' has no function with parameters '%2$s'.
 UriParserSemanticException.RESOURCE_PART_ONLY_FOR_TYPED_PARTS='%1$s' is only allowed for typed parts.
 UriParserSemanticException.RESOURCE_PART_MUST_BE_PRECEDED_BY_STRUCTURAL_TYPE=The resource part '%1$s' must be preceded by a structural type.

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/ae1b2754/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserAndTokenizerTest.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserAndTokenizerTest.java b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserAndTokenizerTest.java
index 23cac8e..fa419a9 100644
--- a/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserAndTokenizerTest.java
+++ b/lib/server-core/src/test/java/org/apache/olingo/server/core/uri/parser/search/SearchParserAndTokenizerTest.java
@@ -23,17 +23,19 @@ import static org.apache.olingo.server.api.uri.queryoption.search.SearchBinaryOp
 
 import java.lang.reflect.Field;
 
+import org.apache.olingo.server.api.ODataLibraryException;
 import org.apache.olingo.server.api.uri.queryoption.SearchOption;
 import org.apache.olingo.server.api.uri.queryoption.search.SearchExpression;
 import org.apache.olingo.server.api.uri.queryoption.search.SearchUnary;
 import org.junit.Assert;
-import org.junit.Ignore;
 import org.junit.Test;
 
 public class SearchParserAndTokenizerTest {
 
   @Test
   public void basicParsing() throws Exception {
+    SearchExpressionValidator.init("\"99\"")
+            .validate(with("99"));
     SearchExpressionValidator.init("a")
         .validate(with("a"));
     SearchExpressionValidator.init("a AND b")
@@ -70,16 +72,10 @@ public class SearchParserAndTokenizerTest {
         .validate("{{'a' OR 'b'} AND {NOT 'c'}}");
   }
 
-  @Ignore
   @Test
-  public void sebuilder() {
-    System.out.println(with("c", or("a", and("b"))).toString());
-    System.out.println(with("a", and("b", and("c"))).toString());
-    System.out.println(with("a").toString());
-    System.out.println(with(not("a")).toString());
-    System.out.println(with("a", and("b")).toString());
-    System.out.println(with("a", or("b")).toString());
-    System.out.println(with("a", and(not("b"))).toString());
+  public void invalidSearchQuery() throws Exception {
+    SearchExpressionValidator.init("99").validate(SearchParserException.class,
+            SearchParserException.MessageKeys.TOKENIZER_EXCEPTION);
   }
 
   private static SearchExpression with(String term) {
@@ -162,11 +158,13 @@ public class SearchParserAndTokenizerTest {
       return this;
     }
 
-    private void validate(Class<? extends Exception> exception) throws SearchTokenizerException {
+    private void validate(Class<? extends ODataLibraryException> exception, ODataLibraryException.MessageKey key)
+            throws SearchTokenizerException {
       try {
-        new SearchTokenizer().tokenize(searchQuery);
-      } catch (Exception e) {
+        validate(searchQuery);
+      } catch (ODataLibraryException e) {
         Assert.assertEquals(exception, e.getClass());
+        Assert.assertEquals(key, e.getMessageKey());
         return;
       }
       Assert.fail("Expected exception " + exception.getClass().getSimpleName() + " was not thrown.");