Merge pull request #5011 from chimp1984/show-stacktrace-in-error-popup-at-view-exceptions

Show stacktrace in error popup at view exceptions
This commit is contained in:
Christoph Atteneder 2020-12-29 19:58:01 +01:00 committed by GitHub
commit 115ec78f4d
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 24 additions and 5 deletions

View file

@ -51,6 +51,7 @@ import bisq.common.UserThread;
import bisq.common.app.DevEnv;
import bisq.common.app.Log;
import bisq.common.app.Version;
import bisq.common.config.BaseCurrencyNetwork;
import bisq.common.config.Config;
import bisq.common.util.InvalidVersionException;
import bisq.common.util.Utilities;
@ -273,7 +274,8 @@ public class BisqSetup {
public void start() {
// If user tried to downgrade we require a shutdown
if (hasDowngraded(downGradePreventionHandler)) {
if (Config.baseCurrencyNetwork() == BaseCurrencyNetwork.BTC_MAINNET &&
hasDowngraded(downGradePreventionHandler)) {
return;
}

View file

@ -23,9 +23,13 @@ import bisq.desktop.common.view.View;
import bisq.desktop.common.view.ViewFactory;
import bisq.desktop.common.view.ViewLoader;
import bisq.common.util.Utilities;
import javax.inject.Inject;
import javax.inject.Singleton;
import com.google.common.base.Joiner;
import javafx.fxml.FXMLLoader;
import java.net.URL;
@ -36,8 +40,11 @@ import java.util.ResourceBundle;
import java.lang.annotation.Annotation;
import lombok.extern.slf4j.Slf4j;
import static com.google.common.base.Preconditions.checkNotNull;
@Slf4j
@Singleton
public class FxmlViewLoader implements ViewLoader {
@ -107,7 +114,17 @@ public class FxmlViewLoader implements ViewLoader {
"does not implement [%s] as expected.", controller.getClass(), fxmlUrl, View.class);
return (View) controller;
} catch (IOException ex) {
throw new ViewfxException(ex, "Failed to load view from FXML file at [%s]", fxmlUrl);
Throwable cause = ex.getCause();
if (cause != null) {
cause.printStackTrace();
log.error(cause.toString());
// We want to show stackTrace in error popup
String stackTrace = Utilities.toTruncatedString(Joiner.on("\n").join(cause.getStackTrace()), 800, false);
throw new ViewfxException(cause, "%s at loading view class\nStack trace:\n%s",
cause.getClass().getSimpleName(), stackTrace);
} else {
throw new ViewfxException(ex, "Failed to load view from FXML file at [%s]", fxmlUrl);
}
}
}
@ -122,8 +139,7 @@ public class FxmlViewLoader implements ViewLoader {
}
try {
return annotationType.getDeclaredMethod(attributeName).getDefaultValue();
}
catch (Exception ex) {
} catch (Exception ex) {
return null;
}
}

View file

@ -21,11 +21,12 @@ import javax.inject.Inject;
import javax.inject.Singleton;
import java.util.HashMap;
import java.util.Map;
@Singleton
public class CachingViewLoader implements ViewLoader {
private final HashMap<Object, View> cache = new HashMap<>();
private final Map<Class<? extends View>, View> cache = new HashMap<>();
private final ViewLoader viewLoader;
@Inject