Changes for page Basisprojekt

Last modified by mgrawunder on 2025/09/09 08:42

edited by mgrawunder
on 2025/09/03 10:47
Change comment: There is no comment for this version
edited by mgrawunder
on 2025/09/03 11:01
Change comment: There is no comment for this version

Summary

Details

insert_drive_file Page properties
Content
... ... @@ -246,3 +246,48 @@
246 246  1. Schließlich wird am Ende gesagt, dass alles ok ist und eine Antwort ResponseEntity.ok mit dem Rückgabeobjekt (lobbies) gesendet.
247 247  
248 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.
268 +
269 +== Schritt 3: Erweiterung auf Client-Seite (Java) ==
270 +
271 +Hinweis: Das Beispiel bezieht sich hier auf eine Client mit Java. Für andere Clients wie Angular ist das Vorgehen anders.
272 +
273 +Auf der Client-Seite wird die komplette Kommunikation mit dem Server in der generierten Klasse DefaultApi gekapselt.
274 +
275 +[[image:1756889795622-530.png]]
276 +
277 +Dort gibt es eine neue Methode lobbyList. Die sorgt dafür, dass der REST-Aufruf auf die Server-Seite geht und liefert das passende Objekt List<LobbyDTO> zurück
278 +
279 +Im Client gibt es auch eine Klasse LobbyService. Dort ist die DefaultApi Klasse über Dependency Injection gebunden.
280 +
281 +[[image:1756889917681-650.png]]
282 +
283 +Dort kann man nun eine neue Methode getLobbies() integrieren:
284 +
285 +[[image:1756889979252-910.png]]
286 +
287 +Und das Ganze dann z.B. im MainMenuPresenter verwenden:
288 +
289 +[[image:1756890010118-149.png||height="116" width="972"]]
290 +
291 +Anmerkung: Obwohl DefaultApi alle Funktionen zum Server kapselt, sollte man im Client spezifische Services für bestimmte Bereich haben, die diese Klasse verwenden.  Das führt zu einer besseren Trennung von Funktionalitäten im Code.
292 +
293 +
attach_file 1756889440395-856.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.mgrawunder
Size
... ... @@ -1,0 +1,1 @@
1 +55.9 KB
Content info
attach_file 1756889472103-847.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.mgrawunder
Size
... ... @@ -1,0 +1,1 @@
1 +11.1 KB
Content info
attach_file 1756889590500-656.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.mgrawunder
Size
... ... @@ -1,0 +1,1 @@
1 +4.8 KB
Content info
attach_file 1756889795622-530.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.mgrawunder
Size
... ... @@ -1,0 +1,1 @@
1 +379.7 KB
Content info
attach_file 1756889917681-650.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.mgrawunder
Size
... ... @@ -1,0 +1,1 @@
1 +6.0 KB
Content info
attach_file 1756889979252-910.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.mgrawunder
Size
... ... @@ -1,0 +1,1 @@
1 +4.0 KB
Content info
attach_file 1756890010118-149.png
Author
... ... @@ -1,0 +1,1 @@
1 +XWiki.mgrawunder
Size
... ... @@ -1,0 +1,1 @@
1 +16.8 KB
Content info