Add FS.detect() for detection of file system abstraction.
To give the user more control on which file system abstraction should be used on Windows, FS.detect() may be configured to assume a Cygwin installation or nor.
This commit is contained in:
parent
6a05904e53
commit
a46abab244
|
@ -52,16 +52,44 @@ public abstract class FS {
|
||||||
/** The auto-detected implementation selected for this operating system and JRE. */
|
/** The auto-detected implementation selected for this operating system and JRE. */
|
||||||
public static final FS DETECTED;
|
public static final FS DETECTED;
|
||||||
|
|
||||||
static {
|
/**
|
||||||
|
* Auto-detect the appropriate file system abstraction, taking into account
|
||||||
|
* the presence of a Cygwin installation on the system. Using jgit in
|
||||||
|
* combination with Cygwin requires a more elaborate (and possibly slower)
|
||||||
|
* resolution of file system paths.
|
||||||
|
*
|
||||||
|
* @param cygwinUsed
|
||||||
|
* <ul>
|
||||||
|
* <li><code>Boolean.TRUE</code> to assume that Cygwin is used in
|
||||||
|
* combination with jgit</li>
|
||||||
|
* <li><code>Boolean.FALSE</code> to assume that Cygwin is
|
||||||
|
* <b>not</b> used with jgit</li>
|
||||||
|
* <li><code>null</code> to auto-detect whether a Cygwin
|
||||||
|
* installation is present on the system and in this case assume
|
||||||
|
* that Cygwin is used</li>
|
||||||
|
* </ul>
|
||||||
|
*
|
||||||
|
* Note: this parameter is only relevant on Windows.
|
||||||
|
*
|
||||||
|
* @return detected file system abstraction
|
||||||
|
*/
|
||||||
|
public static FS detect(Boolean cygwinUsed) {
|
||||||
if (FS_Win32.detect()) {
|
if (FS_Win32.detect()) {
|
||||||
if (FS_Win32_Cygwin.detect())
|
boolean useCygwin = (cygwinUsed == null && FS_Win32_Cygwin.detect())
|
||||||
DETECTED = new FS_Win32_Cygwin();
|
|| Boolean.TRUE.equals(cygwinUsed);
|
||||||
|
|
||||||
|
if (useCygwin)
|
||||||
|
return new FS_Win32_Cygwin();
|
||||||
else
|
else
|
||||||
DETECTED = new FS_Win32();
|
return new FS_Win32();
|
||||||
} else if (FS_POSIX_Java6.detect())
|
} else if (FS_POSIX_Java6.detect())
|
||||||
DETECTED = new FS_POSIX_Java6();
|
return new FS_POSIX_Java6();
|
||||||
else
|
else
|
||||||
DETECTED = new FS_POSIX_Java5();
|
return new FS_POSIX_Java5();
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
DETECTED = detect(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
private final File userHome;
|
private final File userHome;
|
||||||
|
|
Loading…
Reference in New Issue