Package de.svws_nrw.davapi.api
Klasse AbstractDavRequestManager
java.lang.Object
de.svws_nrw.davapi.api.AbstractDavRequestManager
- Bekannte direkte Unterklassen:
CalDavRequestManager
,CardDavRequestManager
,DavRequestManager
Diese abstrakte Klasse dient als Grundlage für das einheitliche Verarbeiten von HTTP-Requests an
die DAV-API des SVWS-Servers.
-
Feldübersicht
FelderModifizierer und TypFeldBeschreibungprotected final @NotNull DBEntityManager
Die Datenbank-Verbindung, die von dem Request-Manager verwendet wirdprotected static final boolean
Debug Option, damit Requests nach Insomnia übertragen werden könnenprotected final com.fasterxml.jackson.databind.ObjectMapper
Der ObjectMapper für das Deserialisieren der XML-DatenURI-Parameter für die Erzeugung von URIs des Ergebnisobjektsprotected final byte[]
Der Input-Stream mit dem Body der Anfrage -
Konstruktorübersicht
KonstruktorenModifiziererKonstruktorBeschreibungprotected
AbstractDavRequestManager
(@NotNull DBEntityManager conn, InputStream is) Erstellt einen neuen Request-Manager, welcher die übergebene Datenbank-Verbindung nutzt. -
Methodenübersicht
Modifizierer und TypMethodeBeschreibungprotected String
adjustETags
(String value) 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
createResourceNotFoundError
(String message) 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 Benutzergetter für den Parameter 'adressbuchId', die Id der Ressource Adressbuchgetter für den Parameter 'adressbuchEintragId', die Id der Ressource AdressbuchEintraggetter für den Parameter 'schema', das Datenbankschema, gegen das Anfragen an das API ausgeführt werdenprotected 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
setParameterBenutzerId
(String benutzerId) setter für den Parameter 'benutzerId', die Id der Ressource Benutzervoid
setParameterResourceCollectionId
(String resourceCollectionId) setter für den Parameter 'adressbuchId', die Id der Ressource Adressbuchvoid
setParameterResourceId
(String resourceId) setter für den Parameter 'adressbuchEintragId', die Id der Ressource AdressbuchEintragvoid
setParameterSchema
(String schema) setter für den Parameter 'schema', das Datenbankschema, gegen das Anfragen an das API ausgeführt werden
-
Felddetails
-
LOG_REQUESTS
protected static final boolean LOG_REQUESTSDebug Option, damit Requests nach Insomnia übertragen werden können- Siehe auch:
-
mapper
protected final com.fasterxml.jackson.databind.ObjectMapper mapperDer ObjectMapper für das Deserialisieren der XML-Daten -
conn
Die Datenbank-Verbindung, die von dem Request-Manager verwendet wird -
requestBody
protected final byte[] requestBodyDer Input-Stream mit dem Body der Anfrage -
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 Datenbankverbindungis
- 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 Taskrequest
- die HTTP-Anfragemode
- der Server-Modekompetenzen
- die benötigten Kompetenzen- Gibt zurück:
- die HTTP-Response
-
buildResponse
Generiert eine HTTP-Response für das übergebene Antwort-Objekt. Dabei wird zwischen den Fällen unterschieden, dass es sich um eineMultistatus
-Antwort, eineError
-Antwort oder um eine fehlerhafte Anfrage handelt (alle anderen Fälle).- Parameter:
o
- das Objekt mit den Antwortdaten (Multistatus
oderError
)- 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
- dasEntityTag
- 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
- dasEntityTag
- Gibt zurück:
- die HTTP-Response
-
buildBadRequest
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
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
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
getter für den Parameter 'benutzerId', die Id der Ressource Benutzer- Gibt zurück:
- der Parameter für 'benutzerId'
-
setParameterBenutzerId
setter für den Parameter 'benutzerId', die Id der Ressource Benutzer- Parameter:
benutzerId
- der Parameter für 'benutzerId'
-
getParameterResourceCollectionId
getter für den Parameter 'adressbuchId', die Id der Ressource Adressbuch- Gibt zurück:
- der Parameter für 'adressbuchId'
-
setParameterResourceCollectionId
setter für den Parameter 'adressbuchId', die Id der Ressource Adressbuch- Parameter:
resourceCollectionId
- der Parameter für 'adressbuchId'
-
getParameterResourceId
getter für den Parameter 'adressbuchEintragId', die Id der Ressource AdressbuchEintrag- Gibt zurück:
- der Parameter für 'adressbuchEintragId'
-
setParameterResourceId
setter für den Parameter 'adressbuchEintragId', die Id der Ressource AdressbuchEintrag- Parameter:
resourceId
- der Parameter für 'adressbuchEintragId'
-
getRootUri
Gibt die URI für DAV zurück.- Gibt zurück:
- die URI
-
getBenutzerUri
Gibt die URI für den Benutzer zurück.- Gibt zurück:
- die URI
-
getKalenderUri
Gibt die URI für den Kalender zurück.- Gibt zurück:
- die URI
-
getKalenderResourceCollectionUri
Gibt die URI für eine Kalender-Resource-Collection zurück.- Gibt zurück:
- die URI
-
getKalenderResourceUri
Gibt die URI für eine Kalender-Resource zurück.- Gibt zurück:
- die URI
-
getCardDavUri
Gibt die URI für die Adressbücher zurück.- Gibt zurück:
- die URI
-
getCardDavResourceCollectionUri
Gibt die URI für eine Kalender-Resource-Collection zurück.- Gibt zurück:
- die URI
-
getCardDavResourceUri
Gibt die URI für eine Kalender-Resource zurück.- Gibt zurück:
- die URI
-
createResourceNotFoundError
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 RessourcepropResponded
- Gefundene/Ermittelte Properties zu einer Ressourceuri
- die Uri für das href-Feld der XML-Response- Gibt zurück:
- Response-Objekt
-
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 darfdarfSchreiben
- ob der angemeldete Nutzer auf dem Kalender schreiben darf- Gibt zurück:
- CurrentUserPrivilegeSet mit Privileges für einen lesenden Zugriff.
-
adjustETags
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
-