Wiki source code of Basisprojekt

Version 38.2 by mgrawunder on 2025/09/03 10:18

Hide last authors
Marco Grawunder 2.1 1 [[image:Main.Organisatorisches.WebHome@softwareprojekt_logo_transparent.png||alt="SoftwareprojektLogo.png" data-xwiki-image-style-alignment="end" height="136" width="309"]]
2
Marco Grawunder 28.1 3 Hier folgen Erklärungen des neuen Basisprojekts. Es wird um die folgenden Themen gehen:
4
Marco Grawunder 24.1 5 {{toc/}}
Marco Grawunder 23.2 6
Marco Grawunder 2.2 7
Marco Grawunder 7.2 8 = Basisprojekt mit IntelliJ einrichten =
9
10 [[image:1755245956916-184.png]]
11
Marco Grawunder 24.2 12 == Clone ==
Marco Grawunder 7.2 13
14 [[image:1755245971657-468.png]]
15
16
17 [[image:1755245980026-164.png]]
18
19 Auf anderen Branch wechseln (hier development)
20
21 [[image:1755245996886-733.png]]
22
Marco Grawunder 24.2 23 == Initialer Build (Generierung) ==
Marco Grawunder 7.2 24
Marco Grawunder 10.2 25 [[image:1755246008466-477.png]]
Marco Grawunder 7.2 26
27
Marco Grawunder 10.2 28 [[image:1755246018789-616.png]]
29
30
Marco Grawunder 24.2 31 == Lombok Plugin ==
32
Marco Grawunder 23.1 33 **Lombok Plugin installiert? Wenn nein jetzt machen**
34
Marco Grawunder 25.2 35 [[image:1755248508652-523.png]]
Marco Grawunder 24.2 36
mgrawunder 37.2 37 **Hinweis: Wenn man schon hier ist, kann man auch das Spring-(Boot)-Plugin **installieren
Marco Grawunder 23.1 38
mgrawunder 37.2 39 [[image:1756886220468-891.png]]
mgrawunder 36.2 40
Marco Grawunder 25.2 41 == Server laufen lassen ==
Marco Grawunder 23.1 42
Marco Grawunder 10.2 43 [[image:1755246035428-328.png]]
44
45
Marco Grawunder 25.3 46 ... und ggf. Lombok aktivieren (Man wird nach dem Start der Anwendung gefragt)
Marco Grawunder 10.2 47
Marco Grawunder 23.1 48 [[image:1755246072443-191.png]]
Marco Grawunder 10.2 49
50
Marco Grawunder 23.1 51 [[image:1755246118807-452.png]]
Marco Grawunder 10.2 52
Marco Grawunder 2.2 53
Marco Grawunder 25.3 54 == Logging umstellen ==
Marco Grawunder 3.1 55
Marco Grawunder 23.1 56 [[image:1755246135109-325.png]]
57
58
59 [[image:1755246147827-679.png]]
60
61
62 [[image:1755246162330-595.png]]
63
Marco Grawunder 25.3 64 == Development Profil aktivieren ==
Marco Grawunder 23.1 65
Marco Grawunder 25.3 66 damit dann user1 - user9 angelegt werden und man nicht jedesmal neu registrieren muss
67
Marco Grawunder 23.1 68 [[image:1755246173415-934.png]]
69
70
mgrawunder 37.3 71 **Wenn man IntelliJ nicht in der Pro-Version verwendet bzw. das Spring Boot Plugin nicht installiert hat, muss kann man ein Spring-Profil über eine Umgebungsvariable in der Konfiguration des Servers setzen: **
Marco Grawunder 23.1 72
73 **SPRING_PROFILES_ACTIVE=dev**
74
Marco Grawunder 26.2 75 [[image:1755248752596-839.png]]
76
77
78 == Client starten ==
79
Marco Grawunder 23.1 80 [[image:1755246257400-525.png]]
81
82
83 [[image:1755246212916-883.png]]
84
85
86 [[image:1755246223246-834.png]]
87
88
Marco Grawunder 26.2 89 === Mehrere Instanzen des Clients ermöglichen ===
90
Marco Grawunder 23.1 91 [[image:1755246233218-893.png]]
92
93
Marco Grawunder 27.1 94 Wenn folgendes kommt, ist entweder das "dev" Profil nicht aktiviert, der Nutzer wurde nicht angelegt. Wenn der Server nicht läuft, gibt es eine andere Fehlermeldung.
Marco Grawunder 26.2 95
Marco Grawunder 23.1 96 [[image:1755246292057-581.png]]
97
Marco Grawunder 30.2 98
99 = Kurzer Blick ins Basisprojekt =
100
101 [[image:1755249096987-249.png]]
102
103
104 [[image:1755249136156-419.png]]
Marco Grawunder 33.1 105
106
107 == Screenshots ==
108
109 [[image:1755249228556-469.png]]
110
111
112 = Kommunikation Client ~-~-> Server =
113
114 [[image:1755249285866-367.png]]
115
Marco Grawunder 34.1 116 Der Server verwendet das REST-Protokoll und als Austauschformat JSON
117
118 = OpenAPI =
119
mgrawunder 37.3 120 (Hinweis: Ich bin nicht sicher, ob IntelliJ diese Darstellung auch hat, wenn man nicht die Ultimate Version verwendet. Ggf. muss man das OpenAPI-Plugin installieren)
121
Marco Grawunder 34.1 122 [[image:1755250026156-269.png]]
123
124 [[image:1755250050031-304.png]]
125
126 * **Paths**: Endpunkte der API (z.B. /users, /lobbies).
127 * **Operations**: Spezifikation von Methoden wie GET, POST.
128 * **Definitions**: Detaillierte Beschreibung von Eingabe- und Ausgabestrukturen.
129 * **Security**: Authentifizierungsmechanismen.
130
131 [[image:1755250061990-172.png]]
Marco Grawunder 36.1 132
133 Kann JSON oder YAML (Yet Another Markup Language) verwenden YAML ist wie JSON nur mit weniger Klammern
134
135 [[image:1755250157536-746.png]]
mgrawunder 37.3 136
137 Die aktuelle Version des OpenAPI Dokumentes findet sich im Basisprojekt 2 [[https:~~/~~/gitlab.swl.informatik.uni-oldenburg.de/SPB/SWPBasisprojekt2/-/blob/master/openapi.yaml?ref_type=heads>>https://gitlab.swl.informatik.uni-oldenburg.de/SPB/SWPBasisprojekt2/-/blob/master/openapi.yaml?ref_type=heads]]
138
139 Dort wird die Datei auch grafisch dargestellt.
140
141
mgrawunder 37.4 142 = Maven und OpenAPI =
143
mgrawunder 38.2 144 Die OpenAPI Datei kann verwendet werden, um sich die [[REST-Schnittstellen>>doc:||anchor="HErweiterungderREST-Schnittstelle"]] generieren  zu lassen. Diese Erzeugung erfolgt mit dem OpenAPI Generator [[https:~~/~~/github.com/OpenAPITools/openapi-generator>>https://github.com/OpenAPITools/openapi-generator]]
mgrawunder 37.4 145
mgrawunder 38.2 146 Man kann dabei jetzt einen Kommandozeilenaufruf verwenden oder man setzt auf das im Basisprojekt vorhandene MVN ()
mgrawunder 37.4 147
mgrawunder 38.2 148 Dafür ist in den Maven-Dateien bereits das OpenAPI Generator Plugin integriert. Da im Client und im Server unterschiedliche Arten verwendet werden, erfolgt die Konfiguration im Client und im Server unterschiedlich:
mgrawunder 37.4 149
mgrawunder 38.2 150 == Client ==
mgrawunder 38.1 151
mgrawunder 38.2 152 Im Client werden die Apache Http Bibliothek verwendet.
153
154
155 [[image:1756887005209-855.png]]
156
157 == Server ==
158
159 Im Server wird Spring (Boot) verwendet
160
161 [[image:1756887037619-847.png]]
162
163 TODO: Weitere Informationen zu
164
165 - Lombok
166
167 - Dependency Injection
168
169 - Spring (Boot), siehe auch [[https:~~/~~/www.marcobehler.com/guides/spring-framework>>https://www.marcobehler.com/guides/spring-framework]]
170
171
172
mgrawunder 38.1 173 = Erweiterung der REST-Schnittstelle =
174
mgrawunder 38.2 175 In diesem Beispiel wird einmal gezeigt, wie die REST-Schnittstelle des Basisprojektes einfach erweitert werden kann.
176
177 In diesem Beispiel soll die aktuelle Schnittstelle um die Möglichkeit erweitert werden, alle Lobbies vom Server zu bekommen.
178
179 == Schritt 1: Erweitere das OpenAPI-Dokument ==
180
181 Um diese neue Funktion sowohl im Client als auch im Server verwenden zu können, ist es notwendig, diese neue Funktion im OpenAPI-Dokument zu definieren.
182
183 Die Funktion soll sehr einfach sein und keine Parameter verlangen. Dafür bietet sich die GET-Funktion an.
184
185 Im folgenden Bild sind alle Anpassungen zu sehen:
186
187 [[image:1756887436525-790.png||height="355" width="974"]]
188
189
190 Nach dem Speichern, sollte das OpenAPI-Dokument wie folgt aussehen
191
192 [[image:1756887488020-376.png||height="642" width="904"]]
193
194
195
mgrawunder 37.3 196