You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2020/07/29 13:42:08 UTC
[ant] branch master updated: Class.newInstance() is deprecated in
Java 9+
This is an automated email from the ASF dual-hosted git repository.
bodewig pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ant.git
The following commit(s) were added to refs/heads/master by this push:
new ae0c87b Class.newInstance() is deprecated in Java 9+
new 35d9f3b Merge pull request #133 from twogee/new-instance
ae0c87b is described below
commit ae0c87be2b042203bb24c72722b61f7466273f9e
Author: twogee <g....@gmail.com>
AuthorDate: Sun Jul 26 15:43:47 2020 +0200
Class.newInstance() is deprecated in Java 9+
---
.../org/apache/tools/ant/IntrospectionHelper.java | 5 +++--
src/main/org/apache/tools/ant/Project.java | 6 +++---
src/main/org/apache/tools/ant/filters/SortFilter.java | 10 ++++------
src/main/org/apache/tools/ant/launch/Launcher.java | 2 +-
.../org/apache/tools/ant/taskdefs/AntStructure.java | 6 ++++--
src/main/org/apache/tools/ant/taskdefs/JDBCTask.java | 7 ++++---
src/main/org/apache/tools/ant/taskdefs/Tar.java | 2 +-
.../org/apache/tools/ant/taskdefs/XSLTProcess.java | 2 +-
.../apache/tools/ant/taskdefs/compilers/Javac13.java | 2 +-
.../apache/tools/ant/taskdefs/email/MimeMailer.java | 2 +-
.../tools/ant/taskdefs/launcher/CommandLauncher.java | 8 +++++---
.../tools/ant/taskdefs/optional/TraXLiaison.java | 4 ++--
.../tools/ant/taskdefs/optional/XMLValidateTask.java | 6 ++++--
.../taskdefs/optional/ejb/GenericDeploymentTool.java | 5 ++---
.../jsp/compilers/JspCompilerAdapterFactory.java | 2 +-
.../ant/taskdefs/optional/junit/FormatterElement.java | 8 ++++----
.../taskdefs/optional/junit/TearDownOnVmCrash.java | 2 +-
.../optional/junitlauncher/LauncherSupport.java | 2 +-
.../optional/native2ascii/SunNative2Ascii.java | 2 +-
.../apache/tools/ant/types/EnumeratedAttribute.java | 2 +-
src/main/org/apache/tools/ant/types/Mapper.java | 2 +-
src/main/org/apache/tools/ant/types/XMLCatalog.java | 2 +-
.../tools/ant/types/selectors/ExtendSelector.java | 6 ++++--
.../selectors/modifiedselector/ModifiedSelector.java | 2 +-
.../org/apache/tools/ant/util/ClasspathUtils.java | 6 ++++--
.../apache/tools/ant/util/ScriptRunnerCreator.java | 2 +-
src/main/org/apache/tools/zip/ExtraFieldUtils.java | 19 +++++++++++++++++--
.../ant/types/selectors/PosixGroupSelectorTest.java | 4 ++--
28 files changed, 76 insertions(+), 52 deletions(-)
diff --git a/src/main/org/apache/tools/ant/IntrospectionHelper.java b/src/main/org/apache/tools/ant/IntrospectionHelper.java
index 269c55d..d4bf771 100644
--- a/src/main/org/apache/tools/ant/IntrospectionHelper.java
+++ b/src/main/org/apache/tools/ant/IntrospectionHelper.java
@@ -1122,10 +1122,11 @@ public final class IntrospectionHelper {
public void set(final Project p, final Object parent, final String value)
throws InvocationTargetException, IllegalAccessException, BuildException {
try {
- final EnumeratedAttribute ea = (EnumeratedAttribute) reflectedArg.newInstance();
+ final EnumeratedAttribute ea =
+ (EnumeratedAttribute) reflectedArg.getDeclaredConstructor().newInstance();
ea.setValue(value);
m.invoke(parent, ea);
- } catch (final InstantiationException ie) {
+ } catch (final InstantiationException | NoSuchMethodException ie) {
throw new BuildException(ie);
}
}
diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java
index 1d3e692..3f34736 100644
--- a/src/main/org/apache/tools/ant/Project.java
+++ b/src/main/org/apache/tools/ant/Project.java
@@ -271,7 +271,7 @@ public class Project implements ResourceFactory {
public Project createSubProject() {
Project subProject = null;
try {
- subProject = (getClass().newInstance());
+ subProject = getClass().getDeclaredConstructor().newInstance();
} catch (final Exception e) {
subProject = new Project();
}
@@ -1219,11 +1219,11 @@ public class Project implements ResourceFactory {
}
log("Attempting to create object of type " + classname, MSG_DEBUG);
try {
- o = Class.forName(classname, true, coreLoader).newInstance();
+ o = Class.forName(classname, true, coreLoader).getDeclaredConstructor().newInstance();
} catch (final ClassNotFoundException seaEnEfEx) {
//try the current classloader
try {
- o = Class.forName(classname).newInstance();
+ o = Class.forName(classname).getDeclaredConstructor().newInstance();
} catch (final Exception ex) {
log(ex.toString(), MSG_ERR);
}
diff --git a/src/main/org/apache/tools/ant/filters/SortFilter.java b/src/main/org/apache/tools/ant/filters/SortFilter.java
index a027a5d..d1cb6fd 100644
--- a/src/main/org/apache/tools/ant/filters/SortFilter.java
+++ b/src/main/org/apache/tools/ant/filters/SortFilter.java
@@ -323,19 +323,17 @@ public final class SortFilter extends BaseParamFilterReader
String className = param.getValue();
@SuppressWarnings("unchecked")
final Comparator<? super String> comparatorInstance
- = (Comparator<? super String>) (Class.forName(className).newInstance());
+ = (Comparator<? super String>) (Class.forName(className).getDeclaredConstructor().newInstance());
setComparator(comparatorInstance);
- } catch (InstantiationException | ClassNotFoundException | IllegalAccessException e) {
- /*
- * IAE probably means an inner non-static class, that case is not considered
- */
- throw new BuildException(e);
} catch (ClassCastException e) {
throw new BuildException("Value of comparator attribute"
+ " should implement"
+ " java.util.Comparator"
+ " interface");
} catch (Exception e) {
+ /*
+ * IAE probably means an inner non-static class, that case is not considered
+ */
throw new BuildException(e);
}
}
diff --git a/src/main/org/apache/tools/ant/launch/Launcher.java b/src/main/org/apache/tools/ant/launch/Launcher.java
index 1ff1b07..e10e713 100644
--- a/src/main/org/apache/tools/ant/launch/Launcher.java
+++ b/src/main/org/apache/tools/ant/launch/Launcher.java
@@ -280,7 +280,7 @@ public class Launcher {
Throwable thrown = null;
try {
mainClass = loader.loadClass(mainClassname).asSubclass(AntMain.class);
- final AntMain main = mainClass.newInstance();
+ final AntMain main = mainClass.getDeclaredConstructor().newInstance();
main.startAnt(newArgs, null, null);
} catch (final InstantiationException ex) {
System.err.println(
diff --git a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
index 4d8909b..5978ee0 100644
--- a/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
+++ b/src/main/org/apache/tools/ant/taskdefs/AntStructure.java
@@ -22,6 +22,7 @@ import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
+import java.lang.reflect.InvocationTargetException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.ArrayList;
@@ -318,7 +319,7 @@ public class AntStructure extends Task {
} else if (EnumeratedAttribute.class.isAssignableFrom(type)) {
try {
final EnumeratedAttribute ea =
- type.asSubclass(EnumeratedAttribute.class).newInstance();
+ type.asSubclass(EnumeratedAttribute.class).getDeclaredConstructor().newInstance();
final String[] values = ea.getValues();
if (values == null || values.length == 0
|| !areNmtokens(values)) {
@@ -326,7 +327,8 @@ public class AntStructure extends Task {
} else {
sb.append(Stream.of(values).collect(joinAlts)).append(" ");
}
- } catch (final InstantiationException | IllegalAccessException ie) {
+ } catch (final InstantiationException | IllegalAccessException
+ | NoSuchMethodException | InvocationTargetException ie) {
sb.append("CDATA ");
}
} else if (Enum.class.isAssignableFrom(type)) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/JDBCTask.java b/src/main/org/apache/tools/ant/taskdefs/JDBCTask.java
index a274d38..55e22f6 100644
--- a/src/main/org/apache/tools/ant/taskdefs/JDBCTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/JDBCTask.java
@@ -18,6 +18,7 @@
package org.apache.tools.ant.taskdefs;
+import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.Driver;
@@ -425,7 +426,7 @@ public abstract class JDBCTask extends Task {
Project.MSG_VERBOSE);
dc = Class.forName(driver).asSubclass(Driver.class);
}
- driverInstance = dc.newInstance();
+ driverInstance = dc.getDeclaredConstructor().newInstance();
} catch (ClassNotFoundException e) {
throw new BuildException(
"Class Not Found: JDBC driver " + driver + " could not be loaded",
@@ -436,9 +437,9 @@ public abstract class JDBCTask extends Task {
"Illegal Access: JDBC driver " + driver + " could not be loaded",
e,
getLocation());
- } catch (InstantiationException e) {
+ } catch (InstantiationException | NoSuchMethodException | InvocationTargetException e) {
throw new BuildException(
- "Instantiation Exception: JDBC driver " + driver + " could not be loaded",
+ e.getClass().getSimpleName() + ": JDBC driver " + driver + " could not be loaded",
e,
getLocation());
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/Tar.java b/src/main/org/apache/tools/ant/taskdefs/Tar.java
index 1c56a66..76446fd 100644
--- a/src/main/org/apache/tools/ant/taskdefs/Tar.java
+++ b/src/main/org/apache/tools/ant/taskdefs/Tar.java
@@ -1014,7 +1014,7 @@ public class Tar extends MatchingTask {
.asSubclass(OutputStream.class);
Constructor<? extends OutputStream> c =
sClazz.getConstructor(OutputStream.class, fClazz);
- return c.newInstance(ostream, oClazz.newInstance());
+ return c.newInstance(ostream, oClazz.getDeclaredConstructor().newInstance());
} catch (ClassNotFoundException ex) {
throw new BuildException("xz compression requires the XZ for Java library",
ex);
diff --git a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
index 145b04e..237f5d8 100644
--- a/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
+++ b/src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
@@ -702,7 +702,7 @@ public class XSLTProcess extends MatchingTask implements XSLTLogger {
} else {
//anything else is a classname
final Class<? extends XSLTLiaison> clazz = loadClass(proc).asSubclass(XSLTLiaison.class);
- liaison = clazz.newInstance();
+ liaison = clazz.getDeclaredConstructor().newInstance();
}
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java b/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java
index 590ec35..1d79ab8 100644
--- a/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java
+++ b/src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java
@@ -52,7 +52,7 @@ public class Javac13 extends DefaultCompilerAdapter {
// Use reflection to be able to build on all JDKs >= 1.1:
try {
Class<?> c = Class.forName("com.sun.tools.javac.Main");
- Object compiler = c.newInstance();
+ Object compiler = c.getDeclaredConstructor().newInstance();
Method compile = c.getMethod("compile", String[].class);
int result = (Integer) compile.invoke(compiler,
(Object) cmd.getArguments());
diff --git a/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java b/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java
index e052e7a..319c1dc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java
+++ b/src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java
@@ -151,7 +151,7 @@ public class MimeMailer extends Mailer {
try {
final Provider p =
Class.forName("com.sun.net.ssl.internal.ssl.Provider")
- .asSubclass(Provider.class).newInstance();
+ .asSubclass(Provider.class).getDeclaredConstructor().newInstance();
Security.addProvider(p);
} catch (final Exception e) {
throw new BuildException(
diff --git a/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java b/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java
index e199569..095ef39 100644
--- a/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java
+++ b/src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java
@@ -22,6 +22,7 @@ import static org.apache.tools.ant.MagicNames.ANT_VM_LAUNCHER_REF_ID;
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
import java.util.Optional;
import org.apache.tools.ant.Project;
@@ -173,10 +174,11 @@ public class CommandLauncher {
String launcherClass = System.getProperty(launcherRefId);
if (launcherClass != null) {
try {
- return Class.forName(launcherClass)
- .asSubclass(CommandLauncher.class).newInstance();
+ return Class.forName(launcherClass).asSubclass(CommandLauncher.class)
+ .getDeclaredConstructor().newInstance();
} catch (InstantiationException | IllegalAccessException
- | ClassNotFoundException e) {
+ | ClassNotFoundException
+ | NoSuchMethodException | InvocationTargetException e) {
System.err.println("Could not instantiate launcher class "
+ launcherClass + ": " + e.getMessage());
}
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 23db4b0..5b71ae5 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
@@ -332,7 +332,7 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware
Thread.currentThread()
.getContextClassLoader());
final XSLTTraceSupport ts =
- (XSLTTraceSupport) traceSupport.newInstance();
+ (XSLTTraceSupport) traceSupport.getDeclaredConstructor().newInstance();
ts.configureTrace(transformer, traceConfiguration);
} catch (final Exception e) {
final String msg = "Failed to enable tracing because of " + e;
@@ -400,7 +400,7 @@ public class TraXLiaison implements XSLTLiaison4, ErrorListener, XSLTLoggerAware
if (clazz == null) {
clazz = Class.forName(factoryName);
}
- tfactory = (TransformerFactory) clazz.newInstance();
+ tfactory = (TransformerFactory) clazz.getDeclaredConstructor().newInstance();
} catch (final Exception e) {
throw new BuildException(e);
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
index 2edabda..0358bdc 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
@@ -19,6 +19,7 @@ package org.apache.tools.ant.taskdefs.optional;
import java.io.File;
import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
import java.nio.file.Files;
import java.util.Vector;
@@ -392,8 +393,9 @@ public class XMLValidateTask extends Task {
readerClass = Class.forName(readerClassName);
}
- reader = readerClass.newInstance();
- } catch (ClassNotFoundException | IllegalAccessException | InstantiationException e) {
+ reader = readerClass.getDeclaredConstructor().newInstance();
+ } catch (ClassNotFoundException | IllegalAccessException | InstantiationException
+ | NoSuchMethodException | InvocationTargetException e) {
throw new BuildException(INIT_FAILED_MSG + readerClassName, e);
}
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
index 21e0882..3ae626e 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
@@ -276,9 +276,8 @@ public class GenericDeploymentTool implements EJBDeploymentTool {
try {
Class<? extends DependencyAnalyzer> analyzerClass =
- Class.forName(analyzerClassName)
- .asSubclass(DependencyAnalyzer.class);
- dependencyAnalyzer = analyzerClass.newInstance();
+ Class.forName(analyzerClassName).asSubclass(DependencyAnalyzer.class);
+ dependencyAnalyzer = analyzerClass.getDeclaredConstructor().newInstance();
dependencyAnalyzer.addClassPath(new Path(task.getProject(),
config.srcDir.getPath()));
dependencyAnalyzer.addClassPath(config.classpath);
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java
index dd2b34f..a894621 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java
@@ -105,7 +105,7 @@ public final class JspCompilerAdapterFactory {
throws BuildException {
try {
Class<? extends JspCompilerAdapter> c = classloader.findClass(className).asSubclass(JspCompilerAdapter.class);
- return c.newInstance();
+ return c.getDeclaredConstructor().newInstance();
} catch (ClassNotFoundException cnfe) {
throw new BuildException(className + " can't be found.", cnfe);
} catch (ClassCastException cce) {
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
index 98bd685..b64f5af 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
@@ -302,11 +302,11 @@ public class FormatterElement {
JUnitResultFormatterMirror r;
try {
- r = f.asSubclass(JUnitResultFormatterMirror.class).newInstance();
+ r = f.asSubclass(JUnitResultFormatterMirror.class).getDeclaredConstructor().newInstance();
} catch (ClassCastException e) {
- throw new BuildException("%s is not a JUnitResultFormatter",
- classname);
- } catch (InstantiationException | IllegalAccessException e) {
+ throw new BuildException("%s is not a JUnitResultFormatter", classname);
+ } catch (InstantiationException | IllegalAccessException
+ | NoSuchMethodException | InvocationTargetException e) {
throw new BuildException(e);
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.java b/src/main/org/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.java
index afc02b3..8a84cbd 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.java
@@ -137,7 +137,7 @@ public class TearDownOnVmCrash implements JUnitResultFormatter {
try {
Method td = testClass.getMethod("tearDown");
if (td.getReturnType() == Void.TYPE) {
- td.invoke(testClass.newInstance());
+ td.invoke(testClass.getDeclaredConstructor().newInstance());
}
} catch (NoSuchMethodException nsme) {
// no tearDown, fine
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LauncherSupport.java b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LauncherSupport.java
index 65ba96e..a5ce996 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LauncherSupport.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LauncherSupport.java
@@ -293,7 +293,7 @@ public class LauncherSupport {
throw new BuildException("Listener class " + className + " is not of type " + TestExecutionListener.class.getName());
}
try {
- return (TestExecutionListener) klass.newInstance();
+ return (TestExecutionListener) klass.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new BuildException("Failed to create an instance of listener " + className, e);
}
diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java b/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java
index 9f9f32f..5e062a3 100644
--- a/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java
+++ b/src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java
@@ -55,7 +55,7 @@ public final class SunNative2Ascii extends DefaultNative2Ascii {
try {
Class<?> n2aMain = Class.forName(SUN_TOOLS_NATIVE2ASCII_MAIN);
Method convert = n2aMain.getMethod("convert", String[].class);
- return Boolean.TRUE.equals(convert.invoke(n2aMain.newInstance(),
+ return Boolean.TRUE.equals(convert.invoke(n2aMain.getDeclaredConstructor().newInstance(),
(Object) cmd.getArguments()));
} catch (BuildException ex) {
//rethrow
diff --git a/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java b/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java
index 66bf98e..0d5332f 100644
--- a/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java
+++ b/src/main/org/apache/tools/ant/types/EnumeratedAttribute.java
@@ -75,7 +75,7 @@ public abstract class EnumeratedAttribute {
}
EnumeratedAttribute ea;
try {
- ea = clazz.newInstance();
+ ea = clazz.getDeclaredConstructor().newInstance();
} catch (Exception e) {
throw new BuildException(e);
}
diff --git a/src/main/org/apache/tools/ant/types/Mapper.java b/src/main/org/apache/tools/ant/types/Mapper.java
index 8c40ab9..46dfabf 100644
--- a/src/main/org/apache/tools/ant/types/Mapper.java
+++ b/src/main/org/apache/tools/ant/types/Mapper.java
@@ -231,7 +231,7 @@ public class Mapper extends DataType {
}
try {
- FileNameMapper m = getImplementationClass().newInstance();
+ FileNameMapper m = getImplementationClass().getDeclaredConstructor().newInstance();
final Project p = getProject();
if (p != null) {
p.setProjectReference(m);
diff --git a/src/main/org/apache/tools/ant/types/XMLCatalog.java b/src/main/org/apache/tools/ant/types/XMLCatalog.java
index d5bce33..92943fc 100644
--- a/src/main/org/apache/tools/ant/types/XMLCatalog.java
+++ b/src/main/org/apache/tools/ant/types/XMLCatalog.java
@@ -522,7 +522,7 @@ public class XMLCatalog extends DataType
// if it can see it - doesn't use the context loader.
clazz = Class.forName(APACHE_RESOLVER, true, baseResolverLoader);
- Object obj = clazz.newInstance();
+ Object obj = clazz.getDeclaredConstructor().newInstance();
//
// Success! The xml-commons resolver library is
// available, so use it.
diff --git a/src/main/org/apache/tools/ant/types/selectors/ExtendSelector.java b/src/main/org/apache/tools/ant/types/selectors/ExtendSelector.java
index 881f3e0..557f438 100644
--- a/src/main/org/apache/tools/ant/types/selectors/ExtendSelector.java
+++ b/src/main/org/apache/tools/ant/types/selectors/ExtendSelector.java
@@ -19,6 +19,7 @@
package org.apache.tools.ant.types.selectors;
import java.io.File;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -67,7 +68,7 @@ public class ExtendSelector extends BaseSelector {
= getProject().createClassLoader(classpath);
c = Class.forName(classname, true, al);
}
- dynselector = c.asSubclass(FileSelector.class).newInstance();
+ dynselector = c.asSubclass(FileSelector.class).getDeclaredConstructor().newInstance();
final Project p = getProject();
if (p != null) {
p.setProjectReference(dynselector);
@@ -75,7 +76,8 @@ public class ExtendSelector extends BaseSelector {
} catch (ClassNotFoundException cnfexcept) {
setError("Selector " + classname
+ " not initialized, no such class");
- } catch (InstantiationException iexcept) {
+ } catch (InstantiationException | NoSuchMethodException
+ | InvocationTargetException iexcept) {
setError("Selector " + classname
+ " not initialized, could not create class");
} catch (IllegalAccessException iaexcept) {
diff --git a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
index 34d2f40..80bf4a6 100644
--- a/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
+++ b/src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
@@ -407,7 +407,7 @@ public class ModifiedSelector extends BaseExtendSelector
clazz = Class.forName(classname);
}
- Object rv = clazz.newInstance();
+ Object rv = clazz.getDeclaredConstructor().newInstance();
if (!type.isInstance(rv)) {
throw new BuildException("Specified class (%s) %s", classname, msg);
diff --git a/src/main/org/apache/tools/ant/util/ClasspathUtils.java b/src/main/org/apache/tools/ant/util/ClasspathUtils.java
index 5016073..9e9b2dd 100644
--- a/src/main/org/apache/tools/ant/util/ClasspathUtils.java
+++ b/src/main/org/apache/tools/ant/util/ClasspathUtils.java
@@ -25,6 +25,8 @@ import org.apache.tools.ant.ProjectComponent;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
+import java.lang.reflect.InvocationTargetException;
+
// CheckStyle:HideUtilityClassConstructorCheck OFF - bc
/**
@@ -249,7 +251,7 @@ public class ClasspathUtils {
try {
@SuppressWarnings("unchecked")
Class<T> clazz = (Class<T>) Class.forName(className, true, userDefinedLoader);
- T o = clazz.newInstance();
+ T o = clazz.getDeclaredConstructor().newInstance();
if (!expectedType.isInstance(o)) {
throw new BuildException(
"Class of unexpected Type: %s expected : %s", className,
@@ -261,7 +263,7 @@ public class ClasspathUtils {
} catch (InstantiationException e) {
throw new BuildException("Could not instantiate " + className
+ ". Specified class should have a no " + "argument constructor.", e);
- } catch (IllegalAccessException e) {
+ } catch (IllegalAccessException | NoSuchMethodException | InvocationTargetException e) {
throw new BuildException("Could not instantiate " + className
+ ". Specified class should have a " + "public constructor.", e);
} catch (LinkageError e) {
diff --git a/src/main/org/apache/tools/ant/util/ScriptRunnerCreator.java b/src/main/org/apache/tools/ant/util/ScriptRunnerCreator.java
index a53be42..26bbd12 100644
--- a/src/main/org/apache/tools/ant/util/ScriptRunnerCreator.java
+++ b/src/main/org/apache/tools/ant/util/ScriptRunnerCreator.java
@@ -127,7 +127,7 @@ public class ScriptRunnerCreator {
}
try {
runner = (ScriptRunnerBase) Class.forName(
- runnerClass, true, scriptLoader).newInstance();
+ runnerClass, true, scriptLoader).getDeclaredConstructor().newInstance();
runner.setProject(project);
} catch (Exception ex) {
throw ReflectUtil.toBuildException(ex);
diff --git a/src/main/org/apache/tools/zip/ExtraFieldUtils.java b/src/main/org/apache/tools/zip/ExtraFieldUtils.java
index f024ab0..ab9a32e 100644
--- a/src/main/org/apache/tools/zip/ExtraFieldUtils.java
+++ b/src/main/org/apache/tools/zip/ExtraFieldUtils.java
@@ -18,6 +18,7 @@
package org.apache.tools.zip;
+import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
@@ -60,7 +61,7 @@ public class ExtraFieldUtils {
*/
public static void register(Class<?> c) {
try {
- ZipExtraField ze = (ZipExtraField) c.newInstance();
+ ZipExtraField ze = (ZipExtraField) c.getDeclaredConstructor().newInstance();
implementations.put(ze.getHeaderId(), c);
} catch (ClassCastException cc) {
throw new RuntimeException(c + " doesn't implement ZipExtraField"); //NOSONAR
@@ -68,6 +69,11 @@ public class ExtraFieldUtils {
throw new RuntimeException(c + " is not a concrete class"); //NOSONAR
} catch (IllegalAccessException ie) {
throw new RuntimeException(c + "'s no-arg constructor is not public"); //NOSONAR
+ } catch (NoSuchMethodException e) {
+ throw new RuntimeException(c + "'s no-arg constructor not found"); //NOSONAR
+ } catch (InvocationTargetException e) {
+ throw new RuntimeException(c + "'s no-arg constructor threw an exception:"
+ + e.getMessage()); //NOSONAR
}
}
@@ -84,7 +90,16 @@ public class ExtraFieldUtils {
throws InstantiationException, IllegalAccessException {
Class<?> c = implementations.get(headerId);
if (c != null) {
- return (ZipExtraField) c.newInstance();
+ // wrap extra exceptions to preserve method signature
+ try {
+ return (ZipExtraField) c.getDeclaredConstructor().newInstance();
+ } catch (InvocationTargetException e) {
+ throw (InstantiationException)
+ new InstantiationException().initCause(e.getTargetException());
+ } catch (NoSuchMethodException e) {
+ throw (InstantiationException)
+ new InstantiationException().initCause(e);
+ }
}
UnrecognizedExtraField u = new UnrecognizedExtraField();
u.setHeaderId(headerId);
diff --git a/src/tests/junit/org/apache/tools/ant/types/selectors/PosixGroupSelectorTest.java b/src/tests/junit/org/apache/tools/ant/types/selectors/PosixGroupSelectorTest.java
index 2297082..9c05f7e 100644
--- a/src/tests/junit/org/apache/tools/ant/types/selectors/PosixGroupSelectorTest.java
+++ b/src/tests/junit/org/apache/tools/ant/types/selectors/PosixGroupSelectorTest.java
@@ -71,7 +71,7 @@ public class PosixGroupSelectorTest {
@Test
public void posixGroupIsTrueForSelf() throws Exception {
long gid = (long) jaasProviderClass.getMethod(GROUP_GETTER)
- .invoke(jaasProviderClass.newInstance());
+ .invoke(jaasProviderClass.getDeclaredConstructor().newInstance());
File file = folder.newFile("f.txt");
Map<String, Object> fileAttributes = Files.readAttributes(file.toPath(),
@@ -87,7 +87,7 @@ public class PosixGroupSelectorTest {
@Test
public void posixGroupFollowSymlinks() throws Exception {
long gid = (long) jaasProviderClass.getMethod(GROUP_GETTER)
- .invoke(jaasProviderClass.newInstance());
+ .invoke(jaasProviderClass.getDeclaredConstructor().newInstance());
File target = new File(folder.getRoot(), "link");
Path symbolicLink = Files.createSymbolicLink(target.toPath(), TEST_FILE.toPath());