Skip to content

Commit ef6da8c

Browse files
Refactor PLURAL_EXCEPTIONS to use ThreadLocal for thread safety
What changed: - Changed PLURAL_EXCEPTIONS from a static Map to a ThreadLocal<Map>. Why: - Ensures thread safety when accessing PLURAL_EXCEPTIONS in a multi-threaded environment.
1 parent d3f3698 commit ef6da8c

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

modello-core/src/main/java/org/codehaus/modello/plugin/AbstractModelloGenerator.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
public abstract class AbstractModelloGenerator implements ModelloGenerator {
6060
private final Logger logger = LoggerFactory.getLogger(getClass());
6161

62-
private static final Map<String, String> PLURAL_EXCEPTIONS = new HashMap<>();
62+
private static final ThreadLocal<Map<String, String>> PLURAL_EXCEPTIONS = ThreadLocal.withInitial(HashMap::new);
6363

6464
private Model model;
6565

@@ -97,8 +97,9 @@ protected void initialize(Model model, Map<String, Object> parameters) throws Mo
9797

9898
licenseText = (List<String>) parameters.get(ModelloParameterConstants.LICENSE_TEXT);
9999

100+
PLURAL_EXCEPTIONS.get().clear();
100101
Optional.ofNullable(parameters.get(ModelloParameterConstants.PLURAL_EXCEPTIONS))
101-
.ifPresent(o -> PLURAL_EXCEPTIONS.putAll((Map<String, String>) o));
102+
.ifPresent(o -> PLURAL_EXCEPTIONS.get().putAll((Map<String, String>) o));
102103
}
103104

104105
protected Model getModel() {
@@ -207,8 +208,8 @@ public static String singular(String name) {
207208
return name;
208209
}
209210

210-
if (PLURAL_EXCEPTIONS.containsKey(name)) {
211-
return PLURAL_EXCEPTIONS.get(name);
211+
if (PLURAL_EXCEPTIONS.get().containsKey(name)) {
212+
return PLURAL_EXCEPTIONS.get().get(name);
212213
}
213214

214215
if (name.endsWith("ies")) {

0 commit comments

Comments
 (0)