diff options
author | Simon Rettberg | 2015-07-16 14:20:50 +0200 |
---|---|---|
committer | Simon Rettberg | 2015-07-16 14:20:50 +0200 |
commit | 2a078aff77c087f14c5ddaf805b37dd4debcbe1f (patch) | |
tree | 128cd34988dcda2e472e494dfff6b9516d24a206 | |
parent | [client] Resolve user ids to names in image list window. (diff) | |
download | tutor-module-2a078aff77c087f14c5ddaf805b37dd4debcbe1f.tar.gz tutor-module-2a078aff77c087f14c5ddaf805b37dd4debcbe1f.tar.xz tutor-module-2a078aff77c087f14c5ddaf805b37dd4debcbe1f.zip |
[client] Run proxy configurator asynchroneously
4 files changed, 39 insertions, 26 deletions
diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java index 6666d747..b4814e5a 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/App.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/App.java @@ -22,6 +22,8 @@ public class App { // Logger private final static Logger LOGGER = Logger.getLogger(App.class); + private static Thread proxyThread = null; + private static void setupLogger() { // path to the log file @@ -74,11 +76,8 @@ public class App { String s = event.getRenderedMessage(); if (s.contains("uthorization")) { Matcher m = re.matcher(s); - if (!m.find()) { - LOGGER.warn("Could not match pattern!"); - } else { + if (m.find()) { s = m.replaceAll("Authorization: ***********"); - LOGGER.info("Patched log message"); } } ffa.append(new LoggingEvent(event.getFQNOfLoggerClass(), event.getLogger(), @@ -104,11 +103,13 @@ public class App { setupLogger(); // Initialize the proxy settings - try { - ProxyConfigurator.init(); - } catch (IOException e) { - showAwtMessage("Could not detect proxy server automatically. No proxy server will be used", e); - } + proxyThread = new Thread() { + @Override + public void run() { + ProxyConfigurator.init(); + } + }; + proxyThread.start(); // Check if we can load SWT by calling some library function try { @@ -121,7 +122,7 @@ public class App { // setup global thrift connection error handler before anything else // Set master server to use (TODO: make configurable via command line) ThriftManager.setMasterServerAddress("bwlp-masterserver.ruf.uni-freiburg.de"); - + MainWindow.open(); // start the main window @@ -135,4 +136,14 @@ public class App { } new AwtBox(null, message); } + + public static synchronized void waitForInit() { + if (proxyThread == null) + return; + try { + proxyThread.join(); + } catch (InterruptedException e) { + } + proxyThread = null; + } } diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java index 2c50bc2e..10c7fb42 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java @@ -16,6 +16,7 @@ import org.eclipse.swt.widgets.Listener; import org.eclipse.swt.widgets.Menu; import org.eclipse.swt.widgets.MenuItem; import org.eclipse.swt.widgets.Shell; +import org.openslx.dozmod.App; import org.openslx.dozmod.Config; import org.openslx.dozmod.gui.Gui.GuiCallable; import org.openslx.dozmod.gui.helper.CompositePage; @@ -88,7 +89,6 @@ public abstract class MainWindow { Shell dialogShell = Gui.newShell(mainShell, style); // populate dialogShell dialogShell.setLayout(new GridLayout(1, false)); - LOGGER.debug(clazz.getDeclaredClasses()); Constructor<?> con = null; try { con = clazz.getConstructor(Shell.class); @@ -198,6 +198,12 @@ public abstract class MainWindow { mainShell.open(); // here we can check for Session information + if (Session.getSatelliteToken() != null) { + // Wait for proxy server init + App.waitForInit(); + // TODO: Try to resume session + } + // Session resume probably failed, show login window if (Session.getSatelliteToken() == null) { // User did not login, show the login mask openPopup(LoginWindow.class, true, true); diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java index c4a702d6..bbed4109 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java @@ -12,6 +12,7 @@ import org.eclipse.swt.events.SelectionAdapter; import org.eclipse.swt.events.SelectionEvent; import org.eclipse.swt.widgets.Shell; import org.openslx.bwlp.thrift.iface.Organization; +import org.openslx.dozmod.App; import org.openslx.dozmod.Config; import org.openslx.dozmod.authentication.Authenticator; import org.openslx.dozmod.authentication.Authenticator.AuthenticatorCallback; @@ -59,12 +60,15 @@ public class LoginWindow extends LoginWindowLayout { idpCombo.add("Initialisiere..."); idpCombo.select(0); idpCombo.setEnabled(false); + loginButton.setEnabled(false); QuickTimer.scheduleOnce(new Task() { List<Organization> orgs = null; @Override public void fire() { try { + // Wait for proxy server init + App.waitForInit(); orgs = OrganizationCache.getAll(); } catch (Exception e) { LoginWindow.LOGGER.error("Error during execution: ", e); @@ -75,6 +79,7 @@ public class LoginWindow extends LoginWindowLayout { @Override public void run() { populateIdpCombo(orgs); + loginButton.setEnabled(true); } }); } @@ -200,7 +205,6 @@ public class LoginWindow extends LoginWindowLayout { for (Organization o : orgs) { if (o.getEcpUrl() == null | o.getEcpUrl().isEmpty()) continue; - LOGGER.debug("Adding: " + o.toString()); idpCombo.add(o.displayName); idpCombo.setData(o.displayName, o); if (savedOrganizationId != null && !savedOrganizationId.isEmpty() diff --git a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ProxyConfigurator.java b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ProxyConfigurator.java index 7ece2088..9a97181b 100644 --- a/dozentenmodul/src/main/java/org/openslx/dozmod/util/ProxyConfigurator.java +++ b/dozentenmodul/src/main/java/org/openslx/dozmod/util/ProxyConfigurator.java @@ -1,6 +1,5 @@ package org.openslx.dozmod.util; -import java.io.IOException; import java.net.ProxySelector; import java.text.MessageFormat; @@ -10,7 +9,6 @@ import org.apache.log4j.Priority; import com.btr.proxy.search.ProxySearch; import com.btr.proxy.search.wpad.WpadProxySearchStrategy; -import com.btr.proxy.util.ProxyException; import com.btr.proxy.util.Logger.LogBackEnd; import com.btr.proxy.util.Logger.LogLevel; @@ -30,26 +28,24 @@ public class ProxyConfigurator { /** * Initialization method. */ - public static void init() throws IOException { + public static void init() { // first setup the logger of proxy_vole com.btr.proxy.util.Logger.setBackend(new LogBackEnd() { - @SuppressWarnings("deprecation") - public void log(Class<?> clazz, LogLevel loglevel, String msg, - Object... params) { + public void log(Class<?> clazz, LogLevel loglevel, String msg, Object... params) { Priority priority; switch (loglevel) { case ERROR: priority = Level.ERROR; break; case WARNING: - priority = Priority.WARN; + priority = Level.WARN; break; case INFO: - priority = Priority.INFO; + priority = Level.INFO; break; default: - priority = Priority.DEBUG; + priority = Level.DEBUG; } Logger.getLogger(clazz).log(priority, MessageFormat.format(msg, params)); } @@ -67,11 +63,7 @@ public class ProxyConfigurator { // didn't work, try WPAD detection LOGGER.error("No suitable proxy settings found, trying WPAD..."); WpadProxySearchStrategy ss = new WpadProxySearchStrategy(); - try { - myProxySelector = ss.getProxySelector(); - } catch (ProxyException e) { - LOGGER.error("WPAD proxy error, see trace: ", e); - } + myProxySelector = ss.getProxySelector(); } // final check to see if WPAD actually worked if (myProxySelector != null) { |