| @@ -64,6 +64,7 @@ import org.apache.tools.ant.types.resources.FileResource; | |||||
| import org.apache.tools.ant.types.resources.URLProvider; | import org.apache.tools.ant.types.resources.URLProvider; | ||||
| import org.apache.tools.ant.util.FileUtils; | import org.apache.tools.ant.util.FileUtils; | ||||
| import org.apache.tools.ant.util.JAXPUtils; | import org.apache.tools.ant.util.JAXPUtils; | ||||
| import org.apache.tools.ant.util.JavaEnvUtils; | |||||
| import org.xml.sax.EntityResolver; | import org.xml.sax.EntityResolver; | ||||
| import org.xml.sax.InputSource; | import org.xml.sax.InputSource; | ||||
| import org.xml.sax.SAXException; | import org.xml.sax.SAXException; | ||||
| @@ -422,15 +423,7 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware | |||||
| } | } | ||||
| } | } | ||||
| try { // #51668, #52382 | |||||
| final Field _isNotSecureProcessing = tfactory.getClass().getDeclaredField("_isNotSecureProcessing"); | |||||
| _isNotSecureProcessing.setAccessible(true); | |||||
| _isNotSecureProcessing.set(tfactory, Boolean.TRUE); | |||||
| } catch (final Exception x) { | |||||
| if (project != null) { | |||||
| project.log(x.toString(), Project.MSG_DEBUG); | |||||
| } | |||||
| } | |||||
| applyReflectionHackForExtensionMethods(); | |||||
| tfactory.setErrorListener(this); | tfactory.setErrorListener(this); | ||||
| @@ -455,7 +448,6 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware | |||||
| return tfactory; | return tfactory; | ||||
| } | } | ||||
| /** | /** | ||||
| * Set the factory name to use instead of JAXP default lookup. | * Set the factory name to use instead of JAXP default lookup. | ||||
| * @param name the fully qualified class name of the factory to use | * @param name the fully qualified class name of the factory to use | ||||
| @@ -670,4 +662,21 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware | |||||
| traceConfiguration = xsltTask.getTraceConfiguration(); | traceConfiguration = xsltTask.getTraceConfiguration(); | ||||
| } | } | ||||
| private void applyReflectionHackForExtensionMethods() { | |||||
| // Jigsaw doesn't allow reflection to work, so we can stop trying | |||||
| if (JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_1_7) | |||||
| && !JavaEnvUtils.isAtLeastJavaVersion(JavaEnvUtils.JAVA_9)) { | |||||
| try { // #51668, #52382 | |||||
| final Field _isNotSecureProcessing = tfactory.getClass().getDeclaredField("_isNotSecureProcessing"); | |||||
| _isNotSecureProcessing.setAccessible(true); | |||||
| _isNotSecureProcessing.set(tfactory, Boolean.TRUE); | |||||
| } catch (final Exception x) { | |||||
| if (project != null) { | |||||
| project.log(x.toString(), Project.MSG_DEBUG); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||