Interface ApplicationCallback

  • All Known Implementing Classes:
    AbstractApplicationCallback, ApplicationCallbackConsole, ApplicationCallbackSWT

    public interface ApplicationCallback
    Dieses Interface beschreibt Funktionen, die von Jameica aufgerufen werden, um mit dem Benutzer zu interagieren.

    Dies betrifft Informationen, die den Jameica-Kern selbst betreffen und daher sowohl im Server- als auch im GUI- Mode abgefragt werden muessen.

    Klassisches Beispiel: Jameica legt beim Start ein Lock-File an, um sicherzustellen, dass die Anwendung nicht zweimal gleichzeitig gestartet wird. Existiert das Lock-File bereits, fragt Jameica den Benutzer, ob der Start dennoch durchgefuehrt werden soll.

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      java.lang.String askPassword​(java.lang.String question)
      Benoetigt Jameica ein Passwort, wird diese Funktion aufgerufen.
      boolean askUser​(java.lang.String question)
      Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
      boolean askUser​(java.lang.String question, boolean storeAnswer)
      Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
      java.lang.String askUser​(java.lang.String question, java.lang.String labeltext)
      Benoetigt Jameica eine Benutzereingabe (zum Beispiel zur Abfrage des Hostnamens) wird diese Funktion aufgerufen.
      boolean askUser​(java.lang.String question, java.lang.String[] variables)
      Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
      boolean askUser​(java.lang.String question, java.lang.String[] variables, boolean storeAnswer)
      Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
      void changePassword()
      Ueber diese Funktion kann das Passwort des Keystores geaendert werden.
      boolean checkHostname​(java.lang.String hostname, javax.security.cert.X509Certificate[] certs)
      Wird aufgerufen, wenn Jameica versucht, sich via HTTPS mit einem Server zu verbinden, dessen Hostname mit keinem der uebertragenen SSL-Zertifikate uebereinstimmt.
      boolean checkTrust​(java.security.cert.X509Certificate cert)
      Wird aufgerufen, wenn dem TrustManager von Jameica ein Zertifikat angeboten wird, dass er nicht in seinem Truststore hat.
      java.lang.String createPassword()
      Wird beim ersten Start von Jameica aufgerufen, um ein neues Master-Passwort festzulegen.
      java.lang.String getHostname()
      Liefert den Hostnamen des Systems.
      java.lang.String getPassword()
      Liefert das Master-Passwort der Jameica-Installation.
      java.lang.String getPassword​(LoginVerifier verifier)
      Liefert das Master-Passwort der Jameica-Installation.
      de.willuhn.util.ProgressMonitor getShutdownMonitor()
      Liefert einen Progress-Monitor ueber den der Fortschritt des System-Shutdown ausgegeben werden kann.
      de.willuhn.util.ProgressMonitor getStartupMonitor()
      Liefert einen Progress-Monitor ueber den der Fortschritt des System-Starts ausgegeben werden kann.
      java.lang.String getUsername()
      Liefert den eingegebenen Benutzernamen, insofern der Start im Masterpasswort-Dialog mit Benutzername erfolgte.
      boolean lockExists​(java.lang.String lockfile)
      Wird aufgerufen, wenn das Lock-File von Jameica beim Start bereits existiert.
      Login login​(JameicaAuthenticator authenticator)
      Fragt vom User ein Login ab.
      void notifyUser​(java.lang.String text)
      Kann benutzt werden, um z.Bsp.
      void startupError​(java.lang.String errorMessage, java.lang.Throwable t)
      Diese Funktion wird von Jameica aufgerufen, wenn der Start voellig fehlschlug.
    • Method Detail

      • lockExists

        boolean lockExists​(java.lang.String lockfile)
        Wird aufgerufen, wenn das Lock-File von Jameica beim Start bereits existiert. Es ist Sache der Implementierung, dies dem Benutzer darzulegen.
        Parameters:
        lockfile - Pfad und Dateiname des Lockfiles.
        Returns:
        true, wenn der Start von Jameica dennoch fortgesetzt werden soll. false, wenn der Start abgebrochen werden soll.
      • getUsername

        java.lang.String getUsername()
        Liefert den eingegebenen Benutzernamen, insofern der Start im Masterpasswort-Dialog mit Benutzername erfolgte.
        Returns:
        der eingegebene Username oder null.
      • createPassword

        java.lang.String createPassword()
                                 throws java.lang.Exception
        Wird beim ersten Start von Jameica aufgerufen, um ein neues Master-Passwort festzulegen.

        Es ist dabei der implementierenden Klasse ueberlassen, wie diese Abfrage aussieht. Sprich: Ob sie nun nur ein Eingabefeld zur Vergabe des Passwortes anzeigt oder zwei, wovon letzteres zur Passwort-Wiederholung (Vermeidung von Tippfehlern) dient, ist der Implementierung ueberlassen.

        Returns:
        das neu zu verwendende Passwort.
        Throws:
        java.lang.Exception
      • getPassword

        java.lang.String getPassword()
                              throws java.lang.Exception
        Liefert das Master-Passwort der Jameica-Installation.

        Es ist der implementierenden Klasse ueberlassen, das eingegebene Passwort ueber die Dauer der aktuellen Jameica-Sitzung zu cachen, um den Benutzer nicht dauernd mit der Neueingabe des Passwortes zu nerven.

        Returns:
        das existierende Passwort.
        Throws:
        java.lang.Exception
      • getPassword

        java.lang.String getPassword​(LoginVerifier verifier)
                              throws java.lang.Exception
        Liefert das Master-Passwort der Jameica-Installation.

        Es ist der implementierenden Klasse ueberlassen, das eingegebene Passwort ueber die Dauer der aktuellen Jameica-Sitzung zu cachen, um den Benutzer nicht dauernd mit der Neueingabe des Passwortes zu nerven.

        Parameters:
        verifier - optionaler Login-Verifier, der von der implementierenden Klasse verwendet werden kann, um das Passwort zu auf Korrektheit pruefen, bevor die Methode verlassen wird.
        Returns:
        das existierende Passwort.
        Throws:
        java.lang.Exception
      • changePassword

        void changePassword()
                     throws java.lang.Exception
        Ueber diese Funktion kann das Passwort des Keystores geaendert werden.

        Alles, was die implementierende Klasse zu tun hat, ist einen Dialog zur Passwort-Aenderung anzuzeigen und von nun an in der Funktion getPassword() das neue Passwort zu liefern.

        Nochmal: Es ist nicht Aufgabe des ApplicationCallbacks, das Passwort im System zu aendern, sondern lediglich das neue Passwort vom Benutzer abzufragen und es anschliessend ueber getPassword() zur Verfuegung zu stellen.

        Throws:
        java.lang.Exception
        See Also:
        getPassword(), getPassword(LoginVerifier)
      • getStartupMonitor

        de.willuhn.util.ProgressMonitor getStartupMonitor()
        Liefert einen Progress-Monitor ueber den der Fortschritt des System-Starts ausgegeben werden kann. Im GUI-Mode ist das ein Splash-Screen.
        Returns:
        ein Progress-Monitor.
      • getShutdownMonitor

        de.willuhn.util.ProgressMonitor getShutdownMonitor()
        Liefert einen Progress-Monitor ueber den der Fortschritt des System-Shutdown ausgegeben werden kann. Im GUI-Mode ist das ein Splash-Screen.
        Returns:
        ein Progress-Monitor.
      • startupError

        void startupError​(java.lang.String errorMessage,
                          java.lang.Throwable t)
        Diese Funktion wird von Jameica aufgerufen, wenn der Start voellig fehlschlug. Die implementierende Klasse muss diese Fehlermeldung dem Benutzer anzeigen. Anschliessend beendet sich Jameica.
        Parameters:
        errorMessage - die anzuzeigende Fehlermeldung.
        t - Ein ggf. existierender Fehler.
      • askUser

        java.lang.String askUser​(java.lang.String question,
                                 java.lang.String labeltext)
                          throws java.lang.Exception
        Benoetigt Jameica eine Benutzereingabe (zum Beispiel zur Abfrage des Hostnamens) wird diese Funktion aufgerufen.
        Parameters:
        question - Die anzuzeigende Frage.
        labeltext - Der Name des Attributes oder Feldes, welches eingegeben werden soll.
        Returns:
        der vom User eingegebene Text.
        Throws:
        java.lang.Exception
      • askPassword

        java.lang.String askPassword​(java.lang.String question)
                              throws java.lang.Exception
        Benoetigt Jameica ein Passwort, wird diese Funktion aufgerufen.
        Parameters:
        question - Die anzuzeigende Frage.
        Returns:
        der vom User eingegebene Text.
        Throws:
        java.lang.Exception
      • askUser

        boolean askUser​(java.lang.String question)
                 throws java.lang.Exception
        Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
        Parameters:
        question - Die anzuzeigende Frage.
        Returns:
        true fuer ja, false fuer nein.
        Throws:
        java.lang.Exception
      • askUser

        boolean askUser​(java.lang.String question,
                        java.lang.String[] variables)
                 throws java.lang.Exception
        Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.

        Hintergrund: Jameica speichert question als Key in einer Properties-Datei, falls der User die Option "Frage nicht mehr anzeigen" aktiviert hat. Enthaelt die Frage nun aber variablen Text, wuerde die selbe Frage immer wieder kommen - nur weil ein paar Variablen anders sind und somit der Key in der Properties-Datei nicht mehr uebereinstimmt. Daher kann man stattdessen diese Funktion hier verwenden. Im Text benutzt man (wie bei I18N.tr(String, String[])) die Platzhalter "{0}","{1}",... und uebergibt als String-Array die einzutragenden Variablen.

        Parameters:
        question - Die anzuzeigende Frage.
        variables - mittels MessageFormat einzutragende Variablen.
        Returns:
        true fuer ja, false fuer nein.
        Throws:
        java.lang.Exception
      • askUser

        boolean askUser​(java.lang.String question,
                        boolean storeAnswer)
                 throws java.lang.Exception
        Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.
        Parameters:
        question - Die anzuzeigende Frage.
        storeAnswer - true, wenn die Option "Diese Frage künftig nicht mehr anzeigen" angezeigt werden soll.
        Returns:
        true fuer ja, false fuer nein.
        Throws:
        java.lang.Exception
      • askUser

        boolean askUser​(java.lang.String question,
                        java.lang.String[] variables,
                        boolean storeAnswer)
                 throws java.lang.Exception
        Wird von Jameica aufgerufen, wenn der Benutzer eine Frage mit Ja/Nein beantworten soll.

        Hintergrund. Jameica speichert question als Key in einer Properties-Datei, falls der User die Option "Frage nicht mehr anzeigen" aktiviert hat. Enthaelt die Frage nun aber variablen Text, wuerde die selbe Frage immer wieder kommen - nur weil ein paar Variablen anders sind und somit der Key in der Properties-Datei nicht mehr uebereinstimmt. Daher kann man stattdessen diese Funktion hier verwenden. Im Text benutzt man (wie bei I18N.tr(String, String[])) die Platzhalter "{0}","{1}",... und uebergibt als String-Array die einzutragenden Variablen.

        Parameters:
        question - Die anzuzeigende Frage.
        variables - mittels MessageFormat einzutragende Variablen.
        storeAnswer - true, wenn die Option "Diese Frage künftig nicht mehr anzeigen" angezeigt werden soll.
        Returns:
        true fuer ja, false fuer nein.
        Throws:
        java.lang.Exception
      • notifyUser

        void notifyUser​(java.lang.String text)
                 throws java.lang.Exception
        Kann benutzt werden, um z.Bsp. eine wichtig Fehlermeldung anzuzeigen.
        Parameters:
        text - der anzuzeigende Text.
        Throws:
        java.lang.Exception
      • checkTrust

        boolean checkTrust​(java.security.cert.X509Certificate cert)
                    throws java.lang.Exception
        Wird aufgerufen, wenn dem TrustManager von Jameica ein Zertifikat angeboten wird, dass er nicht in seinem Truststore hat. Der Benutzer soll dann entscheiden, ob er dem Zertifikat vertraut.
        Parameters:
        cert - das dem Benutzer anzuzeigende Zertifikat.
        Returns:
        true, wenn der TrustManager das Zertifikate akzeptieren und zum Truststore hinzufuegen soll. Andernfalls false.
        Throws:
        java.lang.Exception
      • checkHostname

        boolean checkHostname​(java.lang.String hostname,
                              javax.security.cert.X509Certificate[] certs)
                       throws java.lang.Exception
        Wird aufgerufen, wenn Jameica versucht, sich via HTTPS mit einem Server zu verbinden, dessen Hostname mit keinem der uebertragenen SSL-Zertifikate uebereinstimmt. Der Benutzer soll dann entscheiden, ob der Hostname korrekt ist.
        Parameters:
        hostname - der Hostname des Servers.
        certs - die Zertifikate des Servers.
        Returns:
        true, wenn der Hostname akzeptiert werden soll, andernfalls false.
        Throws:
        java.lang.Exception
      • getHostname

        java.lang.String getHostname()
                              throws java.lang.Exception
        Liefert den Hostnamen des Systems.

        Dieser wird fuer die Erstellung des X.509-Zertifikats benoetigt.

        Die Funktion wirft nur dann eine Exception, wenn alle Stricke reissen - auch die manuelle Eingabe des Hostnamens durch den User.

        Returns:
        Hostname.
        Throws:
        java.lang.Exception
      • login

        Login login​(JameicaAuthenticator authenticator)
             throws java.lang.Exception
        Fragt vom User ein Login ab.
        Parameters:
        authenticator - der Authenticator. Er liefert Context-Infos zum abgefragten Login.
        Returns:
        das Login.
        Throws:
        java.lang.Exception