You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@poi.apache.org by fa...@apache.org on 2022/07/28 10:06:22 UTC
svn commit: r1903076 - /xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
Author: fanningpj
Date: Thu Jul 28 10:06:22 2022
New Revision: 1903076
URL: http://svn.apache.org/viewvc?rev=1903076&view=rev
Log:
remove static cache of parsers
Modified:
xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
Modified: xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java
URL: http://svn.apache.org/viewvc/xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java?rev=1903076&r1=1903075&r2=1903076&view=diff
==============================================================================
--- xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java (original)
+++ xmlbeans/trunk/src/main/java/org/apache/xmlbeans/impl/config/BindingConfigImpl.java Thu Jul 28 10:06:22 2022
@@ -23,7 +23,6 @@ import org.apache.xmlbeans.impl.xb.xmlco
import javax.xml.namespace.QName;
import java.io.File;
import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
/**
* An implementation of BindingConfig
@@ -47,42 +46,18 @@ public class BindingConfigImpl extends B
private final List<PrePostExtensionImpl> _prePostExtensions = new ArrayList<>();
private final Map<QName, UserTypeImpl> _userTypes = new LinkedHashMap<>();
- private static class JavaFilesClasspath {
-
- private final File[] javaFiles, classpath;
-
- JavaFilesClasspath(File[] javaFiles, File[] classpath) {
- this.javaFiles = javaFiles != null ? Arrays.copyOf(javaFiles, javaFiles.length) : new File[0];
- this.classpath = classpath != null ? Arrays.copyOf(classpath, classpath.length) : new File[0];
- }
-
- @Override
- public boolean equals(Object other) {
- if ( other == null || ! this.getClass().isInstance(other) )
- return false;
- JavaFilesClasspath otherJfc = (JavaFilesClasspath) other;
- return Arrays.equals(this.javaFiles, otherJfc.javaFiles) && Arrays.equals(this.classpath, otherJfc.classpath);
- }
-
- @Override
- public int hashCode() {
- return Arrays.hashCode(this.javaFiles) ^ Arrays.hashCode(this.classpath);
- }
-
- }
-
- private static final ConcurrentHashMap<JavaFilesClasspath, Parser> _parserMap = new ConcurrentHashMap<>();
-
- private static Parser parserInstance(File[] javaFiles, File[] classpath) {
- return _parserMap.computeIfAbsent(new JavaFilesClasspath(javaFiles, classpath), jfc ->
- new Parser(jfc.javaFiles, jfc.classpath));
- }
+ private final File[] _javaFiles;
+ private final File[] _classpath;
+ private Parser _parser;
public static BindingConfig forConfigDocuments(Config[] configs, File[] javaFiles, File[] classpath) {
return new BindingConfigImpl(configs, javaFiles, classpath);
}
private BindingConfigImpl(Config[] configs, File[] javaFiles, File[] classpath) {
+ _javaFiles = (javaFiles != null) ? javaFiles.clone() : new File[0];
+ _classpath = (classpath != null) ? classpath.clone() : new File[0];
+
for (Config config : configs) {
Nsconfig[] nsa = config.getNamespaceArray();
for (Nsconfig nsconfig : nsa) {
@@ -120,12 +95,12 @@ public class BindingConfigImpl extends B
Extensionconfig[] ext = config.getExtensionArray();
for (Extensionconfig extensionconfig : ext) {
- recordExtensionSetting(javaFiles, classpath, extensionconfig);
+ recordExtensionSetting(extensionconfig);
}
Usertypeconfig[] utypes = config.getUsertypeArray();
for (Usertypeconfig utype : utypes) {
- recordUserTypeSetting(javaFiles, classpath, utype);
+ recordUserTypeSetting(utype);
}
}
@@ -210,7 +185,7 @@ public class BindingConfigImpl extends B
list.forEach(o -> result.put(o, value));
}
- private void recordExtensionSetting(File[] javaFiles, File[] classpath, Extensionconfig ext) {
+ private void recordExtensionSetting(Extensionconfig ext) {
NameSet xbeanSet = null;
Object key = ext.getFor();
@@ -233,7 +208,7 @@ public class BindingConfigImpl extends B
Extensionconfig.Interface[] intfXO = ext.getInterfaceArray();
Extensionconfig.PrePostSet ppXO = ext.getPrePostSet();
- Parser loader = parserInstance(javaFiles, classpath);
+ Parser loader = parserInstance();
if (intfXO.length > 0 || ppXO != null) {
for (Extensionconfig.Interface anInterface : intfXO) {
@@ -244,12 +219,18 @@ public class BindingConfigImpl extends B
}
}
- private void recordUserTypeSetting(File[] javaFiles, File[] classpath, Usertypeconfig usertypeconfig) {
- Parser loader = parserInstance(javaFiles, classpath);
+ private void recordUserTypeSetting(Usertypeconfig usertypeconfig) {
+ Parser loader = parserInstance();
UserTypeImpl userType = UserTypeImpl.newInstance(loader, usertypeconfig);
_userTypes.put(userType.getName(), userType);
}
+ private Parser parserInstance() {
+ if (_parser == null) {
+ _parser = new Parser(_javaFiles, _classpath);
+ }
+ return _parser;
+ }
private String lookup(Map<Object, String> map, Map<Object, String> mapByUriPrefix, String uri) {
if (uri == null) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@poi.apache.org
For additional commands, e-mail: commits-help@poi.apache.org