Skip to content

Commit 4473efc

Browse files
committed
[bugfix] Make sure to correctly configure the Transformer
1 parent 72224bf commit 4473efc

File tree

2 files changed

+10
-6
lines changed
  • exist-core/src/main/java/org/exist/xquery/functions/validation
  • extensions/modules/mail/src/main/java/org/exist/xquery/modules/mail

2 files changed

+10
-6
lines changed

exist-core/src/main/java/org/exist/xquery/functions/validation/Jaxp.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@
106106
import org.exist.xquery.value.Type;
107107
import org.exist.xquery.value.ValueSequence;
108108

109+
import org.exist.xslt.TransformerFactoryAllocator;
109110
import org.xml.sax.ContentHandler;
110111
import org.xml.sax.InputSource;
111112
import org.xml.sax.SAXException;
@@ -460,7 +461,7 @@ private Path preparseDTD(StreamSource instance, String systemId)
460461

461462
final StreamResult result = new StreamResult(tmp.toFile());
462463

463-
final TransformerFactory tf = TransformerFactory.newInstance();
464+
final TransformerFactory tf = TransformerFactoryAllocator.getTransformerFactory(context.getBroker().getBrokerPool());
464465

465466
final Transformer transformer = tf.newTransformer();
466467

extensions/modules/mail/src/main/java/org/exist/xquery/modules/mail/SendEmailFunction.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.exist.util.MimeTable;
5555
import org.exist.xquery.*;
5656
import org.exist.xquery.value.*;
57+
import org.exist.xslt.TransformerFactoryAllocator;
5758
import org.w3c.dom.Element;
5859
import org.w3c.dom.Node;
5960

@@ -65,8 +66,8 @@
6566
import javax.annotation.Nullable;
6667
import javax.xml.transform.Transformer;
6768
import javax.xml.transform.TransformerException;
68-
import javax.xml.transform.TransformerFactory;
6969
import javax.xml.transform.dom.DOMSource;
70+
import javax.xml.transform.sax.SAXTransformerFactory;
7071
import javax.xml.transform.stream.StreamResult;
7172
import java.io.*;
7273
import java.net.InetAddress;
@@ -90,7 +91,6 @@
9091
public class SendEmailFunction extends BasicFunction {
9192

9293
private static final Logger LOGGER = LogManager.getLogger(SendEmailFunction.class);
93-
private static final TransformerFactory TRANSFORMER_FACTORY = TransformerFactory.newInstance();
9494

9595
private final static int MIME_BASE64_MAX_LINE_LENGTH = 76; //RFC 2045, page 24
9696

@@ -700,7 +700,8 @@ private Mail[] parseMailElement(final Element[] mailElements) throws Transformer
700700
mail.setText(bodyPart.getFirstChild().getNodeValue());
701701
} else if ("xhtml".equals(bodyPart.getLocalName())) {
702702
//Convert everything inside <xhtml></xhtml> to text
703-
final Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
703+
final SAXTransformerFactory factory = TransformerFactoryAllocator.getTransformerFactory(context.getBroker().getBrokerPool());
704+
final Transformer transformer = factory.newTransformer();
704705
final DOMSource source = new DOMSource(bodyPart.getFirstChild());
705706
try (final StringBuilderWriter strWriter = new StringBuilderWriter()) {
706707
final StreamResult result = new StreamResult(strWriter);
@@ -839,7 +840,8 @@ private Message[] parseMessageElement(final Session session, final Element[] mai
839840
break;
840841
case "xhtml":
841842
//Convert everything inside <xhtml></xhtml> to text
842-
final Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
843+
final SAXTransformerFactory factory = TransformerFactoryAllocator.getTransformerFactory(context.getBroker().getBrokerPool());
844+
final Transformer transformer = factory.newTransformer();
843845
final DOMSource source = new DOMSource(bodyPart.getFirstChild());
844846
try (final StringBuilderWriter strWriter = new StringBuilderWriter()) {
845847
final StreamResult result = new StreamResult(strWriter);
@@ -906,7 +908,8 @@ private Message[] parseMessageElement(final Session session, final Element[] mai
906908
Node attachChild = attachment.getFirstChild();
907909
while (attachChild != null) {
908910
if (Node.ELEMENT_NODE == attachChild.getNodeType()) {
909-
final Transformer transformer = TRANSFORMER_FACTORY.newTransformer();
911+
final SAXTransformerFactory factory = TransformerFactoryAllocator.getTransformerFactory(context.getBroker().getBrokerPool());
912+
final Transformer transformer = factory.newTransformer();
910913
final DOMSource source = new DOMSource(attachChild);
911914
try (final StringBuilderWriter strWriter = new StringBuilderWriter()) {
912915
final StreamResult result = new StreamResult(strWriter);

0 commit comments

Comments
 (0)