This is an automated email from the ASF dual-hosted git repository.
markt pushed a commit to branch 8.5.x
in repository https://gitbox.apache.org/repos/asf/tomcat.git
The following commit(s) were added to refs/heads/8.5.x by this push:
new d95294f9bc Fix SpotBugs warning - align with 9.0.x
d95294f9bc is described below
commit d95294f9bc24cf304d30a19e4513732a4807c760
Author: Mark Thomas <[email protected]>
AuthorDate: Wed Dec 6 11:55:41 2023 +0000
Fix SpotBugs warning - align with 9.0.x
---
.../util/security/ConcurrentMessageDigest.java | 31 +++++++++++-----------
.../tomcat/util/security/LocalStrings.properties | 2 ++
.../util/security/LocalStrings_fr.properties | 2 ++
.../util/security/LocalStrings_ja.properties | 2 ++
.../util/security/LocalStrings_ko.properties | 2 ++
.../util/security/LocalStrings_zh_CN.properties | 2 ++
6 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/java/org/apache/tomcat/util/security/ConcurrentMessageDigest.java
b/java/org/apache/tomcat/util/security/ConcurrentMessageDigest.java
index 89ac51a424..831b5fbe5c 100644
--- a/java/org/apache/tomcat/util/security/ConcurrentMessageDigest.java
+++ b/java/org/apache/tomcat/util/security/ConcurrentMessageDigest.java
@@ -18,11 +18,12 @@ package org.apache.tomcat.util.security;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
-import java.util.Map;
import java.util.Queue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentLinkedQueue;
+import org.apache.tomcat.util.res.StringManager;
+
/**
* A thread safe wrapper around {@link MessageDigest} that does not make use
* of ThreadLocal and - broadly - only creates enough MessageDigest objects
@@ -30,10 +31,12 @@ import java.util.concurrent.ConcurrentLinkedQueue;
*/
public class ConcurrentMessageDigest {
+ private static final StringManager sm =
StringManager.getManager(ConcurrentMessageDigest.class);
+
private static final String MD5 = "MD5";
private static final String SHA1 = "SHA-1";
- private static final Map<String,Queue<MessageDigest>> queues =
+ private static final ConcurrentHashMap<String,Queue<MessageDigest>> queues
=
new ConcurrentHashMap<>();
@@ -47,7 +50,7 @@ public class ConcurrentMessageDigest {
init(MD5);
init(SHA1);
} catch (NoSuchAlgorithmException e) {
- throw new IllegalArgumentException(e);
+ throw new
IllegalArgumentException(sm.getString("concurrentMessageDigest.noDigest"), e);
}
}
@@ -64,11 +67,11 @@ public class ConcurrentMessageDigest {
}
- public static byte[] digest(String algorithm, int rounds, byte[]... input)
{
+ public static byte[] digest(String algorithm, int iterations, byte[]...
input) {
Queue<MessageDigest> queue = queues.get(algorithm);
if (queue == null) {
- throw new IllegalStateException("Must call init() first");
+ throw new
IllegalStateException(sm.getString("concurrentMessageDigest.noDigest"));
}
MessageDigest md = queue.poll();
@@ -78,7 +81,7 @@ public class ConcurrentMessageDigest {
} catch (NoSuchAlgorithmException e) {
// Ignore. Impossible if init() has been successfully called
// first.
- throw new IllegalStateException("Must call init() first");
+ throw new
IllegalStateException(sm.getString("concurrentMessageDigest.noDigest"), e);
}
}
@@ -89,8 +92,8 @@ public class ConcurrentMessageDigest {
byte[] result = md.digest();
// Subsequent rounds
- if (rounds > 1) {
- for (int i = 1; i < rounds; i++) {
+ if (iterations > 1) {
+ for (int i = 1; i < iterations; i++) {
md.update(result);
result = md.digest();
}
@@ -113,13 +116,11 @@ public class ConcurrentMessageDigest {
* JVM
*/
public static void init(String algorithm) throws NoSuchAlgorithmException {
- synchronized (queues) {
- if (!queues.containsKey(algorithm)) {
- MessageDigest md = MessageDigest.getInstance(algorithm);
- Queue<MessageDigest> queue = new ConcurrentLinkedQueue<>();
- queue.add(md);
- queues.put(algorithm, queue);
- }
+ if (!queues.containsKey(algorithm)) {
+ MessageDigest md = MessageDigest.getInstance(algorithm);
+ Queue<MessageDigest> queue = new ConcurrentLinkedQueue<>();
+ queue.add(md);
+ queues.putIfAbsent(algorithm, queue);
}
}
}
diff --git a/java/org/apache/tomcat/util/security/LocalStrings.properties
b/java/org/apache/tomcat/util/security/LocalStrings.properties
index 9d8090a6ff..39e92df46d 100644
--- a/java/org/apache/tomcat/util/security/LocalStrings.properties
+++ b/java/org/apache/tomcat/util/security/LocalStrings.properties
@@ -13,5 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+concurrentMessageDigest.noDigest=Digest algorithm unavailable
+
privilegedSetAccessControlContext.lookupFailed=Unable to obtain reference to
field Thread.inheritedAccessControlContext
privilegedSetAccessControlContext.setFailed=Unable to set field
Thread.inheritedAccessControlContext
diff --git a/java/org/apache/tomcat/util/security/LocalStrings_fr.properties
b/java/org/apache/tomcat/util/security/LocalStrings_fr.properties
index 517abf0418..79bf7f886d 100644
--- a/java/org/apache/tomcat/util/security/LocalStrings_fr.properties
+++ b/java/org/apache/tomcat/util/security/LocalStrings_fr.properties
@@ -13,5 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+concurrentMessageDigest.noDigest=L'algorithme de digest est introuvable
+
privilegedSetAccessControlContext.lookupFailed=Impossible d'obtenir une
référence pour le champ Thread.inheritedAccessControlContext
privilegedSetAccessControlContext.setFailed=Impossible de fixer la valeur du
champ Thread.inheritedAccessControlContext
diff --git a/java/org/apache/tomcat/util/security/LocalStrings_ja.properties
b/java/org/apache/tomcat/util/security/LocalStrings_ja.properties
index ec2de16c62..5ae31f866b 100644
--- a/java/org/apache/tomcat/util/security/LocalStrings_ja.properties
+++ b/java/org/apache/tomcat/util/security/LocalStrings_ja.properties
@@ -13,5 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+concurrentMessageDigest.noDigest=ダイジェストアルゴリズムを利用できません。
+
privilegedSetAccessControlContext.lookupFailed=フィールド
Thread.inheritedAccessControlContext への参照を取得できません
privilegedSetAccessControlContext.setFailed=フィールド
Thread.inheritedAccessControlContext を設定できません
diff --git a/java/org/apache/tomcat/util/security/LocalStrings_ko.properties
b/java/org/apache/tomcat/util/security/LocalStrings_ko.properties
index c1447b8c7d..24fba21205 100644
--- a/java/org/apache/tomcat/util/security/LocalStrings_ko.properties
+++ b/java/org/apache/tomcat/util/security/LocalStrings_ko.properties
@@ -13,5 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+concurrentMessageDigest.noDigest=Digest 알고리즘이 가용하지 않습니다.
+
privilegedSetAccessControlContext.lookupFailed=Thread.inheritedAccessControlContext
필드를 참조할 수 없습니다.
privilegedSetAccessControlContext.setFailed=Thread.inheritedAccessControlContext
필드를 설정할 수 없습니다.
diff --git a/java/org/apache/tomcat/util/security/LocalStrings_zh_CN.properties
b/java/org/apache/tomcat/util/security/LocalStrings_zh_CN.properties
index a3bbfeea6d..bc021bbf9f 100644
--- a/java/org/apache/tomcat/util/security/LocalStrings_zh_CN.properties
+++ b/java/org/apache/tomcat/util/security/LocalStrings_zh_CN.properties
@@ -13,5 +13,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
+concurrentMessageDigest.noDigest=摘要算法不可用
+
privilegedSetAccessControlContext.lookupFailed=无法获取对字段
Thread.inheritedAccessControlContext 的引用
privilegedSetAccessControlContext.setFailed=无法设置字段
Thread.inheritedAccessControlContext
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]