FS: Overload detect() with no arguments

This allows callers to perform the logic that constructed the
current FS.DETECTED value.

Change-Id: Id8517d131dcc3f675c60b2d935730872695ed1b0
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
This commit is contained in:
Shawn O. Pearce 2011-03-14 09:06:16 -07:00
parent 9b941d0172
commit 2f705ad240
4 changed files with 18 additions and 14 deletions

View File

@ -53,7 +53,16 @@
/** Abstraction to support various file system operations not in Java. */
public abstract class FS {
/** The auto-detected implementation selected for this operating system and JRE. */
public static final FS DETECTED;
public static final FS DETECTED = detect();
/**
* Auto-detect the appropriate file system abstraction.
*
* @return detected file system abstraction
*/
public static FS detect() {
return detect(null);
}
/**
* Auto-detect the appropriate file system abstraction, taking into account
@ -77,24 +86,19 @@ public abstract class FS {
* @return detected file system abstraction
*/
public static FS detect(Boolean cygwinUsed) {
if (FS_Win32.detect()) {
boolean useCygwin = (cygwinUsed == null && FS_Win32_Cygwin.detect())
|| Boolean.TRUE.equals(cygwinUsed);
if (useCygwin)
if (FS_Win32.isWin32()) {
if (cygwinUsed == null)
cygwinUsed = Boolean.valueOf(FS_Win32_Cygwin.isCygwin());
if (cygwinUsed.booleanValue())
return new FS_Win32_Cygwin();
else
return new FS_Win32();
} else if (FS_POSIX_Java6.detect())
} else if (FS_POSIX_Java6.hasExecute())
return new FS_POSIX_Java6();
else
return new FS_POSIX_Java5();
}
static {
DETECTED = detect(null);
}
private final File userHome;
/**

View File

@ -59,7 +59,7 @@ class FS_POSIX_Java6 extends FS_POSIX {
setExecute = needMethod(File.class, "setExecutable", Boolean.TYPE);
}
static boolean detect() {
static boolean hasExecute() {
return canExecute != null && setExecute != null;
}

View File

@ -53,7 +53,7 @@
import java.util.List;
class FS_Win32 extends FS {
static boolean detect() {
static boolean isWin32() {
final String osDotName = AccessController
.doPrivileged(new PrivilegedAction<String>() {
public String run() {

View File

@ -53,7 +53,7 @@
class FS_Win32_Cygwin extends FS_Win32 {
private static String cygpath;
static boolean detect() {
static boolean isCygwin() {
final String path = AccessController
.doPrivileged(new PrivilegedAction<String>() {
public String run() {