com.github.markusbernhardt.proxy.search.desktop.DesktopProxySearchStrategy Maven / Gradle / Ivy
package com.github.markusbernhardt.proxy.search.desktop;
import java.net.ProxySelector;
import com.github.markusbernhardt.proxy.ProxySearchStrategy;
import com.github.markusbernhardt.proxy.search.desktop.gnome.GnomeProxySearchStrategy;
import com.github.markusbernhardt.proxy.search.desktop.kde.KdeProxySearchStrategy;
import com.github.markusbernhardt.proxy.search.desktop.osx.OsxProxySearchStrategy;
import com.github.markusbernhardt.proxy.search.desktop.win.WinProxySearchStrategy;
import com.github.markusbernhardt.proxy.util.Logger;
import com.github.markusbernhardt.proxy.util.PlatformUtil;
import com.github.markusbernhardt.proxy.util.ProxyException;
import com.github.markusbernhardt.proxy.util.Logger.LogLevel;
import com.github.markusbernhardt.proxy.util.PlatformUtil.Desktop;
import com.github.markusbernhardt.proxy.util.PlatformUtil.Platform;
/*****************************************************************************
* This search provider will try to find out on which desktop platform we are
* running and then will initialize the default proxy search.
*
* @author Markus Bernhardt, Copyright 2016
* @author Bernd Rosstauscher, Copyright 2009
****************************************************************************/
public class DesktopProxySearchStrategy implements ProxySearchStrategy {
/*************************************************************************
* Gets the default ProxySelector for the current platform.
*
* @return a ProxySelector, null if none is found.
* @throws ProxyException
* on error.
************************************************************************/
@Override
public ProxySelector getProxySelector() throws ProxyException {
ProxySearchStrategy strategy = findDesktopSpecificStrategy();
return strategy == null ? null : strategy.getProxySelector();
}
/*************************************************************************
* Gets the printable name of the search strategy.
*
* @return the printable name of the search strategy
************************************************************************/
@Override
public String getName() {
return "desktop";
}
/*************************************************************************
* Determine the desktop and create a strategy for it.
*
* @return a desktop specific strategy, null if none was found.
************************************************************************/
private ProxySearchStrategy findDesktopSpecificStrategy() {
Platform pf = PlatformUtil.getCurrentPlattform();
Desktop dt = PlatformUtil.getCurrentDesktop();
Logger.log(getClass(), LogLevel.TRACE, "Detecting system settings.");
ProxySearchStrategy strategy = null;
if (pf == Platform.WIN) {
Logger.log(getClass(), LogLevel.TRACE, "We are running on Windows.");
strategy = new WinProxySearchStrategy();
} else if (dt == Desktop.KDE) {
Logger.log(getClass(), LogLevel.TRACE, "We are running on KDE.");
strategy = new KdeProxySearchStrategy();
} else if (dt == Desktop.GNOME) {
Logger.log(getClass(), LogLevel.TRACE, "We are running on Gnome.");
strategy = new GnomeProxySearchStrategy();
} else if (dt == Desktop.MAC_OS) {
Logger.log(getClass(), LogLevel.TRACE, "We are running on Mac OSX.");
strategy = new OsxProxySearchStrategy();
}
return strategy;
}
}