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());
}
}