From e40b4e1ec9801e95b7544ed975cda58b0a1b6a09 Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 4 Nov 2021 18:30:31 +0000 Subject: [PATCH] CaseInsensitiveMap is not thread-safe git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1894738 13f79535-47bb-0310-9956-ffa450edef68 --- .../poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java | 4 ++-- .../main/java/org/apache/poi/xssf/usermodel/XSSFTable.java | 7 +++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java index c2c1f06cd2..c1b5eb1042 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/BaseXSSFEvaluationWorkbook.java @@ -19,8 +19,8 @@ package org.apache.poi.xssf.usermodel; import java.util.List; import java.util.Map; +import java.util.concurrent.ConcurrentSkipListMap; -import org.apache.commons.collections4.map.CaseInsensitiveMap; import org.apache.poi.ss.SpreadsheetVersion; import org.apache.poi.ss.formula.EvaluationName; import org.apache.poi.ss.formula.EvaluationWorkbook; @@ -364,7 +364,7 @@ public abstract class BaseXSSFEvaluationWorkbook implements FormulaRenderingWork if ( _tableCache != null ) { return _tableCache; } - _tableCache = new CaseInsensitiveMap<>(); + _tableCache = new ConcurrentSkipListMap<>(String.CASE_INSENSITIVE_ORDER); for (Sheet sheet : _uBook) { for (XSSFTable tbl : ((XSSFSheet)sheet).getTables()) { diff --git a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java index 39f45df8e3..fbba2f697a 100644 --- a/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java +++ b/poi-ooxml/src/main/java/org/apache/poi/xssf/usermodel/XSSFTable.java @@ -26,8 +26,8 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import java.util.concurrent.ConcurrentSkipListMap; -import org.apache.commons.collections4.map.CaseInsensitiveMap; import org.apache.poi.ooxml.POIXMLDocumentPart; import org.apache.poi.openxml4j.opc.PackagePart; import org.apache.poi.ss.SpreadsheetVersion; @@ -59,7 +59,7 @@ public class XSSFTable extends POIXMLDocumentPart implements Table { private CTTable ctTable; private transient List xmlColumnPrs; private transient List tableColumns; - private transient CaseInsensitiveMap columnMap; + private transient ConcurrentSkipListMap columnMap; private transient CellReference startCellReference; private transient CellReference endCellReference; private transient String commonXPath; @@ -831,8 +831,7 @@ public class XSSFTable extends POIXMLDocumentPart implements Table { public int findColumnIndex(String columnHeader) { if (columnHeader == null) return -1; if (columnMap == null) { - final int count = getColumnCount(); - columnMap = new CaseInsensitiveMap<>(count * 3 / 2); + columnMap = new ConcurrentSkipListMap<>(String.CASE_INSENSITIVE_ORDER); int i = 0; for (XSSFTableColumn column : getColumns()) { -- 2.39.5