Merge branch '2.7.x' into 3.0.x

This commit is contained in:
Andy Wilkinson 2023-10-13 21:37:44 +01:00
commit b1eb08faba

View File

@ -46,7 +46,6 @@ import org.gradle.api.internal.file.copy.CopyAction;
import org.gradle.api.internal.file.copy.CopyActionProcessingStream; import org.gradle.api.internal.file.copy.CopyActionProcessingStream;
import org.gradle.api.java.archives.Attributes; import org.gradle.api.java.archives.Attributes;
import org.gradle.api.java.archives.Manifest; import org.gradle.api.java.archives.Manifest;
import org.gradle.api.provider.Provider;
import org.gradle.api.specs.Spec; import org.gradle.api.specs.Spec;
import org.gradle.api.tasks.WorkResult; import org.gradle.api.tasks.WorkResult;
import org.gradle.api.tasks.WorkResults; import org.gradle.api.tasks.WorkResults;
@ -460,15 +459,11 @@ class BootZipCopyAction implements CopyAction {
: UnixStat.FILE_FLAG | getPermissions(details); : UnixStat.FILE_FLAG | getPermissions(details);
} }
@SuppressWarnings("unchecked")
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 = ((Provider<Object>) details.getClass() Object permissions = details.getClass().getMethod("getPermissions").invoke(details);
.getMethod("getPermissions") return (int) permissions.getClass().getMethod("toUnixNumeric").invoke(permissions);
.invoke(details)).get();
return ((Provider<Integer>) permissions.getClass().getMethod("toUnixNumeric").invoke(permissions))
.get();
} }
catch (Exception ex) { catch (Exception ex) {
throw new GradleException("Failed to get permissions", ex); throw new GradleException("Failed to get permissions", ex);