Changes for page Basisprojekt
Last modified by mgrawunder on 2025/09/09 08:42
From 38.2 to 38.1
From 39.1 to 38.5
From version 38.5
edited by mgrawunder
on 2025/09/03 10:53
on 2025/09/03 10:53
Change comment:
There is no comment for this version
To version 38.2
edited by mgrawunder
on 2025/09/03 10:18
on 2025/09/03 10:18
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 8 removed)
Details
- Page properties
-
- Content
-
... ... @@ -192,76 +192,5 @@ 192 192 [[image:1756887488020-376.png||height="642" width="904"]] 193 193 194 194 195 -Jetzt kann man entweder in IntelliJ 196 196 197 -[[image:1756888245896-845.png||height="347" width="620"]] 198 - 199 -oder im Terminal (z.B. auch in IntelliJ) 200 - 201 -[[image:1756888279902-777.png||height="637" width="1053"]] 202 - 203 -Wobei hier auch clean compile reichen würde. 204 - 205 -**ACHTUNG! Falls maven Problem macht, kann das auch an einer falschen Java-Version im System liegen (siehe auch [[FAQ>>doc:.Basisprojekt FAQ.WebHome]])** 206 - 207 -Es werden durch den Aufruf neue Inhalte generiert (bzw. die alten überschrieben). 208 - 209 -[[image:1756888428042-802.png||height="538" width="1077"]] 210 - 211 -Hinweis: Niemals Änderungen unterhalb des target-Ordners machen. Das wird von Maven bei clean gelöscht. 212 - 213 -=== Wie bekommt man dann aber nun die Funktionalität rein? === 214 - 215 -Für jeden Endpunkt (also aktuell lobbies und users) werden drei Interfaces/Klassen erzeugt: 216 - 217 -* *Api (z.B, LobbiesApi): Beschreibung der REST-Methoden, vor allem auch das Mapping von z.B. /lobbies/join auf die Methode lobbyJoin(String) 218 -* ((( 219 -*ApiController implements *Api (Für Spring) (z.B. LobbiesApiController) 220 -))) 221 -* ((( 222 -*ApiDelegate (z.B. LobbiesApiDelegate): Macht die eigentliche Arbeit und muss** im eigenen Code-Bereich** erweitert werden! 223 -))) 224 - 225 - 226 - 227 -== Schritt 2: Erweiterung auf Server-Seite == 228 - 229 -Da es schon Funktionen für die Lobbies gibt, gibt es auch bereits eine Implementierung, die LobbiesApiDelegate überschreibt 230 - 231 -[[image:1756888762381-912.png||height="48" width="789"]] 232 - 233 -Wenn man einen neuen Endpunkt definiert, muss man auch einen neuen Service definieren. (Hinweis: Der Service muss eine Spring Komponenten sein, damit sie in den Spring Context aufgenommen wird). 234 - 235 -In der Klasse muss man dann die neue Methode lobbyList aus der API überschreiben. 236 - 237 -[[image:1756888929507-312.png||height="156" width="1161"]] 238 - 239 -Dabei wird folgendes gemacht: 240 - 241 -1. Es wird ein Rückgabeobjekt vom Typ Liste erzeugt 242 -1. Es wird über alles Lobbies auf dem Server gegangen (lobbyManagement.getLobbies()) 243 -1. Da der Client u.U. nicht die vollständigen Informationen über die Lobbies bekommen soll, gibt es zwei unterschiedliche Klassen: ServerLobby und LobbyDTO. 244 -1. Die Foreach-Schleife sorgt dafür, dass in das Rückgabeobjekt nur die LobbyDTOs eingefügt werden. 245 -1. Dafür wird eine Funktion mit dem Namen lobbyMapping verwendet 246 -1. Schließlich wird am Ende gesagt, dass alles ok ist und eine Antwort ResponseEntity.ok mit dem Rückgabeobjekt (lobbies) gesendet. 247 - 248 -**Anmerkung**: Das Basisprojekt ist aktuell so eingerichtet, dass Spring Exceptions auffängt und entsprechend an den Client leitet. Diese findet in der Klasse GlobalExceptionHandler statt 249 - 250 -Auf Server-Seite fehlt jetzt noch die Methode getLobbies im LobbyManagement 251 - 252 -[[image:1756889590500-656.png||height="81" width="518"]] 253 - 254 - 255 -=== LobbyMapping === 256 - 257 -Da man relativ oft Server-Objekt in DTO umwandeln muss gibt es im Basisprojekt MapStruct. Damit muss man nur die DTO-Klasse anlegen (i.d.R. über OpenAPI!!) 258 - 259 -Also z.B. 260 - 261 -[[image:1756889440395-856.png]] 262 - 263 -und definiert ein Interface mit einer Annotation 264 - 265 -[[image:1756889472103-847.png]] 266 - 267 -und damit kann man die Funktion aufrufen. Hinweis: Der Mapper ist im LobbyService über die Spring Dependency Injection gebunden. 196 +
- 1756888245896-845.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.mgrawunder - Size
-
... ... @@ -1,1 +1,0 @@ 1 -115.6 KB - Content
- 1756888279902-777.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.mgrawunder - Size
-
... ... @@ -1,1 +1,0 @@ 1 -518.9 KB - Content
- 1756888428042-802.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.mgrawunder - Size
-
... ... @@ -1,1 +1,0 @@ 1 -312.3 KB - Content
- 1756888762381-912.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.mgrawunder - Size
-
... ... @@ -1,1 +1,0 @@ 1 -3.4 KB - Content
- 1756888929507-312.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.mgrawunder - Size
-
... ... @@ -1,1 +1,0 @@ 1 -16.9 KB - Content
- 1756889440395-856.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.mgrawunder - Size
-
... ... @@ -1,1 +1,0 @@ 1 -55.9 KB - Content
- 1756889472103-847.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.mgrawunder - Size
-
... ... @@ -1,1 +1,0 @@ 1 -11.1 KB - Content
- 1756889590500-656.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.mgrawunder - Size
-
... ... @@ -1,1 +1,0 @@ 1 -4.8 KB - Content