}
// Use the native-platform integration, if available
try {
PosixFiles posixFiles = net.rubygrapefruit.platform.Native.get(PosixFiles.class);
Symlink symlink = new NativePlatformBackedSymlink(posixFiles);
FileModeMutator chmod = new NativePlatformBackedChmod(posixFiles);
FileModeAccessor stat = new NativePlatformBackedStat(posixFiles);
return new GenericFileSystem(chmod, stat, symlink);
} catch (NativeIntegrationUnavailableException ex) {
LOGGER.debug("Native-platform file system integration is not available. Continuing with fallback.");
}
LOGGER.debug("Using UnsupportedSymlink implementation.");
Symlink symlink = new UnsupportedSymlink();
// Use java 7 APIs, if available, otherwise fallback to no-op
Object handler = newInstance("org.gradle.internal.nativeintegration.filesystem.jdk7.PosixJdk7FilePermissionHandler", UnsupportedFilePermissions.class);
return new GenericFileSystem((FileModeMutator) handler, (FileModeAccessor) handler, symlink);
}