Repository: olingo-odata4
Updated Branches:
  refs/heads/master 004515aae -> 0cf76f51c


OLINGO-1107: Changing client encoding of URL to use %20 instead of using + for 
space. This is done by switching the Olingo supplied Encoder and Decoder rather 
than the JDK supplied URLEncoder and URLDecoder


Project: http://git-wip-us.apache.org/repos/asf/olingo-odata4/repo
Commit: http://git-wip-us.apache.org/repos/asf/olingo-odata4/commit/0cf76f51
Tree: http://git-wip-us.apache.org/repos/asf/olingo-odata4/tree/0cf76f51
Diff: http://git-wip-us.apache.org/repos/asf/olingo-odata4/diff/0cf76f51

Branch: refs/heads/master
Commit: 0cf76f51c50a0f9eda0ceb044e37efcf09752872
Parents: 004515a
Author: Ramesh Reddy <[email protected]>
Authored: Mon Apr 17 17:22:50 2017 -0500
Committer: Ramesh Reddy <[email protected]>
Committed: Mon Apr 17 17:22:50 2017 -0500

----------------------------------------------------------------------
 .../rest/ResolvingReferencesInterceptor.java    | 23 ++++++---------
 .../olingo/client/core/uri/URIBuilderImpl.java  | 12 ++------
 .../apache/olingo/client/core/uri/URIUtils.java | 30 +++++++-------------
 .../client/core/uri/FilterFactoryTest.java      |  3 +-
 .../olingo/client/core/uri/URIEscapeTest.java   |  6 ++--
 5 files changed, 28 insertions(+), 46 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0cf76f51/fit/src/main/java/org/apache/olingo/fit/rest/ResolvingReferencesInterceptor.java
----------------------------------------------------------------------
diff --git 
a/fit/src/main/java/org/apache/olingo/fit/rest/ResolvingReferencesInterceptor.java
 
b/fit/src/main/java/org/apache/olingo/fit/rest/ResolvingReferencesInterceptor.java
index d9ecd0e..b1d45c4 100644
--- 
a/fit/src/main/java/org/apache/olingo/fit/rest/ResolvingReferencesInterceptor.java
+++ 
b/fit/src/main/java/org/apache/olingo/fit/rest/ResolvingReferencesInterceptor.java
@@ -18,15 +18,14 @@
  */
 package org.apache.olingo.fit.rest;
 
-import java.io.UnsupportedEncodingException;
 import java.net.URI;
-import java.net.URLDecoder;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.message.Message;
 import org.apache.cxf.phase.AbstractPhaseInterceptor;
 import org.apache.cxf.phase.Phase;
+import org.apache.olingo.commons.core.Decoder;
 
 public class ResolvingReferencesInterceptor extends 
AbstractPhaseInterceptor<Message> {
 
@@ -39,21 +38,17 @@ public class ResolvingReferencesInterceptor extends 
AbstractPhaseInterceptor<Mes
     final String path = (String) message.get(Message.PATH_INFO);
     final String query = (String) message.get(Message.QUERY_STRING);
 
-    try {
-      if (path.endsWith("$entity") && StringUtils.isNotBlank(query)
-          && URLDecoder.decode(query, "UTF-8").contains("$id=")) {
+    if (path.endsWith("$entity") && StringUtils.isNotBlank(query)
+        && Decoder.decode(query).contains("$id=")) {
 
-        final String id = URLDecoder.decode(query, "UTF-8");
-        final String newURL = id.substring(id.indexOf("$id=") + 4);
+      final String id = Decoder.decode(query);
+      final String newURL = id.substring(id.indexOf("$id=") + 4);
 
-        final URI uri = URI.create(newURL);
+      final URI uri = URI.create(newURL);
 
-        message.put(Message.REQUEST_URL, uri.toASCIIString());
-        message.put(Message.REQUEST_URI, uri.getPath());
-        message.put(Message.PATH_INFO, uri.getPath());
-      }
-    } catch (UnsupportedEncodingException ignore) {
-      // ignore
+      message.put(Message.REQUEST_URL, uri.toASCIIString());
+      message.put(Message.REQUEST_URI, uri.getPath());
+      message.put(Message.PATH_INFO, uri.getPath());
     }
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0cf76f51/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIBuilderImpl.java
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIBuilderImpl.java
 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIBuilderImpl.java
index dad21ad..a328360 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIBuilderImpl.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIBuilderImpl.java
@@ -18,9 +18,7 @@
  */
 package org.apache.olingo.client.core.uri;
 
-import java.io.UnsupportedEncodingException;
 import java.net.URI;
-import java.net.URLDecoder;
 import java.util.ArrayList;
 import java.util.LinkedHashMap;
 import java.util.LinkedList;
@@ -37,8 +35,8 @@ import org.apache.olingo.client.api.uri.SegmentType;
 import org.apache.olingo.client.api.uri.URIBuilder;
 import org.apache.olingo.client.api.uri.URIFilter;
 import org.apache.olingo.client.api.uri.URISearch;
-import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.edm.EdmEnumType;
+import org.apache.olingo.commons.core.Decoder;
 import org.apache.olingo.commons.core.Encoder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -230,12 +228,8 @@ public class URIBuilderImpl implements URIBuilder {
   @Override
   public URIBuilder filter(final URIFilter filter) {
     URIBuilder result;
-    try {
-      // decode in order to support @ in parameter aliases
-      result = filter(URLDecoder.decode(filter.build(), Constants.UTF8));
-    } catch (UnsupportedEncodingException e) {
-      result = filter(filter.build());
-    }
+    // decode in order to support @ in parameter aliases
+    result = filter(Decoder.decode(filter.build()));
     return result;
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0cf76f51/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
index ecde086..9a02c18 100644
--- 
a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
+++ 
b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/URIUtils.java
@@ -24,7 +24,6 @@ import java.io.UnsupportedEncodingException;
 import java.math.BigDecimal;
 import java.net.URI;
 import java.net.URISyntaxException;
-import java.net.URLEncoder;
 import java.sql.Timestamp;
 import java.util.Calendar;
 import java.util.Collection;
@@ -36,6 +35,7 @@ import java.util.regex.Pattern;
 import javax.xml.datatype.Duration;
 
 import org.apache.commons.codec.binary.Hex;
+import org.apache.olingo.commons.core.Encoder;
 import org.apache.commons.io.IOUtils;
 import org.apache.commons.lang3.BooleanUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -144,25 +144,23 @@ public final class URIUtils {
   private static String timestamp(final Timestamp timestamp)
       throws UnsupportedEncodingException, EdmPrimitiveTypeException {
 
-    return URLEncoder.encode(EdmDateTimeOffset.getInstance().
-        valueToString(timestamp, null, null, Constants.DEFAULT_PRECISION, 
Constants.DEFAULT_SCALE, null),
-        Constants.UTF8);
+    return Encoder.encode(EdmDateTimeOffset.getInstance().
+        valueToString(timestamp, null, null, Constants.DEFAULT_PRECISION, 
Constants.DEFAULT_SCALE, null));
   }
 
   private static String calendar(final Calendar calendar)
       throws UnsupportedEncodingException, EdmPrimitiveTypeException {
 
-    return URLEncoder.encode(EdmDateTimeOffset.getInstance().
-        valueToString(calendar, null, null, Constants.DEFAULT_PRECISION, 
Constants.DEFAULT_SCALE, null),
-        Constants.UTF8);
+    return Encoder.encode(EdmDateTimeOffset.getInstance().
+        valueToString(calendar, null, null, Constants.DEFAULT_PRECISION, 
Constants.DEFAULT_SCALE, null));
   }
 
   private static String duration(final Duration duration)
       throws UnsupportedEncodingException, EdmPrimitiveTypeException {
 
-    return 
EdmDuration.getInstance().toUriLiteral(URLEncoder.encode(EdmDuration.getInstance().
+    return 
EdmDuration.getInstance().toUriLiteral(Encoder.encode(EdmDuration.getInstance().
         valueToString(duration, null, null,
-            Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null), 
Constants.UTF8));
+            Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)));
   }
 
   private static String quoteString(final String string, final boolean 
singleQuoteEscape)
@@ -250,12 +248,11 @@ public final class URIUtils {
                                                         ? 
EdmInt64.getInstance().valueToString(obj, null, null,
                                                             
Constants.DEFAULT_PRECISION, Constants.DEFAULT_SCALE, null)
                                                         : (obj instanceof 
Geospatial)
-                                                            ? 
URLEncoder.encode(EdmPrimitiveTypeFactory.getInstance(
+                                                            ? 
Encoder.encode(EdmPrimitiveTypeFactory.getInstance(
                                                                 ((Geospatial) 
obj).getEdmPrimitiveTypeKind()).
                                                                 
valueToString(obj, null, null,
                                                                     
Constants.DEFAULT_PRECISION,
-                                                                    
Constants.DEFAULT_SCALE, null),
-                                                                Constants.UTF8)
+                                                                    
Constants.DEFAULT_SCALE, null))
                                                             : (obj instanceof 
String)
                                                                 ? 
quoteString((String) obj, singleQuoteEscape)
                                                                 : 
obj.toString();
@@ -355,12 +352,7 @@ public final class URIUtils {
       inlineParams.deleteCharAt(inlineParams.length() - 1);
     }
 
-    try {
-      return URI.create(baseURI + "(" + 
URLEncoder.encode(inlineParams.toString(), Constants.UTF8) + ")"
-          + (StringUtils.isNotBlank(rawQuery) ? "?" + rawQuery : 
StringUtils.EMPTY));
-    } catch (UnsupportedEncodingException e) {
-      throw new IllegalArgumentException("While adding GET parameters", e);
-    }
-
+    return URI.create(baseURI + "(" + Encoder.encode(inlineParams.toString()) 
+ ")"
+        + (StringUtils.isNotBlank(rawQuery) ? "?" + rawQuery : 
StringUtils.EMPTY));
   }
 }

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0cf76f51/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/FilterFactoryTest.java
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/FilterFactoryTest.java
 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/FilterFactoryTest.java
index 3b2c294..22ad452 100644
--- 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/FilterFactoryTest.java
+++ 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/FilterFactoryTest.java
@@ -33,6 +33,7 @@ import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.edm.EdmEnumType;
 import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.edm.provider.CsdlEnumType;
+import org.apache.olingo.commons.core.Encoder;
 import org.apache.olingo.commons.core.edm.EdmEnumTypeImpl;
 import org.junit.Test;
 
@@ -88,7 +89,7 @@ public class FilterFactoryTest extends AbstractTest {
     calendar.set(2011, 2, 8, 14, 21, 12);
 
     final URIFilter filter = getFilterFactory().ge("OrderDate", calendar);
-    assertEquals("(OrderDate ge " + 
URLEncoder.encode("2011-03-08T14:21:12-08:00", Constants.UTF8) + ")",
+    assertEquals("(OrderDate ge " + 
Encoder.encode("2011-03-08T14:21:12-08:00") + ")",
         filter.build());
   }
 

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/0cf76f51/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java
----------------------------------------------------------------------
diff --git 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java
 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java
index aad1dc7..f25c82f 100644
--- 
a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java
+++ 
b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/URIEscapeTest.java
@@ -21,7 +21,6 @@ package org.apache.olingo.client.core.uri;
 import static org.junit.Assert.assertEquals;
 
 import java.io.UnsupportedEncodingException;
-import java.net.URLEncoder;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collections;
@@ -33,6 +32,7 @@ import org.apache.olingo.commons.api.edm.FullQualifiedName;
 import org.apache.olingo.commons.api.edm.geo.Geospatial;
 import org.apache.olingo.commons.api.edm.geo.Point;
 import org.apache.olingo.commons.api.edm.provider.CsdlEnumType;
+import org.apache.olingo.commons.core.Encoder;
 import org.apache.olingo.commons.core.edm.EdmEnumTypeImpl;
 import org.junit.Test;
 
@@ -62,7 +62,7 @@ public class URIEscapeTest {
     calendar.clear();
     calendar.set(2014, 6, 11, 12, 30, 04);
 
-    assertEquals(URLEncoder.encode("2014-07-11T12:30:04+01:00", 
Constants.UTF8),
+    assertEquals(Encoder.encode("2014-07-11T12:30:04+01:00"),
         URIUtils.escape( calendar));
   }
 
@@ -72,7 +72,7 @@ public class URIEscapeTest {
     point.setX(142.1);
     point.setY(64.1);
 
-    assertEquals(URLEncoder.encode("geography'SRID=4326;Point(142.1 64.1)'", 
Constants.UTF8),
+    assertEquals(Encoder.encode("geography'SRID=4326;Point(142.1 64.1)'"),
         URIUtils.escape( point));
   }
 

Reply via email to