8000 fix: call successhandler from access block (#21458) · vaadin/flow@9fa80fc · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Commit 9fa80fc

Browse files
authored
fix: call successhandler from access block (#21458)
* fix: call successhandler from access block Running successhandler callback from access so that UI can be updated directly based on the received data. * Fix tests due to changes in usage
1 parent 8504858 commit 9fa80fc

File tree

4 files changed

+27
-6
lines changed

4 files changed

+27
-6
lines changed

flow-server/src/main/java/com/vaadin/flow/server/streams/AbstractFileUploadHandler.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,11 @@ public void handleUploadRequest(UploadEvent event) throws IOException {
6969
notifyError(event, e);
7070
throw e;
7171
}
72-
successHandler.accept(new UploadMetadata(event.getFileName(),
73-
event.getContentType(), event.getFileSize()), file);
72+
event.getUI()
73+
.access(() -> successHandler.accept(
74+
new UploadMetadata(event.getFileName(),
75+
event.getContentType(), event.getFileSize()),
76+
file));
7477
}
7578

7679
@Override

flow-server/src/main/java/com/vaadin/flow/server/streams/InMemoryUploadHandler.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,11 @@ public void handleUploadRequest(UploadEvent event) throws IOException {
5353
notifyError(event, e);
5454
throw e;
5555
}
56-
successHandler.accept(new UploadMetadata(event.getFileName(),
57-
event.getContentType(), event.getFileSize()), data);
56+
event.getUI()
57+
.access(() -> successHandler.accept(
58+
new UploadMetadata(event.getFileName(),
59+
event.getContentType(), event.getFileSize()),
60+
data));
5861
}
5962

6063
@Override

flow-server/src/test/java/com/vaadin/flow/server/communication/UploadHandlerTest.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.nio.file.Files;
1010
import java.util.ArrayList;
1111
import java.util.List;
12+
import java.util.concurrent.Future;
1213
import java.util.concurrent.atomic.AtomicBoolean;
1314
import java.util.concurrent.atomic.AtomicInteger;
1415

@@ -32,6 +33,7 @@
3233
import com.vaadin.flow.internal.CurrentInstance;
3334
import com.vaadin.flow.internal.StateNode;
3435
import com.vaadin.flow.server.AbstractStreamResource;
36+
import com.vaadin.flow.server.Command;
3537
import com.vaadin.flow.server.HttpStatusCode;
3638
import com.vaadin.flow.server.MockVaadinServletService;
3739
import com.vaadin.flow.server.MockVaadinSession;
@@ -84,12 +86,24 @@ public class UploadHandlerTest {
8486
@Before
8587
public void setUp() throws ServletException, ServiceException {
8688
VaadinService service = new MockVaadinServletService();
89+
ui = new MockUI() {
90+
@Override
91+
public Future<Void> access(Command command) {
92+
command.execute();
93+
return null;
94+
}
95+
};
8796

8897
session = new AlwaysLockedVaadinSession(service) {
8998
@Override
9099
public StreamResourceRegistry getResourceRegistry() {
91100
return streamResourceRegistry;
92101
}
102+
103+
@Override
104+
public UI getUIById(int uiId) {
105+
return ui;
106+
}
93107
};
94108
streamResourceRegistry = new StreamResourceRegistry(session);
95109
request = Mockito.mock(VaadinServletRequest.class);
@@ -102,8 +116,6 @@ public StreamResourceRegistry getResourceRegistry() {
102116
element = Mockito. DED0 mock(Element.class);
103117
Mockito.when(element.getNode()).thenReturn(stateNode);
104118
response = Mockito.mock(VaadinResponse.class);
105-
ui = new MockUI();
106-
UI.setCurrent(ui);
107119
}
108120

109121
@After
@@ -199,6 +211,8 @@ public void accept(UploadMetadata uploadMetadata,
199211
mockRequest(res, testString);
200212

201213
handler.handleRequest(session, request, response);
214+
session.getPendingAccessQueue()
215+
.forEach(futureAccess -> futureAccess.run());
202216

203217
Assert.assertArrayEquals("Output differed from expected", testBytes,
204218
output);

flow-server/src/test/java/com/vaadin/flow/server/streams/UploadTransferProgressTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ public StreamResourceRegistry getResourceRegistry() {
127127
command.execute();
128128
return null;
129129
}).when(ui).access(Mockito.any(Command.class));
130+
Mockito.when(uploadEvent.getUI()).thenReturn(ui);
130131

131132
Mockito.when(componentOwner.getUI()).thenReturn(Optional.of(ui));
132133
Mockito.when(uploadEvent.getOwningComponent())

0 commit comments

Comments
 (0)
0