Browse Source

Merge pull request #133 from twogee/new-instance

Class.newInstance() is deprecated in Java 9+
master
Stefan Bodewig GitHub 4 years ago
parent
commit
35d9f3bc9a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
28 changed files with 76 additions and 52 deletions
  1. +3
    -2
      src/main/org/apache/tools/ant/IntrospectionHelper.java
  2. +3
    -3
      src/main/org/apache/tools/ant/Project.java
  3. +4
    -6
      src/main/org/apache/tools/ant/filters/SortFilter.java
  4. +1
    -1
      src/main/org/apache/tools/ant/launch/Launcher.java
  5. +4
    -2
      src/main/org/apache/tools/ant/taskdefs/AntStructure.java
  6. +4
    -3
      src/main/org/apache/tools/ant/taskdefs/JDBCTask.java
  7. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/Tar.java
  8. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java
  9. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java
  10. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java
  11. +5
    -3
      src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java
  12. +2
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java
  13. +4
    -2
      src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java
  14. +2
    -3
      src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java
  15. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java
  16. +4
    -4
      src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java
  17. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.java
  18. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LauncherSupport.java
  19. +1
    -1
      src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java
  20. +1
    -1
      src/main/org/apache/tools/ant/types/EnumeratedAttribute.java
  21. +1
    -1
      src/main/org/apache/tools/ant/types/Mapper.java
  22. +1
    -1
      src/main/org/apache/tools/ant/types/XMLCatalog.java
  23. +4
    -2
      src/main/org/apache/tools/ant/types/selectors/ExtendSelector.java
  24. +1
    -1
      src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java
  25. +4
    -2
      src/main/org/apache/tools/ant/util/ClasspathUtils.java
  26. +1
    -1
      src/main/org/apache/tools/ant/util/ScriptRunnerCreator.java
  27. +17
    -2
      src/main/org/apache/tools/zip/ExtraFieldUtils.java
  28. +2
    -2
      src/tests/junit/org/apache/tools/ant/types/selectors/PosixGroupSelectorTest.java

+ 3
- 2
src/main/org/apache/tools/ant/IntrospectionHelper.java View File

@@ -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);
}
}


+ 3
- 3
src/main/org/apache/tools/ant/Project.java View File

@@ -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);
}


+ 4
- 6
src/main/org/apache/tools/ant/filters/SortFilter.java View File

@@ -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);
}
}


+ 1
- 1
src/main/org/apache/tools/ant/launch/Launcher.java View File

@@ -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(


+ 4
- 2
src/main/org/apache/tools/ant/taskdefs/AntStructure.java View File

@@ -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)) {


+ 4
- 3
src/main/org/apache/tools/ant/taskdefs/JDBCTask.java View File

@@ -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());
}


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/Tar.java View File

@@ -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);


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/XSLTProcess.java View File

@@ -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();
}
}



+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/compilers/Javac13.java View File

@@ -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());


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/email/MimeMailer.java View File

@@ -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(


+ 5
- 3
src/main/org/apache/tools/ant/taskdefs/launcher/CommandLauncher.java View File

@@ -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());
}


+ 2
- 2
src/main/org/apache/tools/ant/taskdefs/optional/TraXLiaison.java View File

@@ -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);
}


+ 4
- 2
src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java View File

@@ -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);
}
}


+ 2
- 3
src/main/org/apache/tools/ant/taskdefs/optional/ejb/GenericDeploymentTool.java View File

@@ -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);


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/jsp/compilers/JspCompilerAdapterFactory.java View File

@@ -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) {


+ 4
- 4
src/main/org/apache/tools/ant/taskdefs/optional/junit/FormatterElement.java View File

@@ -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);
}



+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/junit/TearDownOnVmCrash.java View File

@@ -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


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/junitlauncher/LauncherSupport.java View File

@@ -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);
}


+ 1
- 1
src/main/org/apache/tools/ant/taskdefs/optional/native2ascii/SunNative2Ascii.java View File

@@ -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


+ 1
- 1
src/main/org/apache/tools/ant/types/EnumeratedAttribute.java View File

@@ -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);
}


+ 1
- 1
src/main/org/apache/tools/ant/types/Mapper.java View File

@@ -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);


+ 1
- 1
src/main/org/apache/tools/ant/types/XMLCatalog.java View File

@@ -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.


+ 4
- 2
src/main/org/apache/tools/ant/types/selectors/ExtendSelector.java View File

@@ -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) {


+ 1
- 1
src/main/org/apache/tools/ant/types/selectors/modifiedselector/ModifiedSelector.java View File

@@ -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);


+ 4
- 2
src/main/org/apache/tools/ant/util/ClasspathUtils.java View File

@@ -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) {


+ 1
- 1
src/main/org/apache/tools/ant/util/ScriptRunnerCreator.java View File

@@ -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);


+ 17
- 2
src/main/org/apache/tools/zip/ExtraFieldUtils.java View File

@@ -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);


+ 2
- 2
src/tests/junit/org/apache/tools/ant/types/selectors/PosixGroupSelectorTest.java View File

@@ -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());


Loading…
Cancel
Save