Support getPermissions() call on Gradle 8.6-milestone-1

The `getPermissions` method is now part of the private
`ParentDirectoryStub` class so we now need to call
`setAccessible(true)`.

Fixes gh-38718
This commit is contained in:
Phillip Webb 2023-12-11 20:35:06 -08:00
parent 52baf0003b
commit 39bc7c8582

View File

@ -22,6 +22,7 @@ import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.OutputStream; import java.io.OutputStream;
import java.io.OutputStreamWriter; import java.io.OutputStreamWriter;
import java.lang.reflect.Method;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.Collection; import java.util.Collection;
@ -462,7 +463,9 @@ class BootZipCopyAction implements CopyAction {
private int getPermissions(FileCopyDetails details) { private int getPermissions(FileCopyDetails details) {
if (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0) { if (GradleVersion.current().compareTo(GradleVersion.version("8.3")) >= 0) {
try { try {
Object permissions = details.getClass().getMethod("getPermissions").invoke(details); Method getPermissionsMethod = details.getClass().getMethod("getPermissions");
getPermissionsMethod.setAccessible(true);
Object permissions = getPermissionsMethod.invoke(details);
return (int) permissions.getClass().getMethod("toUnixNumeric").invoke(permissions); return (int) permissions.getClass().getMethod("toUnixNumeric").invoke(permissions);
} }
catch (Exception ex) { catch (Exception ex) {