Repository: olingo-odata4 Updated Branches: refs/heads/master 2e24ffd1d -> 6afb7fff4
[OLINGO-966] Fix filter parser guid detection Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/6afb7fff Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/6afb7fff Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/6afb7fff Branch: refs/heads/master Commit: 6afb7fff4ba84fca7773dc067f0e8e3a66d44dcb Parents: 2e24ffd Author: Christian Amend <[email protected]> Authored: Wed Jun 29 14:53:09 2016 +0200 Committer: Christian Amend <[email protected]> Committed: Wed Jun 29 14:57:31 2016 +0200 ---------------------------------------------------------------------- .../server/core/uri/parser/ParserHelper.java | 2 +- .../server/core/uri/parser/ParserTest.java | 32 ++++++++++++++++++++ 2 files changed, 33 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6afb7fff/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ParserHelper.java ---------------------------------------------------------------------- diff --git a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ParserHelper.java b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ParserHelper.java index 6ff8f2f..498ba18 100644 --- a/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ParserHelper.java +++ b/lib/server-core/src/main/java/org/apache/olingo/server/core/uri/parser/ParserHelper.java @@ -125,9 +125,9 @@ public class ParserHelper { // The order of the next seven expressions is important in order to avoid // finding partly parsed tokens (counter-intuitive as it may be, even a GUID may start with digits ...). + TokenKind.GuidValue, TokenKind.DoubleValue, TokenKind.DecimalValue, - TokenKind.GuidValue, TokenKind.DateTimeOffsetValue, TokenKind.DateValue, TokenKind.TimeOfDayValue, http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/6afb7fff/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/parser/ParserTest.java ---------------------------------------------------------------------- diff --git a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/parser/ParserTest.java b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/parser/ParserTest.java index f89a863..1eaa7ff 100644 --- a/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/parser/ParserTest.java +++ b/lib/server-test/src/test/java/org/apache/olingo/server/core/uri/parser/ParserTest.java @@ -68,6 +68,38 @@ public class ParserTest { .goPath() .at(0).isEntitySet(entitySetName) .at(0).isKeyPredicate(0, keyPropertyName, "f89dee73-af9f-4cd4-b330-db93c25ff3c7"); + + new TestUriValidator().setEdm(mockedEdm) + .run("ESGuid(889e3e73-af9f-4cd4-b330-db93c25ff3c7)") + .goPath() + .at(0).isEntitySet(entitySetName) + .at(0).isKeyPredicate(0, keyPropertyName, "889e3e73-af9f-4cd4-b330-db93c25ff3c7"); + } + + @Test + public void keyPropertyGuidStartsWithNumber() throws Exception { + final String entitySetName = "ESGuid"; + final String keyPropertyName = "a"; + EdmProperty keyProperty = Mockito.mock(EdmProperty.class); + Mockito.when(keyProperty.getType()) + .thenReturn(OData.newInstance().createPrimitiveTypeInstance(EdmPrimitiveTypeKind.Guid)); + EdmKeyPropertyRef keyPropertyRef = Mockito.mock(EdmKeyPropertyRef.class); + Mockito.when(keyPropertyRef.getName()).thenReturn(keyPropertyName); + Mockito.when(keyPropertyRef.getProperty()).thenReturn(keyProperty); + EdmEntityType entityType = Mockito.mock(EdmEntityType.class); + Mockito.when(entityType.getKeyPredicateNames()).thenReturn(Collections.singletonList(keyPropertyName)); + Mockito.when(entityType.getKeyPropertyRefs()).thenReturn(Collections.singletonList(keyPropertyRef)); + Mockito.when(entityType.getPropertyNames()).thenReturn(Collections.singletonList(keyPropertyName)); + Mockito.when(entityType.getProperty(keyPropertyName)).thenReturn(keyProperty); + EdmEntitySet entitySet = Mockito.mock(EdmEntitySet.class); + Mockito.when(entitySet.getName()).thenReturn(entitySetName); + Mockito.when(entitySet.getEntityType()).thenReturn(entityType); + EdmEntityContainer container = Mockito.mock(EdmEntityContainer.class); + Mockito.when(container.getEntitySet(entitySetName)).thenReturn(entitySet); + Edm mockedEdm = Mockito.mock(Edm.class); + Mockito.when(mockedEdm.getEntityContainer()).thenReturn(container); + new TestUriValidator().setEdm(mockedEdm) + .run("ESGuid", "$filter=a eq 889e3e73-af9f-4cd4-b330-db93c25ff3c7"); } @Test
