Klasse AbstractDavRequestManager

java.lang.Object
de.svws_nrw.davapi.api.AbstractDavRequestManager
Bekannte direkte Unterklassen:
CalDavRequestManager, CardDavRequestManager, DavRequestManager

public abstract class AbstractDavRequestManager extends Object
Diese abstrakte Klasse dient als Grundlage für das einheitliche Verarbeiten von HTTP-Requests an die DAV-API des SVWS-Servers.
  • Feldübersicht

    Felder
    Modifizierer und Typ
    Feld
    Beschreibung
    protected final @NotNull DBEntityManager
    Die Datenbank-Verbindung, die von dem Request-Manager verwendet wird
    protected static final boolean
    Debug Option, damit Requests nach Insomnia übertragen werden können
    protected final com.fasterxml.jackson.databind.ObjectMapper
    Der ObjectMapper für das Deserialisieren der XML-Daten
    protected final @NotNull Map<String,String>
    URI-Parameter für die Erzeugung von URIs des Ergebnisobjekts
    protected final byte[]
    Der Input-Stream mit dem Body der Anfrage
  • Konstruktorübersicht

    Konstruktoren
    Modifizierer
    Konstruktor
    Beschreibung
    protected
    Erstellt einen neuen Request-Manager, welcher die übergebene Datenbank-Verbindung nutzt.
  • Methodenübersicht

    Modifizierer und Typ
    Methode
    Beschreibung
    protected String
    Homogenisiert eTag-Werte von unterschiedlichen Quellsystemen.
    protected static jakarta.ws.rs.core.Response
    Generiert ein HTTP-Response mit dem Statuscode 400 (Bad Request) und der Message aus der übergebenen Exception als Fehlermeldung.
    protected static jakarta.ws.rs.core.Response
    buildCreatedResponse(jakarta.ws.rs.core.EntityTag eTag)
    Generiert ein HTTP-Response mit dem Statuscode 201 (Created) und einem EntityTag-Header.
    protected static jakarta.ws.rs.core.Response
    Generiert ein HTTP-Response mit dem Statuscode 204 (No Content).
    protected static jakarta.ws.rs.core.Response
    buildNoContentResponse(jakarta.ws.rs.core.EntityTag eTag)
    Generiert ein HTTP-Response mit dem Statuscode 204 (No Content) und einem EntityTag-Header.
    static jakarta.ws.rs.core.Response
    Generiert eine HTTP-Response für das übergebene Antwort-Objekt.
    protected Error
    Erzeugt ein Error-Rückgabeobjekt mit der angegebenen Message.
    protected static final Response
    createResponse(@NotNull Prop propRequested, @NotNull Prop propResponded, @NotNull String uri)
    Erzeugt ein Response-Rückgabeobjekt.
    @NotNull String
    Gibt die URI für den Benutzer zurück.
    @NotNull String
    Gibt die URI für eine Kalender-Resource-Collection zurück.
    @NotNull String
    Gibt die URI für eine Kalender-Resource zurück.
    @NotNull String
    Gibt die URI für die Adressbücher zurück.
    @NotNull String
    Gibt die URI für eine Kalender-Resource-Collection zurück.
    @NotNull String
    Gibt die URI für eine Kalender-Resource zurück.
    @NotNull String
    Gibt die URI für den Kalender zurück.
    getter für den Parameter 'benutzerId', die Id der Ressource Benutzer
    getter für den Parameter 'adressbuchId', die Id der Ressource Adressbuch
    getter für den Parameter 'adressbuchEintragId', die Id der Ressource AdressbuchEintrag
    getter für den Parameter 'schema', das Datenbankschema, gegen das Anfragen an das API ausgeführt werden
    protected static final CurrentUserPrivilegeSet
    getPrivilegeSet(boolean darfLesen, boolean darfSchreiben)
    Erzeugt ein DAV-Objekt vom Typ CurrentUserPrivilegeSet, das alle erforderlichen Rechte (Privileges) für einen lesenden Zugriff auf DAV-Ressourcen enthält.
    protected static final CurrentUserPrivilegeSet
    Erzeugt ein DAV-Objekt vom Typ CurrentUserPrivilegeSet, das alle erforderlichen Rechte (Privileges) für einen lesenden Zugriff auf DAV-Ressourcen enthält.
    @NotNull String
    Gibt die URI für DAV zurück.
    static jakarta.ws.rs.core.Response
    handle(ThrowingFunction<DBEntityManager,jakarta.ws.rs.core.Response> task, jakarta.servlet.http.HttpServletRequest request, ServerMode mode, BenutzerKompetenz... kompetenzen)
    Führt den übergebenen Task für den übergebenen HTTP-Request im angegebenen Server-Mode und mit den übergebenen benötigten Benutzerkompetenzen aus, sofern dies erlaubt ist.
    void
    setter für den Parameter 'benutzerId', die Id der Ressource Benutzer
    void
    setter für den Parameter 'adressbuchId', die Id der Ressource Adressbuch
    void
    setter für den Parameter 'adressbuchEintragId', die Id der Ressource AdressbuchEintrag
    void
    setter für den Parameter 'schema', das Datenbankschema, gegen das Anfragen an das API ausgeführt werden

    Von Klasse geerbte Methoden java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Felddetails

    • LOG_REQUESTS

      protected static final boolean LOG_REQUESTS
      Debug Option, damit Requests nach Insomnia übertragen werden können
      Siehe auch:
    • mapper

      protected final com.fasterxml.jackson.databind.ObjectMapper mapper
      Der ObjectMapper für das Deserialisieren der XML-Daten
    • conn

      @NotNull protected final @NotNull DBEntityManager conn
      Die Datenbank-Verbindung, die von dem Request-Manager verwendet wird
    • requestBody

      protected final byte[] requestBody
      Der Input-Stream mit dem Body der Anfrage
    • params

      @NotNull protected final @NotNull Map<String,String> params
      URI-Parameter für die Erzeugung von URIs des Ergebnisobjekts
  • Konstruktordetails

    • AbstractDavRequestManager

      protected AbstractDavRequestManager(@NotNull @NotNull DBEntityManager conn, InputStream is) throws IOException
      Erstellt einen neuen Request-Manager, welcher die übergebene Datenbank-Verbindung nutzt.
      Parameter:
      conn - die Datenbankverbindung
      is - der Input-Stream mit dem Body der Anfrage
      Löst aus:
      IOException - wenn der Request-Body nicht gelesen werden kann
  • Methodendetails

    • handle

      public static jakarta.ws.rs.core.Response handle(ThrowingFunction<DBEntityManager,jakarta.ws.rs.core.Response> task, jakarta.servlet.http.HttpServletRequest request, ServerMode mode, BenutzerKompetenz... kompetenzen)
      Führt den übergebenen Task für den übergebenen HTTP-Request im angegebenen Server-Mode und mit den übergebenen benötigten Benutzerkompetenzen aus, sofern dies erlaubt ist.
      Parameter:
      task - der auszuführende Task
      request - die HTTP-Anfrage
      mode - der Server-Mode
      kompetenzen - die benötigten Kompetenzen
      Gibt zurück:
      die HTTP-Response
    • buildResponse

      public static jakarta.ws.rs.core.Response buildResponse(Object o)
      Generiert eine HTTP-Response für das übergebene Antwort-Objekt. Dabei wird zwischen den Fällen unterschieden, dass es sich um eine Multistatus-Antwort, eine Error-Antwort oder um eine fehlerhafte Anfrage handelt (alle anderen Fälle).
      Parameter:
      o - das Objekt mit den Antwortdaten (Multistatus oder Error)
      Gibt zurück:
      die HTTP-Response für das übergebene Objekt
    • buildCreatedResponse

      protected static jakarta.ws.rs.core.Response buildCreatedResponse(jakarta.ws.rs.core.EntityTag eTag)
      Generiert ein HTTP-Response mit dem Statuscode 201 (Created) und einem EntityTag-Header.
      Parameter:
      eTag - das EntityTag
      Gibt zurück:
      die HTTP-Response
    • buildNoContentResponse

      protected static jakarta.ws.rs.core.Response buildNoContentResponse()
      Generiert ein HTTP-Response mit dem Statuscode 204 (No Content).
      Gibt zurück:
      die HTTP-Response
    • buildNoContentResponse

      protected static jakarta.ws.rs.core.Response buildNoContentResponse(jakarta.ws.rs.core.EntityTag eTag)
      Generiert ein HTTP-Response mit dem Statuscode 204 (No Content) und einem EntityTag-Header.
      Parameter:
      eTag - das EntityTag
      Gibt zurück:
      die HTTP-Response
    • buildBadRequest

      protected static jakarta.ws.rs.core.Response buildBadRequest(Exception e)
      Generiert ein HTTP-Response mit dem Statuscode 400 (Bad Request) und der Message aus der übergebenen Exception als Fehlermeldung.
      Parameter:
      e - die Exception
      Gibt zurück:
      die HTTP-Response
    • getParameterSchema

      public String getParameterSchema()
      getter für den Parameter 'schema', das Datenbankschema, gegen das Anfragen an das API ausgeführt werden
      Gibt zurück:
      der Parameter für 'schema'
    • setParameterSchema

      public void setParameterSchema(String schema)
      setter für den Parameter 'schema', das Datenbankschema, gegen das Anfragen an das API ausgeführt werden
      Parameter:
      schema - der Parameter für 'schema'
    • getParameterBenutzerId

      public String getParameterBenutzerId()
      getter für den Parameter 'benutzerId', die Id der Ressource Benutzer
      Gibt zurück:
      der Parameter für 'benutzerId'
    • setParameterBenutzerId

      public void setParameterBenutzerId(String benutzerId)
      setter für den Parameter 'benutzerId', die Id der Ressource Benutzer
      Parameter:
      benutzerId - der Parameter für 'benutzerId'
    • getParameterResourceCollectionId

      public String getParameterResourceCollectionId()
      getter für den Parameter 'adressbuchId', die Id der Ressource Adressbuch
      Gibt zurück:
      der Parameter für 'adressbuchId'
    • setParameterResourceCollectionId

      public void setParameterResourceCollectionId(String resourceCollectionId)
      setter für den Parameter 'adressbuchId', die Id der Ressource Adressbuch
      Parameter:
      resourceCollectionId - der Parameter für 'adressbuchId'
    • getParameterResourceId

      public String getParameterResourceId()
      getter für den Parameter 'adressbuchEintragId', die Id der Ressource AdressbuchEintrag
      Gibt zurück:
      der Parameter für 'adressbuchEintragId'
    • setParameterResourceId

      public void setParameterResourceId(String resourceId)
      setter für den Parameter 'adressbuchEintragId', die Id der Ressource AdressbuchEintrag
      Parameter:
      resourceId - der Parameter für 'adressbuchEintragId'
    • getRootUri

      @NotNull public @NotNull String getRootUri()
      Gibt die URI für DAV zurück.
      Gibt zurück:
      die URI
    • getBenutzerUri

      @NotNull public @NotNull String getBenutzerUri()
      Gibt die URI für den Benutzer zurück.
      Gibt zurück:
      die URI
    • getKalenderUri

      @NotNull public @NotNull String getKalenderUri()
      Gibt die URI für den Kalender zurück.
      Gibt zurück:
      die URI
    • getKalenderResourceCollectionUri

      @NotNull public @NotNull String getKalenderResourceCollectionUri()
      Gibt die URI für eine Kalender-Resource-Collection zurück.
      Gibt zurück:
      die URI
    • getKalenderResourceUri

      @NotNull public @NotNull String getKalenderResourceUri()
      Gibt die URI für eine Kalender-Resource zurück.
      Gibt zurück:
      die URI
    • getCardDavUri

      @NotNull public @NotNull String getCardDavUri()
      Gibt die URI für die Adressbücher zurück.
      Gibt zurück:
      die URI
    • getCardDavResourceCollectionUri

      @NotNull public @NotNull String getCardDavResourceCollectionUri()
      Gibt die URI für eine Kalender-Resource-Collection zurück.
      Gibt zurück:
      die URI
    • getCardDavResourceUri

      @NotNull public @NotNull String getCardDavResourceUri()
      Gibt die URI für eine Kalender-Resource zurück.
      Gibt zurück:
      die URI
    • createResourceNotFoundError

      protected Error createResourceNotFoundError(String message)
      Erzeugt ein Error-Rückgabeobjekt mit der angegebenen Message. Dieses Objekt wird von den Dispatchern zurückgegeben, wenn die angefragten Ressource nicht gefunden wurde.
      Parameter:
      message - Fehlermeldung
      Gibt zurück:
      Error-Objekt
    • createResponse

      protected static final Response createResponse(@NotNull @NotNull Prop propRequested, @NotNull @NotNull Prop propResponded, @NotNull @NotNull String uri)
      Erzeugt ein Response-Rückgabeobjekt. Diese wird dynamisch aufgebaut auf der Basis der im Request angefragten Properties zu einer Ressource und den tatsächlich gefundenen/ermittelten Properties. Nicht-gefundene Properties oder Ressourcen werden in einem speziellen Block (404) im Response aufgelistet.
      Parameter:
      propRequested - Angeforderte Properties zu einer Ressource
      propResponded - Gefundene/Ermittelte Properties zu einer Ressource
      uri - die Uri für das href-Feld der XML-Response
      Gibt zurück:
      Response-Objekt
    • getReadOnlyPrivilegeSet

      protected static final CurrentUserPrivilegeSet getReadOnlyPrivilegeSet()
      Erzeugt ein DAV-Objekt vom Typ CurrentUserPrivilegeSet, das alle erforderlichen Rechte (Privileges) für einen lesenden Zugriff auf DAV-Ressourcen enthält.
      Gibt zurück:
      CurrentUserPrivilegeSet mit Privileges für einen lesenden Zugriff.
    • getPrivilegeSet

      protected static final CurrentUserPrivilegeSet getPrivilegeSet(boolean darfLesen, boolean darfSchreiben)
      Erzeugt ein DAV-Objekt vom Typ CurrentUserPrivilegeSet, das alle erforderlichen Rechte (Privileges) für einen lesenden Zugriff auf DAV-Ressourcen enthält.
      Parameter:
      darfLesen - ob der angemeldete Nutzer den Kalender Lesen darf
      darfSchreiben - ob der angemeldete Nutzer auf dem Kalender schreiben darf
      Gibt zurück:
      CurrentUserPrivilegeSet mit Privileges für einen lesenden Zugriff.
    • adjustETags

      protected String adjustETags(String value)
      Homogenisiert eTag-Werte von unterschiedlichen Quellsystemen. In Abhängigkeit der Quellsysteme (z.B. Thunderbird, Outlook) werden teilweise Anführungszeichen als Bestandteil der Werte von eTags oder ifMatch-Headers mitgesendet oder nicht. Die DAV-Dispatcher benötigen diese Methode, um eine einheitliche Auswertung dieser Werte sicherzustellen.
      Parameter:
      value - String, kann Anführungszeichen enthalten
      Gibt zurück:
      String, enthält keine Anführungszeichen mehr