Von Version < 1.9 >
bearbeitet von awa
am 12.03.2020, 11:01
Auf Version < 1.12 >
bearbeitet von awa
am 12.03.2020, 11:46
< >
Änderungskommentar: Es gibt keinen Kommentar für diese Version

Zusammenfassung

Details

Seiteneigenschaften
Inhalt
... ... @@ -16,6 +16,8 @@
16 16  
17 17  Standardmäßig ist eine Servlet-Aktion für alle frei zugänglich. Da es in der Regel unerwünscht ist, dass jeder (auch unangemeldete) Nutzer Plugins installieren kann, kann das Deploy-Plugin durch ein Passwort abgesichert werden. Dazu muss in der Plugin-Konfiguration der Passwort-Hash hinterlegt werden und das Passwort dann im HTTP-POST-Request mitgesendet werden.
18 18  
19 +== Plugin-Konfiguration ==
20 +
19 19  == HTTP-Request-Aufbau ==
20 20  
21 21  Im Folgenden wird der Aufbau des HTTP-Requests beschrieben, um ein Plugin zu installieren, zu aktualisieren oder zu löschen.
... ... @@ -28,7 +28,7 @@
28 28  
29 29  Die //client-id// muss nicht angegeben werden, wenn das Plugin als System-Plugin installiert ist.
30 30  
31 -=== Request-Parameter
33 +=== Request-Parameter ===
32 32  
33 33  Die Parameter können direkt als URL-Parameter, als //multipart/form-data// oder als //application/x-www-form-urlencoded// übergeben werden. Folgende Parameter werden vom Deploy-Plugin unterstützt und können übergeben werden:
34 34  
... ... @@ -57,9 +57,9 @@
57 57  :; plugin-ident=manifest
58 58  :: //plugin-identifier// muss den Namen der Manifest-Eigenschaft und dessen Wert enthalten, im Format //ATTRIBUTE_NAME=VALUE//. Wird zum Beispiel //Implementation-Title=com.example.fc.plugin:my-plugin// übergeben wird, wird nach einem existierenden Plugin gesucht, welches im Manifest in der Eigenschaft //Implementation-Title// den Wert //com.example.fc.plugin:my-plugin// stehen hat.
59 59  :; plugin-ident=id
60 -:: //plugin-identifier// muss die gewünschte ID des Plugins enthalten, etwa //53// oder /893//.
62 +:: //plugin-identifier// muss die gewünschte ID des Plugins enthalten, etwa //53// oder /893//.//
61 61  :; plugin-ident=name
62 -:: //plugin-identifier// muss den gewünschten Names des Plugins enthalten, etwa //my-plugin.jar// oder /foobar.jar//.
64 +:: //plugin-identifier// muss den gewünschten Names des Plugins enthalten, etwa //my-plugin.jar// oder /foobar.jar//.//
63 63  :; plugin-ident=uuid
64 64  :: //plugin-identifier// muss die gewünschte UUID des Plugins enthalten, etwa //03022599-903d-429b-9822-80a324a542fc//.
65 65  Andernfalls wird das Plugin installiert, falls noch nicht vorhanden, oder aktualisiert, falls vorhanden.
... ... @@ -71,11 +71,75 @@
71 71  : Entweder //true// oder //false//. Ist diese Option auf //true// gesetzt und existiert das Plugin noch nicht (bezüglich der angegebenen //plugin-ident// und //plugin-identifier//), wird das Plugin nicht neu installiert und eine Fehlermeldung zurückgegeben. ; locale
72 72  : Die Sprache, welche während der Installation, Aktualisierung oder Löschung des Plugins verwendet werden soll, etwa //en// oder //de//. Beeinflusst nur einige Fehlermeldungen und kann in der Regel weggelassen werden.
73 73  
76 +=== Deploy-Action ===
77 +
74 74  Der Wert des Parameters //deploy-action// gibt an, was genau mit dem Plugin geschehen soll. Es gibt dabei die folgenden Möglichkeiten:
75 75  
80 +; save
81 +: Überträgt das angegebene Plugin auf das FORMCYCLE-System. Es muss hierbei eine JAR-Datei übertragen werden. Falls das Plugin noch nicht existiert (und der Parameter //disallow-install// nicht gesetzt ist), wird das Plugin neu installiert und ist dann aktiviert. Andernfalls, falls das Plugin bereits existiert, wird es aktualisiert, dabei bleibt das Plugin aktiviert oder deaktiviert.
82 +
83 +(((
84 +{{code language="bash"}}
85 + curl -X POST \
86 + # These options are required
87 + -F deploy-action=save \
88 + -F token=admin \
89 + -F plugin-ident=manifest \
90 + -F plugin-identifier=Implementation-Title=com.example:plugin \
91 + -F "jar-file=@my-plugin.jar" \
92 + "http://localhost:8080/formcycle/plugin?client-id=154&name=deploy-plugin"
93 +{{/code}}
94 +)))
95 +
96 +; delete
97 +: Löscht das angegebene Plugin. Es darf hierbei keine JAR-Datei übertragen werden. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Beispiel:
98 +
99 +(((
100 +{{code language="bash"}}
101 + curl -X POST \
102 + # These options are required
103 + -F deploy-action=delete \
104 + -F token=admin \
105 + -F plugin-ident=manifest \
106 + -F plugin-identifier=Implementation-Title=com.example:plugin \
107 + "http://localhost:8080/formcycle/plugin?client-id=154&name=deploy-plugin"
108 +{{/code}}
109 +)))
110 +
111 +; activate
112 +: Aktiviert das angegebene Plugin. Es darf hierbei keine JAR-Datei übertragen werden. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Beispiel:
113 +
114 +(((
115 +{{code language="bash"}}
116 + curl -X POST \
117 + # These options are required
118 + -F deploy-action=activate \
119 + -F token=admin \
120 + -F plugin-ident=manifest \
121 + -F plugin-identifier=Implementation-Title=com.example:plugin \
122 + "http://localhost:8080/formcycle/plugin?client-id=154&name=deploy-plugin"
123 +{{/code}}
124 +)))
125 +
126 +; deactivate
127 +: Deaktiviert das angegebene Plugin. Es darf hierbei keine JAR-Datei übertragen werden. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Beispiel:
128 +
129 +(((
130 +{{code language="bash"}}
131 + curl -X POST \
132 + # These options are required
133 + -F deploy-action=deactivate \
134 + -F token=admin \
135 + -F plugin-ident=manifest \
136 + -F plugin-identifier=Implementation-Title=com.example:plugin \
137 + "http://localhost:8080/formcycle/plugin?client-id=154&name=deploy-plugin"
138 +{{/code}}
139 +)))
140 +
76 76  ; update-properties
77 77  : Aktualisiert die Eigenschaften des angegebenen Plugins. Es darf hierbei keine JAR-Datei übertragen werden. Entweder die Eigenschaft //clear-properties// oder //property// sollte gesetzt sein. Existiert das angegebene Plugin nicht, wird ein Fehler zurückgegeben. Beispiel:
78 - (((
143 +
144 +(((
79 79  {{code language="bash"}}
80 80  # Löscht alle vorhandenen Plugin-Eigenschaften und setzt dann die Eigenschaft "foo" auf den Wert "bar"
81 81   curl -X POST \
... ... @@ -86,10 +86,112 @@
86 86   -F clear-properties=false \
87 87   -F property=foo=bar \
88 88   "http://localhost:8080/formcycle/plugin?client-id=154&name=deploy-plugin"
89 -{{/code}})))
155 +{{/code}}
156 +)))
90 90  
91 -== Response
158 +== Response ==
92 92  
160 +Das Deploy-Plugin liefert einen Statuscode und ein JSON-Objekt mit den Details zurück. Der Status-Code ist 2xx, falls das Deploy-Plugin erfolgreich ausgeführt wurde.
93 93  
162 +Das JSON-Objekt hat dabei [[die folgende Struktur>>https://json-schema.org/]]:
94 94  
164 +{{code language="json"}}
165 +{
166 + "$schema": "http://json-schema.org/schema",
167 + "description": "Represents the response of the deploy plugin servlet.",
168 + "required": [
169 + "success",
170 + "statusCode",
171 + "details",
172 + "message",
173 + "requestParameters"
174 + ],
175 + "properties": {
176 + "success": {
177 + "type": "boolean",
178 + "title": "Success status",
179 + "description": "true if the deploy plugin servlet was executed successfully, or false otherwise"
180 + },
181 + "statusCode": {
182 + "type": "number",
183 + "title": "HTTP status code",
184 + "description": "The status code of the HTTP request that contains this response."
185 + },
186 + "details": {
187 + "type": "object",
188 + "title": "Result details",
189 + "description": "Detailed information about the plugin processed by the deploy plugin servlet.",
190 + "oneOf": [
191 + {
192 + "description": "If the deploy plugin servlet was successful, details about the successfully executed action.",
193 + "required": [
194 + "id",
195 + "uuid",
196 + "name",
197 + "active",
198 + "message"
199 + ],
200 + "properties": {
201 + "id": {
202 + "type": "number",
203 + "title": "Plugin ID",
204 + "description": "The database ID of the processed plugin."
205 + },
206 + "uuid": {
207 + "type": "string",
208 + "title": "Plugin UUID",
209 + "description": "The UUID of the processed plugin."
210 + },
211 + "name": {
212 + "type": "string",
213 + "title": "Plugin name",
214 + "description": "The name of the processed plugin, i.e. the file name of the plugin JAR file."
215 + },
216 + "active": {
217 + "type": "boolean",
218 + "title": "Plugin activation status",
219 + "description": "true if the plugin is now active, false if it is now inactive."
220 + },
221 + "message": {
222 + "type": "string",
223 + "title": "Result message",
224 + "description": "Human-readable message describing the performed action."
225 + }
226 + }
227 + },
228 + {
229 + "required": [
230 + "exceptionType",
231 + "exceptionMessage"
232 + ],
233 + "description": "If the deploy plugin servlet was unsuccessful, details about the error that occurred.",
234 + "properties": {
235 + "exceptionType": {
236 + "type": "string",
237 + "title": "Exception type",
238 + "description": "The type of the error that occurred, a fully-classified name of the Java exception class."
239 + },
240 + "exceptionMessage": {
241 + "type": "string",
242 + "title": "Exception message",
243 + "description": "The human-readable message of the error that occurred."
244 + }
245 + }
246 + }
247 + ]
248 + },
249 + "message": {
250 + "type": "string",
251 + "title": "Result message",
252 + "description": "A human-readable message that describes this result."
253 + },
254 + "requestParameters": {
255 + "type": "object",
256 + "title": "Request parameters",
257 + "description": "The parameters of the request that triggered this response."
258 + }
259 + }
260 +}
261 +{{/code}}
262 +
95 95  == Beispiel für Maven ==
Copyright 2000-2025