summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Rettberg2015-07-16 14:20:50 +0200
committerSimon Rettberg2015-07-16 14:20:50 +0200
commit2a078aff77c087f14c5ddaf805b37dd4debcbe1f (patch)
tree128cd34988dcda2e472e494dfff6b9516d24a206
parent[client] Resolve user ids to names in image list window. (diff)
downloadtutor-module-2a078aff77c087f14c5ddaf805b37dd4debcbe1f.tar.gz
tutor-module-2a078aff77c087f14c5ddaf805b37dd4debcbe1f.tar.xz
tutor-module-2a078aff77c087f14c5ddaf805b37dd4debcbe1f.zip
[client] Run proxy configurator asynchroneously
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/App.java31
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/MainWindow.java8
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/gui/window/LoginWindow.java6
-rw-r--r--dozentenmodul/src/main/java/org/openslx/dozmod/util/ProxyConfigurator.java20
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) {