From ca86f16776d3ac0f57df0c8a2cde930ea1042b25 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sat, 10 Nov 2012 17:32:03 +0000 Subject: [PATCH] Inspired by PR 54056 I looked for thread-safety issues with HashMap in our code - nothing major found git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1407856 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/listener/ProfileLogger.java | 4 +-- .../org/apache/tools/zip/ExtraFieldUtils.java | 4 +-- .../apache/tools/zip/ZipEncodingHelper.java | 25 +++++++++++-------- 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/main/org/apache/tools/ant/listener/ProfileLogger.java b/src/main/org/apache/tools/ant/listener/ProfileLogger.java index 86cc8604d..bbf5bb4fa 100644 --- a/src/main/org/apache/tools/ant/listener/ProfileLogger.java +++ b/src/main/org/apache/tools/ant/listener/ProfileLogger.java @@ -18,8 +18,8 @@ package org.apache.tools.ant.listener; import java.util.Date; -import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import org.apache.tools.ant.BuildEvent; import org.apache.tools.ant.DefaultLogger; @@ -32,7 +32,7 @@ import org.apache.tools.ant.util.StringUtils; */ public class ProfileLogger extends DefaultLogger { - private Map profileData = new HashMap(); + private Map profileData = new ConcurrentHashMap(); /** * Logs a message to say that the target has started. diff --git a/src/main/org/apache/tools/zip/ExtraFieldUtils.java b/src/main/org/apache/tools/zip/ExtraFieldUtils.java index 396ab4d1b..a6c0118ff 100644 --- a/src/main/org/apache/tools/zip/ExtraFieldUtils.java +++ b/src/main/org/apache/tools/zip/ExtraFieldUtils.java @@ -19,9 +19,9 @@ package org.apache.tools.zip; import java.util.ArrayList; -import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.zip.ZipException; /** @@ -41,7 +41,7 @@ public class ExtraFieldUtils { private static final Map> implementations; static { - implementations = new HashMap>(); + implementations = new ConcurrentHashMap>(); register(AsiExtraField.class); register(JarMarker.class); register(UnicodePathExtraField.class); diff --git a/src/main/org/apache/tools/zip/ZipEncodingHelper.java b/src/main/org/apache/tools/zip/ZipEncodingHelper.java index 9c17c9ec8..f4ca79d19 100644 --- a/src/main/org/apache/tools/zip/ZipEncodingHelper.java +++ b/src/main/org/apache/tools/zip/ZipEncodingHelper.java @@ -21,6 +21,7 @@ package org.apache.tools.zip; import java.nio.ByteBuffer; import java.nio.charset.Charset; import java.nio.charset.UnsupportedCharsetException; +import java.util.Collections; import java.util.HashMap; import java.util.Map; @@ -65,7 +66,8 @@ public abstract class ZipEncodingHelper { private static final Map simpleEncodings; static { - simpleEncodings = new HashMap(); + Map se = + new HashMap(); char[] cp437_high_chars = new char[] { 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, @@ -93,11 +95,11 @@ public abstract class ZipEncodingHelper { SimpleEncodingHolder cp437 = new SimpleEncodingHolder(cp437_high_chars); - simpleEncodings.put("CP437",cp437); - simpleEncodings.put("Cp437",cp437); - simpleEncodings.put("cp437",cp437); - simpleEncodings.put("IBM437",cp437); - simpleEncodings.put("ibm437",cp437); + se.put("CP437", cp437); + se.put("Cp437", cp437); + se.put("cp437", cp437); + se.put("IBM437", cp437); + se.put("ibm437", cp437); char[] cp850_high_chars = new char[] { 0x00c7, 0x00fc, 0x00e9, 0x00e2, 0x00e4, 0x00e0, @@ -125,11 +127,12 @@ public abstract class ZipEncodingHelper { SimpleEncodingHolder cp850 = new SimpleEncodingHolder(cp850_high_chars); - simpleEncodings.put("CP850",cp850); - simpleEncodings.put("Cp850",cp850); - simpleEncodings.put("cp850",cp850); - simpleEncodings.put("IBM850",cp850); - simpleEncodings.put("ibm850",cp850); + se.put("CP850", cp850); + se.put("Cp850", cp850); + se.put("cp850", cp850); + se.put("IBM850", cp850); + se.put("ibm850", cp850); + simpleEncodings = Collections.unmodifiableMap(se); } /**