summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/btr/proxy/util/PlatformUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/btr/proxy/util/PlatformUtil.java')
-rw-r--r--src/main/java/com/btr/proxy/util/PlatformUtil.java40
1 files changed, 26 insertions, 14 deletions
diff --git a/src/main/java/com/btr/proxy/util/PlatformUtil.java b/src/main/java/com/btr/proxy/util/PlatformUtil.java
index 39de5d2..52a25fd 100644
--- a/src/main/java/com/btr/proxy/util/PlatformUtil.java
+++ b/src/main/java/com/btr/proxy/util/PlatformUtil.java
@@ -14,33 +14,40 @@ public class PlatformUtil {
public enum Desktop {WIN, KDE, GNOME, MAC_OS, OTHER}
public enum Browser {IE, FIREFOX}
+ private static Platform platform = null;
+ private static Desktop desktop = null;
+
/*************************************************************************
* Gets the platform we are currently running on.
* @return a platform code.
************************************************************************/
- public static Platform getCurrentPlattform() {
+ public static synchronized Platform getCurrentPlattform() {
+ if (platform != null)
+ return platform;
String osName = System.getProperty("os.name");
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detecting platform. Name is: {0}", osName);
if (osName.toLowerCase().contains("windows")) {
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Windows platform: {0}", osName);
- return Platform.WIN;
+ platform = Platform.WIN;
}
if (osName.toLowerCase().contains("linux")) {
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Linux platform: {0}", osName);
- return Platform.LINUX;
+ platform = Platform.LINUX;
}
if (osName.startsWith("Mac OS")) {
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Mac OS platform: {0}", osName);
- return Platform.MAC_OS;
+ platform = Platform.MAC_OS;
}
if (osName.startsWith("SunOS")) {
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Solaris platform: {0}", osName);
- return Platform.SOLARIS;
+ platform = Platform.SOLARIS;
}
-
- return Platform.OTHER;
+ if (platform == null) {
+ platform = Platform.OTHER;
+ }
+ return platform;
}
/*************************************************************************
@@ -64,16 +71,18 @@ public class PlatformUtil {
* @return the desktop identifier.
************************************************************************/
- public static Desktop getCurrentDesktop() {
+ public static synchronized Desktop getCurrentDesktop() {
+ if (desktop != null)
+ return desktop;
Platform platf = getCurrentPlattform();
if (platf == Platform.WIN) {
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Windows desktop");
- return Desktop.WIN;
+ desktop = Desktop.WIN;
}
if (platf == Platform.MAC_OS) {
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Mac OS desktop");
- return Desktop.MAC_OS;
+ desktop = Desktop.MAC_OS;
}
if (platf == Platform.LINUX
@@ -82,15 +91,18 @@ public class PlatformUtil {
if (isKDE()) {
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected KDE desktop");
- return Desktop.KDE;
+ desktop = Desktop.KDE;
}
if (isGnome()) {
Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Gnome desktop");
- return Desktop.GNOME;
+ desktop = Desktop.GNOME;
}
}
- Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Unknown desktop");
- return Desktop.OTHER;
+ if (desktop == null) {
+ Logger.log(PlatformUtil.class, LogLevel.TRACE, "Detected Unknown desktop");
+ desktop = Desktop.OTHER;
+ }
+ return desktop;
}
/*************************************************************************