public void onModuleLoad() {
        // This is required for Gwt-Platform proxy's generator.
        DelayedBindRegistry.bind(ginjector);

//        GWT.setUncaughtExceptionHandler(e -> {
//            GWT.log(e.getClass().getName());
//
//            final StringBuilder stringBuilder = new StringBuilder();
//            appendStackTraces(e, stringBuilder);
////            final String stack;
////            if (e.getCause() != null && e.getCause().getStackTrace() != null) {
////                stack = appendStackTraces(e.getCause().getStackTrace());
////            } else if (e.getStackTrace() != null) {
////                stack = appendStackTraces(e.getStackTrace());
////            } else {
////                stack = "";
////            }
//
//            Window.alert("ERROR: " + stringBuilder);
//        });

        final String path = Window.Location.getPath();
        GWT.log("path: " + path + ", queryString: " + Window.Location.getQueryString());
        if (path.startsWith("/signIn")) {
            final String error = Location.getParameter("error");
            if ("login_required".equals(error)) {
                ginjector.getLoginPresenter().get().forceReveal();
            } else {
                ginjector.getAuthenticationErrorPresenter().get().forceReveal();
            }
        } else {
            final UserPreferencesManager userPreferencesManager = ginjector.getPreferencesManager();
            userPreferencesManager.fetch(preferences -> {
                userPreferencesManager.setCurrentPreferences(preferences);

                // Show the application panel.
                ginjector.getCorePresenter().get().forceReveal();

                // Register all plugins that will respond to

                // Start the login manager. This will attempt to auto login with PKI and
                // will therefore start the rest of the application.
                ginjector.getLoginManager().fetchUserAndPermissions();

                // Remember how places were used in case we want to use URLs and history
                // at some point.
                // ginjector.getPlaceManager().revealCurrentPlace();
            }, new QuietTaskMonitorFactory());
        }
    }
This is the entry point method.
stroom-app-gwt/src/main/java/stroom/app/client/App.java