From 1d7b624155b06f665c8b99014227bc1f87f9ec54 Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sun, 4 Sep 2016 16:33:21 +0200 Subject: [PATCH] don't try reflection when we know it doesn't work https://bz.apache.org/bugzilla/show_bug.cgi?id=60060 --- .../ant/taskdefs/optional/TraXLiaison.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java index fea97d2aa..182059c99 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java @@ -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.util.FileUtils; import org.apache.tools.ant.util.JAXPUtils; +import org.apache.tools.ant.util.JavaEnvUtils; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -428,15 +429,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); @@ -461,7 +454,6 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware return tfactory; } - /** * Set the factory name to use instead of JAXP default lookup. * @param name the fully qualified class name of the factory to use @@ -676,4 +668,21 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware 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); + } + } + } + } + }