Skip to content

Commit 90a0b9b

Browse files
authored
Fix more sonarcloud warnings. (#2724)
1 parent 5287974 commit 90a0b9b

File tree

2 files changed

+25
-13
lines changed

2 files changed

+25
-13
lines changed

core/sdk-core/src/main/java/software/amazon/awssdk/core/internal/async/ByteArrayAsyncRequestBody.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import org.reactivestreams.Subscription;
2222
import software.amazon.awssdk.annotations.SdkInternalApi;
2323
import software.amazon.awssdk.core.async.AsyncRequestBody;
24+
import software.amazon.awssdk.utils.Logger;
2425

2526
/**
2627
* An implementation of {@link AsyncRequestBody} for providing data from memory. This is created using static
@@ -32,6 +33,7 @@
3233
*/
3334
@SdkInternalApi
3435
public final class ByteArrayAsyncRequestBody implements AsyncRequestBody {
36+
private static final Logger log = Logger.loggerFor(ByteArrayAsyncRequestBody.class);
3537

3638
private final byte[] bytes;
3739

@@ -90,11 +92,7 @@ public void cancel() {
9092
}
9193
);
9294
} catch (Throwable ex) {
93-
new IllegalStateException(s + " violated the Reactive Streams rule 2.13 " +
94-
"by throwing an exception from onSubscribe.", ex)
95-
// When onSubscribe fails this way, we don't know what state the
96-
// s is thus calling onError may cause more crashes.
97-
.printStackTrace();
95+
log.error(() -> s + " violated the Reactive Streams rule 2.13 by throwing an exception from onSubscribe.", ex);
9896
}
9997
}
10098
}

utils/src/main/java/software/amazon/awssdk/utils/http/SdkHttpUtils.java

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import java.net.URI;
2525
import java.net.URLDecoder;
2626
import java.net.URLEncoder;
27+
import java.util.ArrayList;
2728
import java.util.Collection;
2829
import java.util.Collections;
2930
import java.util.LinkedHashMap;
@@ -33,7 +34,6 @@
3334
import java.util.Optional;
3435
import java.util.Set;
3536
import java.util.function.UnaryOperator;
36-
import java.util.regex.Pattern;
3737
import java.util.stream.Collectors;
3838
import java.util.stream.Stream;
3939
import software.amazon.awssdk.annotations.SdkProtectedApi;
@@ -56,9 +56,6 @@ public final class SdkHttpUtils {
5656
private static final String[] ENCODED_CHARACTERS_WITHOUT_SLASHES = new String[] {"+", "*", "%7E"};
5757
private static final String[] ENCODED_CHARACTERS_WITHOUT_SLASHES_REPLACEMENTS = new String[] {"%20", "%2A", "~"};
5858

59-
private static final String QUERY_PARAM_DELIMITER_REGEX = "\\s*&\\s*";
60-
private static final Pattern QUERY_PARAM_DELIMITER_PATTERN = Pattern.compile(QUERY_PARAM_DELIMITER_REGEX);
61-
6259
// List of headers that may appear only once in a request; i.e. is not a list of values.
6360
// Taken from https://github.com/apache/httpcomponents-client/blob/81c1bc4dc3ca5a3134c5c60e8beff08be2fd8792/httpclient5-cache/src/test/java/org/apache/hc/client5/http/impl/cache/HttpTestUtils.java#L69-L85 with modifications:
6461
// removed: accept-ranges, if-match, if-none-match, vary since it looks like they're defined as lists
@@ -335,10 +332,27 @@ public static boolean isSingleHeader(String h) {
335332
* Extracts query parameters from the given URI
336333
*/
337334
public static Map<String, List<String>> uriParams(URI uri) {
338-
return QUERY_PARAM_DELIMITER_PATTERN
339-
.splitAsStream(uri.getRawQuery().trim())
340-
.map(s -> s.contains("=") ? s.split("=", 2) : new String[] {s, null})
341-
.collect(groupingBy(a -> urlDecode(a[0]), mapping(a -> urlDecode(a[1]), toList())));
335+
return splitQueryString(uri.getRawQuery())
336+
.stream()
337+
.map(s -> s.split("="))
338+
.map(s -> s.length == 1 ? new String[] { s[0], null } : s)
339+
.collect(groupingBy(a -> urlDecode(a[0]), mapping(a -> urlDecode(a[1]), toList())));
340+
}
341+
342+
public static List<String> splitQueryString(String queryString) {
343+
List<String> results = new ArrayList<>();
344+
StringBuilder result = new StringBuilder();
345+
for (int i = 0; i < queryString.length(); i++) {
346+
char character = queryString.charAt(i);
347+
if (character != '&') {
348+
result.append(character);
349+
} else {
350+
results.add(StringUtils.trimToEmpty(result.toString()));
351+
result.setLength(0);
352+
}
353+
}
354+
results.add(StringUtils.trimToEmpty(result.toString()));
355+
return results;
342356
}
343357

344358
}

0 commit comments

Comments
 (0)