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 <ma...@apache.org>
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: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to