Skip to content

Commit 0398958

Browse files
committed
Merge branch 'release/1.0.0-RC4'
2 parents 11ffb6f + b8253a3 commit 0398958

File tree

25 files changed

+893
-78
lines changed

25 files changed

+893
-78
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ gradle-app.setting
6666
# gradle/wrapper/gradle-wrapper.properties
6767

6868
**/.vertx/
69+
**/file-uploads/
6970
.vertx/**/*.*
7071
**/war/*
71-
**/pom.xml.versionsBackup
72+
**/pom.xml.versionsBackup

domino-rest-client/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>domino-rest</artifactId>
77
<groupId>org.dominokit</groupId>
8-
<version>1.0.0-RC3</version>
8+
<version>1.0.0-RC4</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

domino-rest-client/src/main/java/org/dominokit/rest/js/JsResponse.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@
1616
package org.dominokit.rest.js;
1717

1818
import elemental2.core.ArrayBuffer;
19+
import elemental2.dom.XMLHttpRequest;
1920
import java.util.Map;
2021
import java.util.stream.Collectors;
2122
import java.util.stream.Stream;
2223
import jsinterop.base.Js;
2324
import org.dominokit.rest.shared.Response;
24-
import org.gwtproject.xhr.client.XMLHttpRequest;
2525

2626
/** JS implementation for the {@link Response} */
2727
public class JsResponse implements Response {
@@ -52,19 +52,19 @@ public Map<String, String> getHeaders() {
5252
/** {@inheritDoc} */
5353
@Override
5454
public int getStatusCode() {
55-
return request.getStatus();
55+
return request.status;
5656
}
5757

5858
/** {@inheritDoc} */
5959
@Override
6060
public String getStatusText() {
61-
return request.getStatusText();
61+
return request.statusText;
6262
}
6363

6464
/** {@inheritDoc} */
6565
@Override
6666
public String getBodyAsString() {
67-
return request.getResponseText();
67+
return request.responseText;
6868
}
6969

7070
/**
@@ -74,6 +74,6 @@ public String getBodyAsString() {
7474
* @return the content of the response as array buffer
7575
*/
7676
public ArrayBuffer getResponseArrayBuffer() {
77-
return Js.cast(request.getResponseArrayBuffer());
77+
return Js.cast(request.response);
7878
}
7979
}

domino-rest-client/src/main/java/org/dominokit/rest/js/JsRestfulRequest.java

Lines changed: 64 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,31 @@
1818
import static java.util.Objects.nonNull;
1919
import static java.util.stream.Collectors.joining;
2020

21+
import elemental2.core.ArrayBuffer;
22+
import elemental2.core.TypedArray;
23+
import elemental2.core.Uint8Array;
24+
import elemental2.dom.Blob;
25+
import elemental2.dom.BlobPropertyBag;
26+
import elemental2.dom.FormData;
27+
import elemental2.dom.XMLHttpRequest;
2128
import java.util.ArrayList;
2229
import java.util.LinkedHashMap;
2330
import java.util.List;
2431
import java.util.Map;
2532
import org.dominokit.rest.shared.BaseRestfulRequest;
33+
import org.dominokit.rest.shared.MultipartForm;
2634
import org.dominokit.rest.shared.RestfulRequest;
2735
import org.dominokit.rest.shared.request.RequestTimeoutException;
2836
import org.gwtproject.timer.client.Timer;
29-
import org.gwtproject.xhr.client.XMLHttpRequest;
3037

3138
/** JS implementation for {@link RestfulRequest} that uses {@link XMLHttpRequest} */
3239
public class JsRestfulRequest extends BaseRestfulRequest {
3340

3441
public static final String CONTENT_TYPE = "Content-Type";
3542
public static final String APPLICATION_PDF = "application/pdf";
36-
private XMLHttpRequest request;
37-
private Map<String, List<String>> params = new LinkedHashMap<>();
38-
private Map<String, String> headers = new LinkedHashMap<>();
43+
private final XMLHttpRequest request;
44+
private final Map<String, List<String>> params = new LinkedHashMap<>();
45+
private final Map<String, String> headers = new LinkedHashMap<>();
3946
private final Timer timer =
4047
new Timer() {
4148
@Override
@@ -46,7 +53,7 @@ public void run() {
4653

4754
public JsRestfulRequest(String uri, String method) {
4855
super(uri, method);
49-
request = XMLHttpRequest.create();
56+
request = new XMLHttpRequest();
5057
parseUri(uri);
5158
}
5259

@@ -90,7 +97,7 @@ public RestfulRequest setQueryParam(String key, String value) {
9097
public RestfulRequest putHeader(String key, String value) {
9198
if (CONTENT_TYPE.equalsIgnoreCase(key)) {
9299
if (APPLICATION_PDF.equalsIgnoreCase(value)) {
93-
request.setResponseType(XMLHttpRequest.ResponseType.ArrayBuffer);
100+
request.responseType = "arraybuffer";
94101
}
95102
}
96103
headers.put(key, value);
@@ -138,6 +145,47 @@ public void sendJson(String json) {
138145
send(json);
139146
}
140147

148+
/** {@inheritDoc} */
149+
@Override
150+
public void sendMultipartForm(MultipartForm multipartForm) {
151+
initRequest();
152+
FormData data = new FormData();
153+
for (MultipartForm.TextMultipart textMultipart : multipartForm.getTextMultiParts()) {
154+
BlobPropertyBag blobPropertyBag = BlobPropertyBag.create();
155+
blobPropertyBag.setType(textMultipart.contentType());
156+
Blob blob =
157+
new Blob(
158+
new Blob.ConstructorBlobPartsArrayUnionType[] {
159+
Blob.ConstructorBlobPartsArrayUnionType.of(textMultipart.value())
160+
},
161+
blobPropertyBag);
162+
if (textMultipart.fileName().isPresent()) {
163+
data.append(textMultipart.name(), blob, textMultipart.fileName().get());
164+
} else {
165+
data.append(textMultipart.name(), blob);
166+
}
167+
}
168+
for (MultipartForm.FileMultipart fileMultipart : multipartForm.getFileMultiParts()) {
169+
ArrayBuffer arrayBuffer = new ArrayBuffer(fileMultipart.value().length);
170+
Uint8Array buffer = new Uint8Array(arrayBuffer);
171+
buffer.set(TypedArray.SetArrayUnionType.of(fileMultipart.value()));
172+
BlobPropertyBag options = BlobPropertyBag.create();
173+
options.setType(fileMultipart.contentType());
174+
Blob blob =
175+
new Blob(
176+
new Blob.ConstructorBlobPartsArrayUnionType[] {
177+
Blob.ConstructorBlobPartsArrayUnionType.of(buffer)
178+
},
179+
options);
180+
if (fileMultipart.fileName().isPresent()) {
181+
data.append(fileMultipart.name(), blob, fileMultipart.fileName().get());
182+
} else {
183+
data.append(fileMultipart.name(), blob);
184+
}
185+
}
186+
request.send(data);
187+
}
188+
141189
/** {@inheritDoc} */
142190
@Override
143191
public void send(String data) {
@@ -155,20 +203,20 @@ public void send() {
155203
/** {@inheritDoc} */
156204
@Override
157205
public void abort() {
158-
request.clearOnReadyStateChange();
206+
request.onreadystatechange = p0 -> null;
159207
request.abort();
160208
}
161209

162210
/** {@inheritDoc} */
163211
@Override
164212
public void setWithCredentials(boolean withCredentials) {
165-
request.setWithCredentials(withCredentials);
213+
request.withCredentials = withCredentials;
166214
}
167215

168216
/** {@inheritDoc} */
169217
@Override
170218
public RestfulRequest setResponseType(String responseType) {
171-
request.setResponseType(responseType);
219+
request.responseType = responseType;
172220
return this;
173221
}
174222

@@ -180,22 +228,23 @@ private void initRequest() {
180228
String url = getUri();
181229
request.open(getMethod(), url);
182230
setHeaders();
183-
request.setOnReadyStateChange(
231+
request.onreadystatechange =
184232
xhr -> {
185-
if (xhr.getReadyState() == XMLHttpRequest.DONE) {
186-
xhr.clearOnReadyStateChange();
233+
if (request.readyState == XMLHttpRequest.DONE) {
234+
request.onreadystatechange = p0 -> null;
187235
timer.cancel();
188-
successHandler.onResponseReceived(new JsResponse(xhr));
236+
successHandler.onResponseReceived(new JsResponse(request));
189237
}
190-
});
238+
return null;
239+
};
191240
if (getTimeout() > 0) {
192241
timer.schedule(getTimeout());
193242
}
194243
}
195244

196245
private void fireOnTimeout() {
197246
timer.cancel();
198-
request.clearOnReadyStateChange();
247+
request.onreadystatechange = p0 -> null;
199248
request.abort();
200249
errorHandler.onError(new RequestTimeoutException());
201250
}

domino-rest-jaxrs/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<groupId>org.dominokit</groupId>
77
<artifactId>domino-rest</artifactId>
8-
<version>1.0.0-RC3</version>
8+
<version>1.0.0-RC4</version>
99
</parent>
1010

1111
<artifactId>domino-rest-jaxrs</artifactId>

domino-rest-jvm/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>domino-rest</artifactId>
77
<groupId>org.dominokit</groupId>
8-
<version>1.0.0-RC3</version>
8+
<version>1.0.0-RC4</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

@@ -24,7 +24,7 @@
2424
<dependency>
2525
<groupId>io.vertx</groupId>
2626
<artifactId>vertx-web-client</artifactId>
27-
<version>3.8.5</version>
27+
<version>3.9.6</version>
2828
</dependency>
2929
<dependency>
3030
<groupId>junit</groupId>

domino-rest-jvm/src/main/java/org/dominokit/rest/jvm/JavaRestfulRequest.java

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.dominokit.rest.VertxInstanceProvider;
3636
import org.dominokit.rest.shared.BaseRestfulRequest;
3737
import org.dominokit.rest.shared.GwtIncompatible;
38+
import org.dominokit.rest.shared.MultipartForm;
3839
import org.dominokit.rest.shared.RestfulRequest;
3940

4041
/** Java implementation for {@link RestfulRequest} that uses Vert.x {@link WebClient} */
@@ -123,6 +124,25 @@ public void sendJson(String json) {
123124
send(json);
124125
}
125126

127+
/** {@inheritDoc} */
128+
@Override
129+
public void sendMultipartForm(MultipartForm multipartForm) {
130+
putHeader("Content-Type", "multipart/form-data");
131+
io.vertx.ext.web.multipart.MultipartForm parts =
132+
io.vertx.ext.web.multipart.MultipartForm.create();
133+
for (MultipartForm.TextMultipart textMultipart : multipartForm.getTextMultiParts()) {
134+
parts.attribute(textMultipart.name(), textMultipart.value());
135+
}
136+
for (MultipartForm.FileMultipart fileMultipart : multipartForm.getFileMultiParts()) {
137+
parts.binaryFileUpload(
138+
fileMultipart.name(),
139+
fileMultipart.name(),
140+
Buffer.buffer(fileMultipart.value()),
141+
fileMultipart.contentType());
142+
}
143+
request.sendMultipartForm(parts, this::handleResponse);
144+
}
145+
126146
/** {@inheritDoc} */
127147
@Override
128148
public void send(String data) {

domino-rest-processor/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<parent>
55
<artifactId>domino-rest</artifactId>
66
<groupId>org.dominokit</groupId>
7-
<version>1.0.0-RC3</version>
7+
<version>1.0.0-RC4</version>
88
</parent>
99
<modelVersion>4.0.0</modelVersion>
1010

0 commit comments

Comments
 (0)