You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ff...@apache.org on 2020/08/25 18:06:25 UTC

[cxf] branch master updated: [CXF-8329] avoid NPE with empty query parameters

This is an automated email from the ASF dual-hosted git repository.

ffang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new ae805e6  [CXF-8329] avoid NPE with empty query parameters
     new b572eb9  Merge pull request #689 from fizzet/CXF-8329
ae805e6 is described below

commit ae805e6f6b78d9a4e44fdc42750edc2997b0b39c
Author: Jens Kleine-Herzbruch <je...@dzbank.de>
AuthorDate: Tue Aug 25 11:32:03 2020 +0200

    [CXF-8329] avoid NPE with empty query parameters
---
 .../main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java    |  6 ++++--
 .../java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java     | 13 +++++++++++++
 2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
index 51a6033..df314d2 100644
--- a/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
+++ b/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/utils/JAXRSUtils.java
@@ -1325,8 +1325,10 @@ public final class JAXRSUtils {
                     value = index < part.length() ? part.substring(index + 1) : "";
                 }
                 if (valueIsCollection) {
-                    for (String s : value.split(",")) {
-                        addStructuredPartToMap(queries, sep, name, s, decode, decodePlus);
+                    if (value != null) {
+                        for (String s : value.split(",")) {
+                            addStructuredPartToMap(queries, sep, name, s, decode, decodePlus);
+                        }
                     }
                 } else {
                     addStructuredPartToMap(queries, sep, name, value, decode, decodePlus);
diff --git a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java
index f8a3f46..fe07689 100644
--- a/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java
+++ b/rt/frontend/jaxrs/src/test/java/org/apache/cxf/jaxrs/impl/UriInfoImplTest.java
@@ -301,6 +301,19 @@ public class UriInfoImplTest {
         assertEquals("Wrong query value", qps.get("n").get(1), "3");
         assertEquals("Wrong query value", qps.get("b").get(0), "2");
         assertEquals("Wrong query value", qps.get("a.b").get(0), "ab");
+
+        Message m = mockMessage("http://localhost:8080/baz", "/bar",
+                "N=0&n=1%202&n=3&&b=2&a%2Eb=ab");
+        m.put("parse.query.value.as.collection", Boolean.TRUE);
+        u = new UriInfoImpl(m, null);
+
+        qps = u.getQueryParameters();
+        assertEquals("Number of queries is wrong", 4, qps.size());
+        assertEquals("Wrong query value", qps.get("N").get(0), "0");
+        assertEquals("Wrong query value", qps.get("n").get(0), "1 2");
+        assertEquals("Wrong query value", qps.get("n").get(1), "3");
+        assertEquals("Wrong query value", qps.get("b").get(0), "2");
+        assertEquals("Wrong query value", qps.get("a.b").get(0), "ab");
     }
 
     @Test