You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ch...@apache.org on 2015/02/20 14:34:13 UTC

[2/4] olingo-odata4 git commit: [OLINGO-577] Fix: Invalid encoding of space characters

[OLINGO-577] Fix: Invalid encoding of space characters

Signed-off-by: Christian Amend <ch...@apache.org>


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

Branch: refs/heads/master
Commit: cfb72decd1ff79d5f9b8b968ee03dd1ad22f33e4
Parents: 42dc396
Author: Christian Holzer <c....@sap.com>
Authored: Thu Feb 19 15:39:20 2015 +0100
Committer: Christian Amend <ch...@apache.org>
Committed: Fri Feb 20 14:22:46 2015 +0100

----------------------------------------------------------------------
 .../client/core/uri/AbstractURIBuilder.java     | 21 ++++++++++++++++++--
 .../client/core/uri/v4/URIBuilderTest.java      |  3 +--
 2 files changed, 20 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cfb72dec/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java
index 07153ad..f80e394 100644
--- a/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java
+++ b/lib/client-core/src/main/java/org/apache/olingo/client/core/uri/AbstractURIBuilder.java
@@ -29,7 +29,6 @@ import java.util.Map;
 
 import org.apache.commons.lang3.StringUtils;
 import org.apache.http.NameValuePair;
-import org.apache.http.client.utils.URLEncodedUtils;
 import org.apache.http.message.BasicNameValuePair;
 import org.apache.olingo.client.api.Configuration;
 import org.apache.olingo.client.api.uri.CommonURIBuilder;
@@ -38,6 +37,7 @@ import org.apache.olingo.client.api.uri.SegmentType;
 import org.apache.olingo.client.api.uri.URIFilter;
 import org.apache.olingo.commons.api.Constants;
 import org.apache.olingo.commons.api.edm.constants.ODataServiceVersion;
+import org.apache.olingo.commons.core.Encoder;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -311,7 +311,8 @@ public abstract class AbstractURIBuilder<UB extends CommonURIBuilder<?>> impleme
         // it will try to call URLEncodedUtils.format(Iterable<>,Charset) method,
         // which works in desktop java application, however, throws NoSuchMethodError in android OS,
         // so here manually construct the URL by its overload URLEncodedUtils.format(List<>,String).
-        String queryStr = URLEncodedUtils.format(list1, "UTF-8");
+        //String queryStr = URLEncodedUtils.format(list1, "UTF-8");
+        final String queryStr = encodeQueryParameter(list1);
         sb.append(queryStr);
       }
 
@@ -321,6 +322,22 @@ public abstract class AbstractURIBuilder<UB extends CommonURIBuilder<?>> impleme
     }
   }
 
+  private String encodeQueryParameter(List<NameValuePair> list) {
+    final StringBuilder builder = new StringBuilder();
+
+    for (NameValuePair pair : list) {
+      if (builder.length() > 0) {
+        builder.append("&");
+      }
+
+      builder.append(Encoder.encode(pair.getName()));
+      builder.append("=");
+      builder.append(Encoder.encode(pair.getValue()));
+    }
+
+    return builder.toString();
+  }
+
   @Override
   public String toString() {
     return build().toASCIIString();

http://git-wip-us.apache.org/repos/asf/olingo-odata4/blob/cfb72dec/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
----------------------------------------------------------------------
diff --git a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
index 6686963..731bf1d 100644
--- a/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
+++ b/lib/client-core/src/test/java/org/apache/olingo/client/core/uri/v4/URIBuilderTest.java
@@ -156,7 +156,6 @@ public class URIBuilderTest extends AbstractTest {
     final URIBuilder uriBuilder = getClient().newURIBuilder(SERVICE_ROOT).
             appendEntitySetSegment("Products").search("blue OR green");
 
-    assertEquals(new org.apache.http.client.utils.URIBuilder(
-            SERVICE_ROOT + "/Products").addParameter("$search", "blue OR green").build(), uriBuilder.build());
+    assertEquals(new URI("http://host/service/Products?%24search=blue%20OR%20green"), uriBuilder.build());
   }
 }