From c13b0b1fb9a4d9f984345e26c2d15e24203e8691 Mon Sep 17 00:00:00 2001 From: Simon Rettberg Date: Thu, 16 Jul 2015 13:46:30 +0200 Subject: Speed up things a bit, make WPAD guessing better --- src/main/java/com/btr/proxy/util/PlatformUtil.java | 40 ++++++++++++++-------- 1 file changed, 26 insertions(+), 14 deletions(-) (limited to 'src/main/java/com/btr/proxy/util/PlatformUtil.java') 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; } /************************************************************************* -- cgit v1.2.3-55-g7522