Changes for page Basisprojekt

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

edited by mgrawunder
on 2025/09/03 10:18
Change comment: There is no comment for this version
edited by Marco Grawunder
on 2025/08/15 10:25
Change comment: Uploaded new attachment "1755246318433-327.png", version {1}

Summary

Details

insert_drive_file Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.mgrawunder
1 +XWiki.MarcoGrawunder
Content
... ... @@ -1,15 +1,12 @@
1 1  [[image:Main.Organisatorisches.WebHome@softwareprojekt_logo_transparent.png||alt="SoftwareprojektLogo.png" data-xwiki-image-style-alignment="end" height="136" width="309"]]
2 2  
3 -Hier folgen Erklärungen des neuen Basisprojekts. Es wird um die folgenden Themen gehen:
3 +Hier folgen Erklärungen des neuen Basisprojekts.
4 4  
5 -{{toc/}}
6 6  
7 -
8 8  = Basisprojekt mit IntelliJ einrichten =
9 9  
10 10  [[image:1755245956916-184.png]]
11 11  
12 -== Clone ==
13 13  
14 14  [[image:1755245971657-468.png]]
15 15  
... ... @@ -20,7 +20,6 @@
20 20  
21 21  [[image:1755245996886-733.png]]
22 22  
23 -== Initialer Build (Generierung) ==
24 24  
25 25  [[image:1755246008466-477.png]]
26 26  
... ... @@ -28,169 +28,17 @@
28 28  [[image:1755246018789-616.png]]
29 29  
30 30  
31 -== Lombok Plugin ==
32 -
33 -**Lombok Plugin installiert? Wenn nein jetzt machen**
34 -
35 -[[image:1755248508652-523.png]]
36 -
37 -**Hinweis: Wenn man schon hier ist, kann man auch das Spring-(Boot)-Plugin **installieren
38 -
39 -[[image:1756886220468-891.png]]
40 -
41 -== Server laufen lassen ==
42 -
43 43  [[image:1755246035428-328.png]]
44 44  
45 45  
46 -... und ggf. Lombok aktivieren (Man wird nach dem Start der Anwendung gefragt)
30 +Lombok Plugin installiert? Wenn nein jetzt machen
47 47  
48 -[[image:1755246072443-191.png]]
32 +... und aktivier
49 49  
50 50  
51 -[[image:1755246118807-452.png]]
52 52  
36 +Hinweise:
53 53  
54 -== Logging umstellen ==
38 +- Wenn man nicht IntelliJ in der Pro-Version verwendet, muss kann man ein Spring-Profil über eine Umgebungsvariable in der Konfiguration des Servers setzen:
55 55  
56 -[[image:1755246135109-325.png]]
57 -
58 -
59 -[[image:1755246147827-679.png]]
60 -
61 -
62 -[[image:1755246162330-595.png]]
63 -
64 -== Development Profil aktivieren ==
65 -
66 -damit dann user1 - user9 angelegt werden und man nicht jedesmal neu registrieren muss
67 -
68 -[[image:1755246173415-934.png]]
69 -
70 -
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: **
72 -
73 -**SPRING_PROFILES_ACTIVE=dev**
74 -
75 -[[image:1755248752596-839.png]]
76 -
77 -
78 -== Client starten ==
79 -
80 -[[image:1755246257400-525.png]]
81 -
82 -
83 -[[image:1755246212916-883.png]]
84 -
85 -
86 -[[image:1755246223246-834.png]]
87 -
88 -
89 -=== Mehrere Instanzen des Clients ermöglichen ===
90 -
91 -[[image:1755246233218-893.png]]
92 -
93 -
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.
95 -
96 -[[image:1755246292057-581.png]]
97 -
98 -
99 -= Kurzer Blick ins Basisprojekt =
100 -
101 -[[image:1755249096987-249.png]]
102 -
103 -
104 -[[image:1755249136156-419.png]]
105 -
106 -
107 -== Screenshots ==
108 -
109 -[[image:1755249228556-469.png]]
110 -
111 -
112 -= Kommunikation Client ~-~-> Server =
113 -
114 -[[image:1755249285866-367.png]]
115 -
116 -Der Server verwendet das REST-Protokoll und als Austauschformat JSON
117 -
118 -= OpenAPI =
119 -
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 -
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]]
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]]
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 -
142 -= Maven und OpenAPI =
143 -
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]]
145 -
146 -Man kann dabei jetzt einen Kommandozeilenaufruf verwenden oder man setzt auf das im Basisprojekt vorhandene MVN ()
147 -
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:
149 -
150 -== Client ==
151 -
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 -
173 -= Erweiterung der REST-Schnittstelle =
174 -
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 -
196 -
40 +SPRING_PROFILES_ACTIVE=dev
attach_file 1755248508652-523.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -89.8 KB
Content info
attach_file 1755248752596-839.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -23.4 KB
Content info
attach_file 1755249096987-249.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -470.5 KB
Content info
attach_file 1755249136156-419.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -214.2 KB
Content info
attach_file 1755249228556-469.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -118.7 KB
Content info
attach_file 1755249285866-367.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -65.5 KB
Content info
attach_file 1755250026156-269.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -181.0 KB
Content info
attach_file 1755250050031-304.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -140.4 KB
Content info
attach_file 1755250061990-172.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -64.5 KB
Content info
attach_file 1755250157536-746.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.MarcoGrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -125.7 KB
Content info
attach_file 1756886220468-891.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.mgrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -161.0 KB
Content info
attach_file 1756887005209-855.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.mgrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -56.9 KB
Content info
attach_file 1756887037619-847.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.mgrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -52.5 KB
Content info
attach_file 1756887436525-790.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.mgrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -62.8 KB
Content info
attach_file 1756887488020-376.png
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.mgrawunder
Size
... ... @@ -1,1 +1,0 @@
1 -187.5 KB
Content info