-
Bug
-
Resolution: Unresolved
-
P4
-
25
-
None
Using transformer inside transformer fails on JDK 25, works on older JDKs (11,17,21)
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.stream.StreamSource;
import java.io.ByteArrayInputStream;
public class test {
public static void main(String[] args) throws Exception {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
Source src = new StreamSource(new ByteArrayInputStream("<a/>".getBytes()));
Result res = new SAXResult(new DefaultHandler() {
public void endElement (String uri, String localName, String qName) {
try {
SAXTransformerFactory tFactory
= (SAXTransformerFactory) SAXTransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
SAXResult res = new SAXResult(new DefaultHandler());
transformer.transform(new StreamSource(new ByteArrayInputStream("<b/>".getBytes())), res);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
transformer.transform(src, res);
}
}
javax.xml.transform.TransformerException: java.lang.RuntimeException: javax.xml.transform.TransformerException: org.xml.sax.SAXException: FWK005 parse may not be called while parsing.
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:790)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:395)
import org.xml.sax.helpers.DefaultHandler;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.sax.SAXResult;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.stream.StreamSource;
import java.io.ByteArrayInputStream;
public class test {
public static void main(String[] args) throws Exception {
TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer();
Source src = new StreamSource(new ByteArrayInputStream("<a/>".getBytes()));
Result res = new SAXResult(new DefaultHandler() {
public void endElement (String uri, String localName, String qName) {
try {
SAXTransformerFactory tFactory
= (SAXTransformerFactory) SAXTransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer();
SAXResult res = new SAXResult(new DefaultHandler());
transformer.transform(new StreamSource(new ByteArrayInputStream("<b/>".getBytes())), res);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
});
transformer.transform(src, res);
}
}
javax.xml.transform.TransformerException: java.lang.RuntimeException: javax.xml.transform.TransformerException: org.xml.sax.SAXException: FWK005 parse may not be called while parsing.
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:790)
at java.xml/com.sun.org.apache.xalan.internal.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:395)