|
54 | 54 | import org.exist.util.MimeTable; |
55 | 55 | import org.exist.xquery.*; |
56 | 56 | import org.exist.xquery.value.*; |
| 57 | +import org.exist.xslt.TransformerFactoryAllocator; |
57 | 58 | import org.w3c.dom.Element; |
58 | 59 | import org.w3c.dom.Node; |
59 | 60 |
|
|
65 | 66 | import javax.annotation.Nullable; |
66 | 67 | import javax.xml.transform.Transformer; |
67 | 68 | import javax.xml.transform.TransformerException; |
68 | | -import javax.xml.transform.TransformerFactory; |
69 | 69 | import javax.xml.transform.dom.DOMSource; |
| 70 | +import javax.xml.transform.sax.SAXTransformerFactory; |
70 | 71 | import javax.xml.transform.stream.StreamResult; |
71 | 72 | import java.io.*; |
72 | 73 | import java.net.InetAddress; |
|
90 | 91 | public class SendEmailFunction extends BasicFunction { |
91 | 92 |
|
92 | 93 | private static final Logger LOGGER = LogManager.getLogger(SendEmailFunction.class); |
93 | | - private static final TransformerFactory TRANSFORMER_FACTORY = TransformerFactory.newInstance(); |
94 | 94 |
|
95 | 95 | private final static int MIME_BASE64_MAX_LINE_LENGTH = 76; //RFC 2045, page 24 |
96 | 96 |
|
@@ -700,7 +700,8 @@ private Mail[] parseMailElement(final Element[] mailElements) throws Transformer |
700 | 700 | mail.setText(bodyPart.getFirstChild().getNodeValue()); |
701 | 701 | } else if ("xhtml".equals(bodyPart.getLocalName())) { |
702 | 702 | //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(); |
704 | 705 | final DOMSource source = new DOMSource(bodyPart.getFirstChild()); |
705 | 706 | try (final StringBuilderWriter strWriter = new StringBuilderWriter()) { |
706 | 707 | final StreamResult result = new StreamResult(strWriter); |
@@ -839,7 +840,8 @@ private Message[] parseMessageElement(final Session session, final Element[] mai |
839 | 840 | break; |
840 | 841 | case "xhtml": |
841 | 842 | //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(); |
843 | 845 | final DOMSource source = new DOMSource(bodyPart.getFirstChild()); |
844 | 846 | try (final StringBuilderWriter strWriter = new StringBuilderWriter()) { |
845 | 847 | final StreamResult result = new StreamResult(strWriter); |
@@ -906,7 +908,8 @@ private Message[] parseMessageElement(final Session session, final Element[] mai |
906 | 908 | Node attachChild = attachment.getFirstChild(); |
907 | 909 | while (attachChild != null) { |
908 | 910 | 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(); |
910 | 913 | final DOMSource source = new DOMSource(attachChild); |
911 | 914 | try (final StringBuilderWriter strWriter = new StringBuilderWriter()) { |
912 | 915 | final StreamResult result = new StreamResult(strWriter); |
|
0 commit comments