use concurrent hash map for parser instances
git-svn-id: https://svn.apache.org/repos/asf/xmlbeans/trunk@1903075 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java b/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
index 0d1613f..48499c0 100755
--- a/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
+++ b/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
@@ -23,6 +23,7 @@
import javax.xml.namespace.QName;
import java.io.File;
import java.util.*;
+import java.util.concurrent.ConcurrentHashMap;
/**
* An implementation of BindingConfig
@@ -70,16 +71,11 @@
}
- private static final Map<JavaFilesClasspath, Parser> _parserMap = new HashMap<>();
+ private static final ConcurrentHashMap<JavaFilesClasspath, Parser> _parserMap = new ConcurrentHashMap<>();
private static Parser parserInstance(File[] javaFiles, File[] classpath) {
- JavaFilesClasspath jfc = new JavaFilesClasspath(javaFiles, classpath);
- Parser parser = _parserMap.get(jfc);
- if ( parser == null ) {
- parser = new Parser(javaFiles, classpath);
- _parserMap.put(jfc, parser);
- }
- return parser;
+ return _parserMap.computeIfAbsent(new JavaFilesClasspath(javaFiles, classpath), jfc ->
+ new Parser(jfc.javaFiles, jfc.classpath));
}
public static BindingConfig forConfigDocuments(Config[] configs, File[] javaFiles, File[] classpath) {
diff --git a/src/main/java9/module-info.class b/src/main/java9/module-info.class
index 37f1f8d..323bccd 100644
--- a/src/main/java9/module-info.class
+++ b/src/main/java9/module-info.class
Binary files differ