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.");