Repository: olingo-odata4 Updated Branches: refs/heads/master 16d238f96 -> b5eae4f6c
OLINGO-854: The conversion of string to URI and from URI to string need to be correcty encoded and decoded, this fix addresses that Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/b5eae4f6 Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/b5eae4f6 Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/b5eae4f6 Branch: refs/heads/master Commit: b5eae4f6c25d7735b39d5e445db9e45f4d99c5d3 Parents: 16d238f Author: Ramesh Reddy <[email protected]> Authored: Thu Jan 21 16:17:18 2016 -0600 Committer: Ramesh Reddy <[email protected]> Committed: Thu Jan 21 16:17:18 2016 -0600 ---------------------------------------------------------------------- .../olingo/commons/core/edm/primitivetype/EdmString.java | 6 ++++-- .../olingo/commons/core/edm/primitivetype/EdmStringTest.java | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b5eae4f6/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmString.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmString.java b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmString.java index 8e9a42a..a63010b 100644 --- a/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmString.java +++ b/lib/commons-core/src/main/java/org/apache/olingo/commons/core/edm/primitivetype/EdmString.java @@ -21,6 +21,8 @@ package org.apache.olingo.commons.core.edm.primitivetype; import java.util.regex.Pattern; import org.apache.olingo.commons.api.edm.EdmPrimitiveTypeException; +import org.apache.olingo.commons.core.Decoder; +import org.apache.olingo.commons.core.Encoder; /** * Implementation of the EDM primitive type String. @@ -95,11 +97,11 @@ public final class EdmString extends SingletonPrimitiveType { uriLiteral.append(c); } uriLiteral.append(uriSuffix); - return uriLiteral.toString(); + return Encoder.encode(uriLiteral.toString()); } @Override public String fromUriLiteral(final String literal) throws EdmPrimitiveTypeException { - return literal == null ? null : super.fromUriLiteral(literal).replace("''", "'"); + return literal == null ? null : Decoder.decode(super.fromUriLiteral(literal).replace("''", "'")); } } http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/b5eae4f6/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmStringTest.java ---------------------------------------------------------------------- diff --git a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmStringTest.java b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmStringTest.java index b5f2a89..1035e6b 100644 --- a/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmStringTest.java +++ b/lib/commons-core/src/test/java/org/apache/olingo/commons/core/edm/primitivetype/EdmStringTest.java @@ -33,11 +33,13 @@ public class EdmStringTest extends PrimitiveTypeBaseTest { assertEquals("'StringValue'", instance.toUriLiteral("StringValue")); assertEquals("'String''Value'", instance.toUriLiteral("String'Value")); assertEquals("'String''''''Value'", instance.toUriLiteral("String'''Value")); + assertEquals("'ab%20cd%20'", instance.toUriLiteral("ab cd ")); } @Test public void fromUriLiteral() throws Exception { assertEquals("String''Value", instance.fromUriLiteral("'String''''Value'")); + assertEquals("ab cd ", instance.fromUriLiteral("'ab%20cd%20'")); expectErrorInFromUriLiteral(instance, ""); expectErrorInFromUriLiteral(instance, "'");
