This is an automated email from the ASF dual-hosted git repository. jamesbognar pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/juneau.git
The following commit(s) were added to refs/heads/master by this push:
new 09c4693f2b SonarQube bug fixes
09c4693f2b is described below
commit 09c4693f2bd13c7f4d9e0fd3a96f2e9438a75cd7
Author: James Bognar <[email protected]>
AuthorDate: Tue Feb 3 08:12:42 2026 -0500
SonarQube bug fixes
---
.../org/apache/juneau/rest/util/RestUtils.java | 107 ++++++++++-----------
1 file changed, 51 insertions(+), 56 deletions(-)
diff --git
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
index 0a690f7653..506aa8f5f1 100644
---
a/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
+++
b/juneau-rest/juneau-rest-server/src/main/java/org/apache/juneau/rest/util/RestUtils.java
@@ -177,7 +177,7 @@ public class RestUtils {
*/
public static Map<String,List<String>> parseQuery(String qs) {
if (isEmpty(qs)) return Collections.emptyMap();
- return parseQuery((Object)qs);
+ return safe(()->parseQuery(new ParserPipe(qs)));
}
/**
@@ -209,73 +209,68 @@ public class RestUtils {
*/
public static Map<String,List<String>> parseQuery(Reader qs) {
if (n(qs)) return Collections.emptyMap();
- return parseQuery((Object)qs);
+ return safe(()-> parseQuery(new ParserPipe(qs)));
}
- private static Map<String,List<String>> parseQuery(Object qs) {
+ private static Map<String,List<String>> parseQuery(ParserPipe p) throws
IOException {
var m = CollectionUtils.<String,List<String>>map();
- try (var p = new ParserPipe(qs)) {
+ // S1: Looking for attrName start.
+ // S2: Found attrName start, looking for = or & or end.
+ // S3: Found =, looking for valStart or &.
+ // S4: Found valStart, looking for & or end.
- // S1: Looking for attrName start.
- // S2: Found attrName start, looking for = or & or end.
- // S3: Found =, looking for valStart or &.
- // S4: Found valStart, looking for & or end.
+ try (var r = new UonReader(p, true)) {
+ var c = r.peekSkipWs();
+ if (c == '?')
+ r.read();
- try (var r = new UonReader(p, true)) {
- var c = r.peekSkipWs();
- if (c == '?')
- r.read();
-
- var state = S1;
- var currAttr = (String)null;
- while (c != -1) {
- c = r.read();
- if (state == S1) {
- if (c != -1) {
- r.unread();
- r.mark();
- state = S2;
- }
- } else if (state == S2) {
- if (c == -1) {
- add(m, r.getMarked(),
null);
- } else if (c == '\u0001') {
- add(m, r.getMarked(0,
-1), null);
- state = S1;
- } else if (c == '\u0002') {
- currAttr =
r.getMarked(0, -1);
- state = S3;
- }
- } else if (state == S3) {
- if (c == -1 || c == '\u0001') {
- add(m, currAttr, "");
- state = S1;
- } else {
- if (c == '\u0002')
- r.replace('=');
- r.unread();
- r.mark();
- state = S4;
- }
- } else if (state == S4) {
- if (c == -1) {
- add(m, currAttr,
r.getMarked());
- } else if (c == '\u0001') {
- add(m, currAttr,
r.getMarked(0, -1));
- state = S1;
- } else if (c == '\u0002') {
+ var state = S1;
+ var currAttr = (String)null;
+ while (c != -1) {
+ c = r.read();
+ if (state == S1) {
+ if (c != -1) {
+ r.unread();
+ r.mark();
+ state = S2;
+ }
+ } else if (state == S2) {
+ if (c == -1) {
+ add(m, r.getMarked(), null);
+ } else if (c == '\u0001') {
+ add(m, r.getMarked(0, -1),
null);
+ state = S1;
+ } else if (c == '\u0002') {
+ currAttr = r.getMarked(0, -1);
+ state = S3;
+ }
+ } else if (state == S3) {
+ if (c == -1 || c == '\u0001') {
+ add(m, currAttr, "");
+ state = S1;
+ } else {
+ if (c == '\u0002')
r.replace('=');
- }
+ r.unread();
+ r.mark();
+ state = S4;
+ }
+ } else if (state == S4) {
+ if (c == -1) {
+ add(m, currAttr, r.getMarked());
+ } else if (c == '\u0001') {
+ add(m, currAttr, r.getMarked(0,
-1));
+ state = S1;
+ } else if (c == '\u0002') {
+ r.replace('=');
}
}
}
-
- return m;
- } catch (IOException e) {
- throw toRex(e); // Should never happen.
}
+
+ return m;
}
/**
