try to make ExcelAntWorkbookUtilFactory thread safe

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1921338 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
PJ Fanning 2024-10-15 16:13:17 +00:00
parent 88a0d4ecf3
commit fad6cae019
2 changed files with 13 additions and 12 deletions

View File

@ -27,7 +27,7 @@ import java.util.Map;
*/ */
public final class ExcelAntWorkbookUtilFactory { public final class ExcelAntWorkbookUtilFactory {
private static Map<String, ExcelAntWorkbookUtil> workbookUtilMap; private static final Map<String, ExcelAntWorkbookUtil> workbookUtilMap = new HashMap<>();
private ExcelAntWorkbookUtilFactory() { private ExcelAntWorkbookUtilFactory() {
} }
@ -41,16 +41,14 @@ public final class ExcelAntWorkbookUtilFactory {
* a freshly instantiated one if none did exist before. * a freshly instantiated one if none did exist before.
*/ */
public static ExcelAntWorkbookUtil getInstance(String fileName) { public static ExcelAntWorkbookUtil getInstance(String fileName) {
if(workbookUtilMap == null) { synchronized (workbookUtilMap) {
workbookUtilMap = new HashMap<>(); if(workbookUtilMap.containsKey(fileName)) {
} return workbookUtilMap.get(fileName);
}
if(workbookUtilMap.containsKey(fileName)) { ExcelAntWorkbookUtil wbu = new ExcelAntWorkbookUtil(fileName);
return workbookUtilMap.get(fileName); workbookUtilMap.put(fileName, wbu);
return wbu;
} }
ExcelAntWorkbookUtil wbu = new ExcelAntWorkbookUtil(fileName);
workbookUtilMap.put(fileName, wbu);
return wbu;
} }
} }

View File

@ -16,6 +16,7 @@
==================================================================== */ ==================================================================== */
package org.apache.poi.xwpf.usermodel; package org.apache.poi.xwpf.usermodel;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
@ -45,12 +46,14 @@ public enum VerticalAlign {
*/ */
SUBSCRIPT(3); SUBSCRIPT(3);
private static final Map<Integer, VerticalAlign> imap = new HashMap<>(); private static final Map<Integer, VerticalAlign> imap;
static { static {
final Map<Integer, VerticalAlign> tempMap = new HashMap<>();
for (VerticalAlign p : values()) { for (VerticalAlign p : values()) {
imap.put(p.getValue(), p); tempMap.put(p.getValue(), p);
} }
imap = Collections.unmodifiableMap(tempMap);
} }
private final int value; private final int value;