summaryrefslogtreecommitdiffstats
path: root/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java')
-rw-r--r--src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java23
1 files changed, 19 insertions, 4 deletions
diff --git a/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java b/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java
index 8a5a5d8..ca785f4 100644
--- a/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java
+++ b/src/main/java/com/btr/proxy/search/desktop/DesktopProxySearchStrategy.java
@@ -8,11 +8,11 @@ import com.btr.proxy.search.desktop.kde.KdeProxySearchStrategy;
import com.btr.proxy.search.desktop.osx.OsxProxySearchStrategy;
import com.btr.proxy.search.desktop.win.WinProxySearchStrategy;
import com.btr.proxy.util.Logger;
-import com.btr.proxy.util.PlatformUtil;
-import com.btr.proxy.util.ProxyException;
import com.btr.proxy.util.Logger.LogLevel;
+import com.btr.proxy.util.PlatformUtil;
import com.btr.proxy.util.PlatformUtil.Desktop;
import com.btr.proxy.util.PlatformUtil.Platform;
+import com.btr.proxy.util.ProxyException;
/*****************************************************************************
* This search provider will try to find out on which desktop platform we
@@ -22,6 +22,12 @@ import com.btr.proxy.util.PlatformUtil.Platform;
****************************************************************************/
public class DesktopProxySearchStrategy implements ProxySearchStrategy {
+
+ private static final Object lock = new Object();
+
+ private static ProxySelector selector = null;
+
+ private static long last = 0;
/*************************************************************************
* Gets the default ProxySelector for the current platform.
@@ -30,8 +36,17 @@ public class DesktopProxySearchStrategy implements ProxySearchStrategy {
************************************************************************/
public ProxySelector getProxySelector() throws ProxyException {
- ProxySearchStrategy strategy = findDesktopSpecificStrategy();
- return strategy == null? null : strategy.getProxySelector();
+ long now = System.currentTimeMillis();
+ synchronized (lock) {
+ if (last + 5000 < now)
+ return selector;
+ last = now;
+ ProxySearchStrategy strategy = findDesktopSpecificStrategy();
+ if (strategy == null)
+ return null;
+ selector = strategy.getProxySelector();
+ return selector;
+ }
}
/*************************************************************************