From fae73d4d458edf277dd73b405ca51442fa28bdfa Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 20:40:11 +0900 Subject: [PATCH 01/11] refactor: Simplify Util code in Spring-core directory - enhancement by adding early return - delete the unnecessary 'else' --- .../util/FastByteArrayOutputStream.java | 37 ++++++++----------- .../util/LinkedCaseInsensitiveMap.java | 5 +-- .../springframework/util/MethodInvoker.java | 14 +++---- .../org/springframework/util/MimeType.java | 5 +-- .../org/springframework/util/NumberUtils.java | 6 +-- .../org/springframework/util/ObjectUtils.java | 18 +++------ .../util/PatternMatchUtils.java | 12 +++--- .../util/PlaceholderParser.java | 4 +- 8 files changed, 40 insertions(+), 61 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java index 7e7f1430c7f0..f2ec93316ee6 100644 --- a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java +++ b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java @@ -98,13 +98,11 @@ public void write(int datum) throws IOException { if (this.closed) { throw new IOException("Stream closed"); } - else { - if (this.buffers.peekLast() == null || this.buffers.getLast().length == this.index) { - addBuffer(1); - } - // store the byte - this.buffers.getLast()[this.index++] = (byte) datum; + if (this.buffers.peekLast() == null || this.buffers.getLast().length == this.index) { + addBuffer(1); } + // store the byte + this.buffers.getLast()[this.index++] = (byte) datum; } @Override @@ -384,22 +382,20 @@ public int read() { // This stream doesn't have any data in it... return -1; } + if (this.nextIndexInCurrentBuffer < this.currentBufferLength) { + this.totalBytesRead++; + return this.currentBuffer[this.nextIndexInCurrentBuffer++] & 0xFF; + } else { - if (this.nextIndexInCurrentBuffer < this.currentBufferLength) { - this.totalBytesRead++; - return this.currentBuffer[this.nextIndexInCurrentBuffer++] & 0xFF; + if (this.buffersIterator.hasNext()) { + this.currentBuffer = this.buffersIterator.next(); + updateCurrentBufferLength(); + this.nextIndexInCurrentBuffer = 0; } else { - if (this.buffersIterator.hasNext()) { - this.currentBuffer = this.buffersIterator.next(); - updateCurrentBufferLength(); - this.nextIndexInCurrentBuffer = 0; - } - else { - this.currentBuffer = null; - } - return read(); + this.currentBuffer = null; } + return read(); } } @@ -504,13 +500,10 @@ public void updateMessageDigest(MessageDigest messageDigest) { */ @Override public void updateMessageDigest(MessageDigest messageDigest, int len) { - if (this.currentBuffer == null) { + if (this.currentBuffer == null || len == 0) { // This stream doesn't have any data in it... return; } - else if (len == 0) { - return; - } else if (len < 0) { throw new IllegalArgumentException("len must be 0 or greater: " + len); } diff --git a/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java b/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java index 3a1f9f102946..b521f640503b 100644 --- a/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java +++ b/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java @@ -119,11 +119,10 @@ public boolean containsKey(Object key) { } @Override protected boolean removeEldestEntry(Map.Entry eldest) { - boolean doRemove = LinkedCaseInsensitiveMap.this.removeEldestEntry(eldest); - if (doRemove) { + if (LinkedCaseInsensitiveMap.this.removeEldestEntry(eldest)) { removeCaseInsensitiveKey(eldest.getKey()); } - return doRemove; + return false; } }; this.caseInsensitiveKeys = CollectionUtils.newHashMap(expectedSize); diff --git a/spring-core/src/main/java/org/springframework/util/MethodInvoker.java b/spring-core/src/main/java/org/springframework/util/MethodInvoker.java index 0725b5f7466f..e2f4a9cfa970 100644 --- a/spring-core/src/main/java/org/springframework/util/MethodInvoker.java +++ b/spring-core/src/main/java/org/springframework/util/MethodInvoker.java @@ -226,14 +226,12 @@ protected Method findMatchingMethod() { Method matchingMethod = null; for (Method candidate : candidates) { - if (candidate.getName().equals(targetMethod)) { - if (candidate.getParameterCount() == argCount) { - Class[] paramTypes = candidate.getParameterTypes(); - int typeDiffWeight = getTypeDifferenceWeight(paramTypes, arguments); - if (typeDiffWeight < minTypeDiffWeight) { - minTypeDiffWeight = typeDiffWeight; - matchingMethod = candidate; - } + if (candidate.getName().equals(targetMethod) && candidate.getParameterCount() == argCount) { + Class[] paramTypes = candidate.getParameterTypes(); + int typeDiffWeight = getTypeDifferenceWeight(paramTypes, arguments); + if (typeDiffWeight < minTypeDiffWeight) { + minTypeDiffWeight = typeDiffWeight; + matchingMethod = candidate; } } } diff --git a/spring-core/src/main/java/org/springframework/util/MimeType.java b/spring-core/src/main/java/org/springframework/util/MimeType.java index 1217c3bbc3df..a1c5f885aa2c 100644 --- a/spring-core/src/main/java/org/springframework/util/MimeType.java +++ b/spring-core/src/main/java/org/springframework/util/MimeType.java @@ -243,9 +243,8 @@ private boolean isQuotedString(String s) { if (s.length() < 2) { return false; } - else { - return ((s.startsWith("\"") && s.endsWith("\"")) || (s.startsWith("'") && s.endsWith("'"))); - } + return ((s.startsWith("\"") && s.endsWith("\"")) || (s.startsWith("'") && s.endsWith("'"))); + } protected String unquote(String s) { diff --git a/spring-core/src/main/java/org/springframework/util/NumberUtils.java b/spring-core/src/main/java/org/springframework/util/NumberUtils.java index 505088913a72..9b37793de624 100644 --- a/spring-core/src/main/java/org/springframework/util/NumberUtils.java +++ b/spring-core/src/main/java/org/springframework/util/NumberUtils.java @@ -110,10 +110,8 @@ else if (BigInteger.class == targetClass) { // do not lose precision - use BigDecimal's own conversion return (T) bigDecimal.toBigInteger(); } - else { - // original value is not a Big* number - use standard long conversion - return (T) BigInteger.valueOf(number.longValue()); - } + // original value is not a Big* number - use standard long conversion + return (T) BigInteger.valueOf(number.longValue()); } else if (Float.class == targetClass) { return (T) Float.valueOf(number.floatValue()); diff --git a/spring-core/src/main/java/org/springframework/util/ObjectUtils.java b/spring-core/src/main/java/org/springframework/util/ObjectUtils.java index a4b5822351a6..6e4c35924a95 100644 --- a/spring-core/src/main/java/org/springframework/util/ObjectUtils.java +++ b/spring-core/src/main/java/org/springframework/util/ObjectUtils.java @@ -702,8 +702,7 @@ public static String nullSafeToString(@Nullable byte[] array) { if (array == null) { return NULL_STRING; } - int length = array.length; - if (length == 0) { + if (array.length == 0) { return EMPTY_ARRAY; } StringJoiner stringJoiner = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END); @@ -726,8 +725,7 @@ public static String nullSafeToString(@Nullable char[] array) { if (array == null) { return NULL_STRING; } - int length = array.length; - if (length == 0) { + if (array.length == 0) { return EMPTY_ARRAY; } StringJoiner stringJoiner = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END); @@ -750,8 +748,7 @@ public static String nullSafeToString(@Nullable double[] array) { if (array == null) { return NULL_STRING; } - int length = array.length; - if (length == 0) { + if (array.length == 0) { return EMPTY_ARRAY; } StringJoiner stringJoiner = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END); @@ -774,8 +771,7 @@ public static String nullSafeToString(@Nullable float[] array) { if (array == null) { return NULL_STRING; } - int length = array.length; - if (length == 0) { + if (array.length == 0) { return EMPTY_ARRAY; } StringJoiner stringJoiner = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END); @@ -798,8 +794,7 @@ public static String nullSafeToString(@Nullable int[] array) { if (array == null) { return NULL_STRING; } - int length = array.length; - if (length == 0) { + if (array.length == 0) { return EMPTY_ARRAY; } StringJoiner stringJoiner = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END); @@ -846,8 +841,7 @@ public static String nullSafeToString(@Nullable short[] array) { if (array == null) { return NULL_STRING; } - int length = array.length; - if (length == 0) { + if (array.length == 0) { return EMPTY_ARRAY; } StringJoiner stringJoiner = new StringJoiner(ARRAY_ELEMENT_SEPARATOR, ARRAY_START, ARRAY_END); diff --git a/spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java b/spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java index 9f050351f0b6..5d340b60d7e2 100644 --- a/spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java +++ b/spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java @@ -84,14 +84,14 @@ public static boolean simpleMatch(@Nullable String pattern, @Nullable String str * @return whether the String matches any of the given patterns */ public static boolean simpleMatch(@Nullable String[] patterns, @Nullable String str) { - if (patterns != null) { - for (String pattern : patterns) { - if (simpleMatch(pattern, str)) { - return true; - } + if (patterns == null) { + return false; + } + for (String pattern : patterns) { + if (simpleMatch(pattern, str)) { + return true; } } - return false; } } diff --git a/spring-core/src/main/java/org/springframework/util/PlaceholderParser.java b/spring-core/src/main/java/org/springframework/util/PlaceholderParser.java index be9068271fd9..777e60814816 100644 --- a/spring-core/src/main/java/org/springframework/util/PlaceholderParser.java +++ b/spring-core/src/main/java/org/springframework/util/PlaceholderParser.java @@ -104,9 +104,7 @@ final class PlaceholderParser { if (simplePrefixForSuffix != null && this.prefix.endsWith(simplePrefixForSuffix)) { this.simplePrefix = simplePrefixForSuffix; } - else { - this.simplePrefix = this.prefix; - } + this.simplePrefix = this.prefix; this.separator = separator; this.ignoreUnresolvablePlaceholders = ignoreUnresolvablePlaceholders; this.escape = escape; From 0f039770ad64d7f8d644b36484d752cd69de91fe Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 20:46:03 +0900 Subject: [PATCH 02/11] fix : because of syntax, fix this code --- .../org/springframework/util/PatternMatchUtils.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java b/spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java index 5d340b60d7e2..9f050351f0b6 100644 --- a/spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java +++ b/spring-core/src/main/java/org/springframework/util/PatternMatchUtils.java @@ -84,14 +84,14 @@ public static boolean simpleMatch(@Nullable String pattern, @Nullable String str * @return whether the String matches any of the given patterns */ public static boolean simpleMatch(@Nullable String[] patterns, @Nullable String str) { - if (patterns == null) { - return false; - } - for (String pattern : patterns) { - if (simpleMatch(pattern, str)) { - return true; + if (patterns != null) { + for (String pattern : patterns) { + if (simpleMatch(pattern, str)) { + return true; + } } } + return false; } } From 1281ea408e710b71db5a72f3e7cbf0cc3a03f935 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 20:48:11 +0900 Subject: [PATCH 03/11] fix --- .../main/java/org/springframework/util/PlaceholderParser.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/util/PlaceholderParser.java b/spring-core/src/main/java/org/springframework/util/PlaceholderParser.java index 777e60814816..be9068271fd9 100644 --- a/spring-core/src/main/java/org/springframework/util/PlaceholderParser.java +++ b/spring-core/src/main/java/org/springframework/util/PlaceholderParser.java @@ -104,7 +104,9 @@ final class PlaceholderParser { if (simplePrefixForSuffix != null && this.prefix.endsWith(simplePrefixForSuffix)) { this.simplePrefix = simplePrefixForSuffix; } - this.simplePrefix = this.prefix; + else { + this.simplePrefix = this.prefix; + } this.separator = separator; this.ignoreUnresolvablePlaceholders = ignoreUnresolvablePlaceholders; this.escape = escape; From 3ea3d3591b5ef4c7615fbb877df510a60003722d Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 21:07:53 +0900 Subject: [PATCH 04/11] remote white-space --- .../src/main/java/org/springframework/util/MimeType.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/MimeType.java b/spring-core/src/main/java/org/springframework/util/MimeType.java index a1c5f885aa2c..97292742bb94 100644 --- a/spring-core/src/main/java/org/springframework/util/MimeType.java +++ b/spring-core/src/main/java/org/springframework/util/MimeType.java @@ -244,7 +244,6 @@ private boolean isQuotedString(String s) { return false; } return ((s.startsWith("\"") && s.endsWith("\"")) || (s.startsWith("'") && s.endsWith("'"))); - } protected String unquote(String s) { @@ -582,7 +581,6 @@ public int compareTo(MimeType other) { } } } - return 0; } From 4627dd972c1e44efd3615290ab261f1921c6857f Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 21:17:56 +0900 Subject: [PATCH 05/11] revert partial code --- .../org/springframework/util/FastByteArrayOutputStream.java | 4 +++- .../org/springframework/util/LinkedCaseInsensitiveMap.java | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java index f2ec93316ee6..2c122fecc3d7 100644 --- a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java +++ b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java @@ -500,9 +500,11 @@ public void updateMessageDigest(MessageDigest messageDigest) { */ @Override public void updateMessageDigest(MessageDigest messageDigest, int len) { - if (this.currentBuffer == null || len == 0) { + if (this.currentBuffer == null) { // This stream doesn't have any data in it... return; + }else if(len == 0){ + return; } else if (len < 0) { throw new IllegalArgumentException("len must be 0 or greater: " + len); diff --git a/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java b/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java index b521f640503b..3a1f9f102946 100644 --- a/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java +++ b/spring-core/src/main/java/org/springframework/util/LinkedCaseInsensitiveMap.java @@ -119,10 +119,11 @@ public boolean containsKey(Object key) { } @Override protected boolean removeEldestEntry(Map.Entry eldest) { - if (LinkedCaseInsensitiveMap.this.removeEldestEntry(eldest)) { + boolean doRemove = LinkedCaseInsensitiveMap.this.removeEldestEntry(eldest); + if (doRemove) { removeCaseInsensitiveKey(eldest.getKey()); } - return false; + return doRemove; } }; this.caseInsensitiveKeys = CollectionUtils.newHashMap(expectedSize); From 33ff646668d65b837e6bf581a532bc2a3d67c617 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 21:27:52 +0900 Subject: [PATCH 06/11] revert --- .../org/springframework/util/FastByteArrayOutputStream.java | 3 +-- .../src/main/java/org/springframework/util/MimeType.java | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java index 2c122fecc3d7..4167d5103d14 100644 --- a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java +++ b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java @@ -505,8 +505,7 @@ public void updateMessageDigest(MessageDigest messageDigest, int len) { return; }else if(len == 0){ return; - } - else if (len < 0) { + }else if (len < 0) { throw new IllegalArgumentException("len must be 0 or greater: " + len); } else { diff --git a/spring-core/src/main/java/org/springframework/util/MimeType.java b/spring-core/src/main/java/org/springframework/util/MimeType.java index 97292742bb94..664d867f633d 100644 --- a/spring-core/src/main/java/org/springframework/util/MimeType.java +++ b/spring-core/src/main/java/org/springframework/util/MimeType.java @@ -583,7 +583,7 @@ public int compareTo(MimeType other) { } return 0; } - + /** * Indicates whether this {@code MimeType} is more specific than the given * type. From aa889fc231f7cefcd830b9085cf5ee0429d2d62a Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 21:31:12 +0900 Subject: [PATCH 07/11] revert --- .../src/main/java/org/springframework/util/MimeType.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/util/MimeType.java b/spring-core/src/main/java/org/springframework/util/MimeType.java index 664d867f633d..e1c2918ef1bc 100644 --- a/spring-core/src/main/java/org/springframework/util/MimeType.java +++ b/spring-core/src/main/java/org/springframework/util/MimeType.java @@ -581,9 +581,10 @@ public int compareTo(MimeType other) { } } } + return 0; } - + /** * Indicates whether this {@code MimeType} is more specific than the given * type. From 033463b5e5741b67809503bcd91c5949dee460be Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 21:50:27 +0900 Subject: [PATCH 08/11] fix --- .../org/springframework/util/FastByteArrayOutputStream.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java index 4167d5103d14..c7ab778c18d5 100644 --- a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java +++ b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java @@ -503,9 +503,11 @@ public void updateMessageDigest(MessageDigest messageDigest, int len) { if (this.currentBuffer == null) { // This stream doesn't have any data in it... return; - }else if(len == 0){ + } + else if(len == 0){ return; - }else if (len < 0) { + } + else if (len < 0) { throw new IllegalArgumentException("len must be 0 or greater: " + len); } else { From 540c8f3816a0e511d74b39b6079f898499ad086e Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 21:52:00 +0900 Subject: [PATCH 09/11] fix --- .../org/springframework/util/FastByteArrayOutputStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java index c7ab778c18d5..61d3654ef121 100644 --- a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java +++ b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java @@ -504,7 +504,7 @@ public void updateMessageDigest(MessageDigest messageDigest, int len) { // This stream doesn't have any data in it... return; } - else if(len == 0){ + else if (len < 0) { return; } else if (len < 0) { From a1124bccb03f07d558050872b41fe0804a47e995 Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 21:52:39 +0900 Subject: [PATCH 10/11] fix --- .../org/springframework/util/FastByteArrayOutputStream.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java index 61d3654ef121..713dff9fb425 100644 --- a/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java +++ b/spring-core/src/main/java/org/springframework/util/FastByteArrayOutputStream.java @@ -504,7 +504,7 @@ public void updateMessageDigest(MessageDigest messageDigest, int len) { // This stream doesn't have any data in it... return; } - else if (len < 0) { + else if (len == 0) { return; } else if (len < 0) { From 5195294f71080b32757f2782aec80ce95564c3ce Mon Sep 17 00:00:00 2001 From: KNU-K Date: Sun, 17 Nov 2024 21:54:41 +0900 Subject: [PATCH 11/11] revert --- .../src/main/java/org/springframework/util/MimeType.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spring-core/src/main/java/org/springframework/util/MimeType.java b/spring-core/src/main/java/org/springframework/util/MimeType.java index e1c2918ef1bc..d4b670718c7f 100644 --- a/spring-core/src/main/java/org/springframework/util/MimeType.java +++ b/spring-core/src/main/java/org/springframework/util/MimeType.java @@ -581,7 +581,7 @@ public int compareTo(MimeType other) { } } } - + return 0; }