You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@olingo.apache.org by ra...@apache.org on 2020/09/24 07:10:30 UTC
[olingo-odata2] branch master updated: [OLINGO-1482]Fix buildUri
when matrix parameter does not value value
This is an automated email from the ASF dual-hosted git repository.
ramyav pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/olingo-odata2.git
The following commit(s) were added to refs/heads/master by this push:
new dc35f3e [OLINGO-1482]Fix buildUri when matrix parameter does not value value
dc35f3e is described below
commit dc35f3e31d5160c1dfb14777ac6e3ea416c8cd4c
Author: ramya vasanth <ra...@sap.com>
AuthorDate: Thu Sep 24 12:40:11 2020 +0530
[OLINGO-1482]Fix buildUri when matrix parameter does not value value
---
.../apache/olingo/odata2/core/servlet/RestUtil.java | 7 ++++---
.../olingo/odata2/core/servlet/RestUtilTest.java | 18 ++++++++++++++++++
2 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
index ad76658..8931faa 100644
--- a/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
+++ b/odata2-lib/odata-core/src/main/java/org/apache/olingo/odata2/core/servlet/RestUtil.java
@@ -239,11 +239,12 @@ public class RestUtil {
if (!"".equals(ps.getPath()) && ps.getPath().length() > 0) {
stringBuilder.append("/").append(ps.getPath());
}
- for (final String key : ps.getMatrixParameters().keySet()) {
- List<String> matrixParameters = ps.getMatrixParameters().get(key);
+ Map<String, List<String>> matrixParams = ps.getMatrixParameters();
+ for (final String key : matrixParams.keySet()) {
+ List<String> matrixParameters = matrixParams.get(key);
String matrixParameterString = ";" + key + "=";
for (String matrixParam : matrixParameters) {
- matrixParameterString += Decoder.decode(matrixParam) + ",";
+ matrixParameterString += (matrixParam.length() > 0) ? (Decoder.decode(matrixParam) + ",") : "";
}
stringBuilder.append(matrixParameterString.substring(0, matrixParameterString.length() - 1));
}
diff --git a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/RestUtilTest.java b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/RestUtilTest.java
index 1086c46..b23c6e6 100644
--- a/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/RestUtilTest.java
+++ b/odata2-lib/odata-core/src/test/java/org/apache/olingo/odata2/core/servlet/RestUtilTest.java
@@ -19,11 +19,17 @@
package org.apache.olingo.odata2.core.servlet;
import junit.framework.Assert;
+
+import org.apache.olingo.odata2.api.exception.ODataException;
+import org.apache.olingo.odata2.api.uri.PathInfo;
import org.junit.Test;
+import org.mockito.Mockito;
import java.util.List;
import java.util.Map;
+import javax.servlet.http.HttpServletRequest;
+
public class RestUtilTest {
@Test
@@ -81,4 +87,16 @@ public class RestUtilTest {
Assert.assertEquals("image/webp", result.get(3));
Assert.assertEquals("*/*", result.get(4));
}
+
+ @Test
+ public void testBuildODataPathInfo() throws ODataException {
+ HttpServletRequest req = Mockito.mock(HttpServletRequest.class);
+ Mockito.when(req.getRequestURI()).thenReturn("http://localhost:80/odata/"
+ + "catalogSrv/odata.svc;v=1;mo/BookCollection?$top=10");
+ Mockito.when(req.getServletPath()).thenReturn("/odata");
+ Mockito.when(req.getContextPath()).thenReturn("");
+ PathInfo pathInfo = RestUtil.buildODataPathInfo(req, 2);
+ Assert.assertEquals(1, pathInfo.getODataSegments().size());
+ Assert.assertEquals(2, pathInfo.getPrecedingSegments().size());
+ }
}
\ No newline at end of file