diff options
author | Jon Marius Venstad <jonmv@users.noreply.github.com> | 2020-11-12 14:51:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-11-12 14:51:47 +0100 |
commit | 18cac1930b6abf1e6535307bfd13da2dec6c2fd8 (patch) | |
tree | 1910d56a5c377dc91eadfb4690b134c27ca418c9 | |
parent | 152d8f57d0d62506c83894907ca3c2e1fc56dfd6 (diff) | |
parent | a93e4b804a578a8fd7b0f990b161e488026f8eb9 (diff) |
Merge pull request #15316 from vespa-engine/hmusum/create-transformerfactory-once
Create transformer factory only once
-rw-r--r-- | config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java index 9c68fb95cce..ffc975d8668 100644 --- a/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java +++ b/config-application-package/src/main/java/com/yahoo/config/model/application/provider/FilesApplicationPackage.java @@ -34,7 +34,6 @@ import org.w3c.dom.NodeList; import org.xml.sax.SAXException; import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Transformer; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; @@ -98,6 +97,7 @@ public class FilesApplicationPackage implements ApplicationPackage { private final List<String> userIncludeDirs = new ArrayList<>(); private final ApplicationMetaData metaData; private final boolean includeSourceFiles; + private final TransformerFactory transformerFactory; /** Creates from a directory with source files included */ public static FilesApplicationPackage fromFile(File appDir) { @@ -160,6 +160,7 @@ public class FilesApplicationPackage implements ApplicationPackage { configDefsDir = new File(appDir, ApplicationPackage.CONFIG_DEFINITIONS_DIR); addUserIncludeDirs(); this.metaData = metaData; + transformerFactory = TransformerFactory.newInstance(); } @Override @@ -591,12 +592,13 @@ public class FilesApplicationPackage implements ApplicationPackage { inputXml, metaData.getApplicationId().instance(), zone.environment(), - zone.region()).run(); - Transformer transformer = TransformerFactory.newInstance().newTransformer(); + zone.region()) + .run(); + try (FileOutputStream outputStream = new FileOutputStream(destination)) { - transformer.transform(new DOMSource(document), new StreamResult(outputStream)); + transformerFactory.newTransformer().transform(new DOMSource(document), new StreamResult(outputStream)); } - } catch (TransformerException |ParserConfigurationException | SAXException e) { + } catch (TransformerException | ParserConfigurationException | SAXException e) { // TODO: 2020-11-09, debugging what seems like missing or empty file while preprocessing. Remove afterwards if (inputXml.canRead()) { log.log(Level.WARNING, "Error preprocessing " + inputXml.getAbsolutePath() + ", file content: " + IOUtils.readFile(inputXml)); |