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 2014/10/30 12:50:59 UTC
git commit: [OLINGO-468] better error message for wrong keys in
server URI parser
Repository: olingo-odata4
Updated Branches:
refs/heads/master b5e40fdfa -> 357e8b654
[OLINGO-468] better error message for wrong keys in server URI parser
Change-Id: I8add3bbb0fc53670e85a86f59f1e7151214fd88c
Signed-off-by: Michael Bolz <mi...@sap.com>
Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/357e8b65
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/357e8b65
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/357e8b65
Branch: refs/heads/master
Commit: 357e8b654b992470bad64cbc85e670e39bae59e8
Parents: b5e40fd
Author: Klaus Straubinger <kl...@sap.com>
Authored: Thu Oct 30 10:49:54 2014 +0100
Committer: Michael Bolz <mi...@sap.com>
Committed: Thu Oct 30 12:50:39 2014 +0100
----------------------------------------------------------------------
.../server/core/uri/parser/UriParseTreeVisitor.java | 16 +++++++++-------
.../server/core/uri/antlr/TestFullResourcePath.java | 14 +++++++++++---
2 files changed, 20 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/357e8b65/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
----------------------------------------------------------------------
diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
index 4b6745a..0a582dc 100644
--- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
+++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/UriParseTreeVisitor.java
@@ -282,11 +282,9 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
public UriResourceTypedImpl readResourcePathSegment(final PathSegmentContext ctx) {
- boolean checkFirst = false;
- if (context.contextUriInfo.getLastResourcePart() == null
- || context.contextUriInfo.getLastResourcePart() instanceof UriResourceRootImpl) {
- checkFirst = true;
- }
+ final boolean checkFirst =
+ context.contextUriInfo.getLastResourcePart() == null
+ || context.contextUriInfo.getLastResourcePart() instanceof UriResourceRootImpl;
String odi = ctx.vODI.getText();
@@ -1375,6 +1373,10 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
UriInfoImpl uriInfoImplpath = new UriInfoImpl().setKind(UriInfoKind.resource);
+ if (context.contextTypes.isEmpty()) {
+ throw wrap(new UriParserSemanticException("Expression '" + ctx.getText() + "' is not allowed as key value.",
+ UriParserSemanticException.MessageKeys.INVALID_KEY_VALUE, ctx.getText()));
+ }
TypeInformation lastTypeInfo = context.contextTypes.peek();
if (ctx.vIt != null || ctx.vIts != null) {
@@ -1444,8 +1446,8 @@ public class UriParseTreeVisitor extends UriParserBaseVisitor<Object> {
ExpressionImpl expression = null;
try {
expression = (ExpressionImpl) ctx.vVO.accept(this);
- } catch (Exception ex) {
- throw wrap(new UriParserSemanticException("Invalid key value: " + valueText,
+ } catch (final RuntimeException e) {
+ throw wrap(new UriParserSemanticException("Invalid key value: " + valueText, e,
UriParserSemanticException.MessageKeys.INVALID_KEY_VALUE, valueText));
}
http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/357e8b65/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
----------------------------------------------------------------------
diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
index d850edd..0243452 100644
--- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
+++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/antlr/TestFullResourcePath.java
@@ -417,6 +417,11 @@ public class TestFullResourcePath {
.isKeyPredicate(1, "PropertyString", "'3'")
.n()
.isPrimitiveProperty("PropertyString", PropertyProvider.nameString, false);
+
+ testUri.runEx("ESKeyNav/olingo.odata.test1.BFCESKeyNavRTETKeyNavParam(WrongParameter='1')")
+ .isExSemantic(UriParserSemanticException.MessageKeys.UNKNOWN_PART);
+ testUri.runEx("ESKeyNav/olingo.odata.test1.BFCESKeyNavRTETKeyNavParam(ParameterString=wrong)")
+ .isExSemantic(UriParserSemanticException.MessageKeys.INVALID_KEY_VALUE);
}
@Test
@@ -1084,6 +1089,11 @@ public class TestFullResourcePath {
.isKeyPredicate(1, "KeyAlias1", "2")
.isKeyPredicate(2, "KeyAlias2", "'3'")
.isKeyPredicate(3, "KeyAlias3", "'4'");
+
+ testUri.runEx("ESTwoPrim(wrong)")
+ .isExSemantic(UriParserSemanticException.MessageKeys.INVALID_KEY_VALUE);
+ testUri.runEx("ESTwoPrim(PropertyInt16=wrong)")
+ .isExSemantic(UriParserSemanticException.MessageKeys.INVALID_KEY_VALUE);
}
@Test
@@ -3386,8 +3396,7 @@ public class TestFullResourcePath {
.isFunction("UFCRTETTwoKeyNavParamCTTwoPrim")
.isParameterAlias(0, "ParameterCTTwoPrim", "@ParamAlias");
- testFilter.runOnETTwoKeyNav("PropertyComp"
- + "/olingo.odata.test1.BFCCTPrimCompRTESTwoKeyNavParam"
+ testFilter.runOnETTwoKeyNav("PropertyComp/olingo.odata.test1.BFCCTPrimCompRTESTwoKeyNavParam"
+ "(ParameterString=PropertyComp/PropertyComp/PropertyString)(PropertyInt16=1,PropertyString='2')"
+ "/PropertyString eq 'SomeString'")
.is("<<PropertyComp/BFCCTPrimCompRTESTwoKeyNavParam/PropertyString> eq <'SomeString'>>")
@@ -3538,7 +3547,6 @@ public class TestFullResourcePath {
.isComplexProperty("PropertyComp", ComplexTypeProvider.nameCTAllPrim, false)
.n()
.isPrimitiveProperty("PropertyString", PropertyProvider.nameString, false);
-
}
@Test