Repository: olingo-odata2 Updated Branches: refs/heads/master e04ea6a00 -> 96c28146e
[OLINGO-689] Fixed name validation pattern for EdmNamed Project: http://git-wip-us.apache.org/repos/asf/olingo-odata2/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata2/commit/96c28146 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata2/tree/96c28146 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata2/diff/96c28146 Branch: refs/heads/master Commit: 96c28146e9b02c7fbd670813e7b6c43e15fe5050 Parents: e04ea6a Author: Michael Bolz <[email protected]> Authored: Wed Jun 10 09:48:16 2015 +0200 Committer: Michael Bolz <[email protected]> Committed: Wed Jun 10 10:13:02 2015 +0200 ---------------------------------------------------------------------- .../core/edm/provider/EdmNamedImplProv.java | 14 +++--- .../EdmEntityContainerImplProvTest.java | 8 +-- .../core/edm/provider/EdmNamedImplProvTest.java | 52 ++++++++++++++++++++ 3 files changed, 62 insertions(+), 12 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/96c28146/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProv.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProv.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProv.java index 81ae907..f8b231c 100644 --- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProv.java +++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProv.java @@ -26,14 +26,12 @@ import org.apache.olingo.odata2.api.edm.EdmNamed; public abstract class EdmNamedImplProv implements EdmNamed { - private static final Pattern PATTERN_VALID_NAME = Pattern - .compile("^[:A-Z_a-z\\u00C0\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0370-\\u037d" - + "\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f\\u2c00-\\u2fef\\u3001-\\ud7ff" - + "\\uf900-\\ufdcf\\ufdf0-\\ufffd\\x10000-\\xEFFFF]" - + "[:A-Z_a-z\\u00C0\\u00D6\\u00D8-\\u00F6" - + "\\u00F8-\\u02ff\\u0370-\\u037d\\u037f-\\u1fff\\u200c\\u200d\\u2070-\\u218f" - + "\\u2c00-\\u2fef\\u3001-\\udfff\\uf900-\\ufdcf\\ufdf0-\\ufffd\\-\\.0-9" - + "\\u00b7\\u0300-\\u036f\\u203f-\\u2040]*\\Z"); + private static final Pattern PATTERN_VALID_NAME = Pattern.compile( + "\\A[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0370-\\u037d\\u200c\\u200d\\u2070-\\u218f" + + "\\u037f-\\u1fff\\u2c00-\\u2fef\\u3001-\\ud7ff\\uf900-\\ufdcf\\ufdf0-\\ufffd]" + + "[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02ff\\u0370-\\u037d\\u200c\\u200d\\u2070-\\u218f" + + "\\u037f-\\u1fff\\u2c00-\\u2fef\\u3001-\\udfff\\uf900-\\ufdcf\\ufdf0-\\ufffd\\-\\.0-9\\u00b7\\u0300-\\u036f]*" + + "\\Z"); protected EdmImplProv edm; private String name; http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/96c28146/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java index 1661308..ca58152 100644 --- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java +++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmEntityContainerImplProvTest.java @@ -102,12 +102,12 @@ public class EdmEntityContainerImplProvTest extends BaseTest { entitySets.add(entitySetBar); when(edmProvider.getEntitySet(containerName, "bar")).thenReturn(entitySetBar); - AssociationSet associationSet = new AssociationSet().setName("4711"); + AssociationSet associationSet = new AssociationSet().setName("Name4711"); FullQualifiedName assocFQName = new FullQualifiedName("AssocNs", "AssocName"); associationSets.add(associationSet); when(edmProvider.getAssociationSet(containerName, assocFQName, "foo", "fromRole")).thenReturn(associationSet); - AssociationSet parentAssociationSet = new AssociationSet().setName("42"); + AssociationSet parentAssociationSet = new AssociationSet().setName("Name42"); FullQualifiedName parentAssocFQName = new FullQualifiedName("AssocNs", "AssocNameParent"); when(edmProvider.getAssociationSet(containerParentName, parentAssocFQName, "fooFromParent", "fromParentRole")).thenReturn(parentAssociationSet); @@ -214,8 +214,8 @@ public class EdmEntityContainerImplProvTest extends BaseTest { for (EdmAssociationSet assoSet : associationSets) { String name = assoSet.getName(); - boolean expectedName = "4711".equals(name) - || "42".equals(name); + boolean expectedName = "Name4711".equals(name) + || "Name42".equals(name); assertTrue("Found not expected name: " + name, expectedName); } } http://git-wip-us.apache.org/repos/asf/olingo-odata2/blob/96c28146/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProvTest.java ---------------------------------------------------------------------- diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProvTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProvTest.java index 0691e97..9a6fe72 100644 --- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProvTest.java +++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/edm/provider/EdmNamedImplProvTest.java @@ -18,6 +18,7 @@ ******************************************************************************/ package org.apache.olingo.odata2.core.edm.provider; +import static org.junit.Assert.assertEquals; import static org.mockito.Mockito.mock; import org.apache.olingo.odata2.api.edm.EdmException; @@ -38,4 +39,55 @@ public class EdmNamedImplProvTest extends BaseTest { SimpleProperty propertySimple = new SimpleProperty().setName("Prop;ertyName").setType(EdmSimpleTypeKind.String); new EdmSimplePropertyImplProv(edmImplProv, propertySimple); } + + @Test(expected = EdmException.class) + public void testPropertyIllegalStartWithNumber() throws Exception { + + EdmProvider edmProvider = mock(EdmProvider.class); + EdmImplProv edmImplProv = new EdmImplProv(edmProvider); + + SimpleProperty propertySimple = new SimpleProperty().setName("1_PropertyName").setType(EdmSimpleTypeKind.String); + new EdmSimplePropertyImplProv(edmImplProv, propertySimple); + } + + @Test + public void testPropertyWithNumber() throws Exception { + + EdmProvider edmProvider = mock(EdmProvider.class); + EdmImplProv edmImplProv = new EdmImplProv(edmProvider); + + SimpleProperty propertySimple = new SimpleProperty().setName("Prop_1_Name").setType(EdmSimpleTypeKind + .String); + new EdmSimplePropertyImplProv(edmImplProv, propertySimple); + assertEquals("Prop_1_Name", new EdmSimplePropertyImplProv(edmImplProv, propertySimple).getName()); + } + + @Test + public void testPropertyUmlaut() throws Exception { + EdmProvider edmProvider = mock(EdmProvider.class); + EdmImplProv edmImplProv = new EdmImplProv(edmProvider); + + SimpleProperty propertySimple = new SimpleProperty().setName("ÃropertyName").setType(EdmSimpleTypeKind.String); + assertEquals("ÃropertyName", new EdmSimplePropertyImplProv(edmImplProv, propertySimple).getName()); + } + + @Test + public void testPropertyUnicode() throws Exception { + EdmProvider edmProvider = mock(EdmProvider.class); + EdmImplProv edmImplProv = new EdmImplProv(edmProvider); + + SimpleProperty propertySimple = new SimpleProperty().setName("\u00C0roperty\u00C1ame\u00C0\u00D5\u00D6") + .setType(EdmSimpleTypeKind.String); + assertEquals("ÃropertyÃameÃÃÃ", new EdmSimplePropertyImplProv(edmImplProv, propertySimple).getName()); + } + + @Test + public void testPropertyUnicodeTwo() throws Exception { + EdmProvider edmProvider = mock(EdmProvider.class); + EdmImplProv edmImplProv = new EdmImplProv(edmProvider); + + SimpleProperty propertySimple = new SimpleProperty().setName("СодеÑжание") + .setType(EdmSimpleTypeKind.String); + assertEquals("СодеÑжание", new EdmSimplePropertyImplProv(edmImplProv, propertySimple).getName()); + } }
