Projects
openEuler:24.03:SP1:Everything
openjdk-1.8.0
_service:tar_scm:0043-Cache-dom-in-xml-transfor...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:tar_scm:0043-Cache-dom-in-xml-transform.patch of Package openjdk-1.8.0
Date: Fri, 9 Jun 2023 10:18:10 +0800 Subject: Cache dom in xml transform --- .../xalan/internal/xsltc/trax/TransformerImpl.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java index 8e783cee0..3d143d461 100644 --- a/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java +++ b/jaxp/src/com/sun/org/apache/xalan/internal/xsltc/trax/TransformerImpl.java @@ -56,6 +56,7 @@ import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; import java.util.Properties; import java.util.StringTokenizer; import javax.xml.XMLConstants; @@ -151,6 +152,11 @@ public final class TransformerImpl extends Transformer */ private DOM _dom = null; + /** + * A hashMap for DOMS. + */ + private ConcurrentHashMap<String, DOM> _domMaps = new ConcurrentHashMap(); + /** * Number of indent spaces to add when indentation is on. */ @@ -530,8 +536,11 @@ public final class TransformerImpl extends Transformer private DOM getDOM(Source source) throws TransformerException { try { DOM dom; - if (source != null) { + String ssId = source.getSystemId(); + if ((ssId != null) && (_domMaps.containsKey(ssId))) { + return _domMaps.get(ssId); + } DTMWSFilter wsfilter; if (_translet != null && _translet instanceof StripFilter) { wsfilter = new DOMWSFilter(_translet); @@ -549,6 +558,7 @@ public final class TransformerImpl extends Transformer } dom = (DOM)_dtmManager.getDTM(source, false, wsfilter, true, false, false, 0, hasIdCall); + if ((ssId != null) && (dom != null)) _domMaps.put(ssId, dom); } else if (_dom != null) { dom = _dom; _dom = null; // use only once, so reset to 'null' -- 2.22.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2