This is an automated email from the ASF dual-hosted git repository.

solomax pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


The following commit(s) were added to refs/heads/master by this push:
     new ecee6f8  [OPENMEETINGS-2402] upload to WB is fixed
ecee6f8 is described below

commit ecee6f8eeaa624252a540e1ba063f31a523f7535
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Tue Sep 8 20:55:40 2020 +0700

    [OPENMEETINGS-2402] upload to WB is fixed
---
 .../openmeetings/core/util/WebSocketHelper.java    | 11 +++++++++++
 .../openmeetings/db/util/ws/RoomMessage.java       |  1 +
 .../apache/openmeetings/web/room/RoomPanel.java    |  8 ++++++++
 .../sidebar/RoomFileUploadResourceReference.java   | 23 ++++++++++++++--------
 4 files changed, 35 insertions(+), 8 deletions(-)

diff --git 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
index c75254f..cc2b451 100644
--- 
a/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
+++ 
b/openmeetings-core/src/main/java/org/apache/openmeetings/core/util/WebSocketHelper.java
@@ -80,6 +80,17 @@ public class WebSocketHelper {
                }
        }
 
+       public static void sendClient(final IWsClient omClient, final 
RoomMessage m) {
+               log.trace("Sending WebSocket message to client: {} {}", 
m.getType(), m instanceof TextRoomMessage ? ((TextRoomMessage)m).getText() : 
"");
+               sendClient(omClient, c -> {
+                       try {
+                               c.sendMessage(m);
+                       } catch (Throwable e) {
+                               log.error("Error while sending message to 
client", e);
+                       }
+               });
+       }
+
        public static IApplication getApp() {
                return 
(IApplication)Application.get(getWicketApplicationName());
        }
diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
index cb9896d..85937b7 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/ws/RoomMessage.java
@@ -56,6 +56,7 @@ public class RoomMessage implements IWebSocketPushMessage {
                , KURENTO_STATUS
                , WB_RELOAD
                , MODERATOR_IN_ROOM
+               , WB_PUT_FILE
        }
        private final Date timestamp;
        private final String uid;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
index 3245256..f6a4649 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
@@ -40,6 +40,7 @@ import org.apache.openmeetings.core.remote.KurentoHandler;
 import org.apache.openmeetings.core.remote.StreamProcessor;
 import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
+import org.apache.openmeetings.db.dao.file.FileItemDao;
 import org.apache.openmeetings.db.dao.user.UserDao;
 import org.apache.openmeetings.db.entity.basic.Client;
 import org.apache.openmeetings.db.entity.basic.Client.StreamDesc;
@@ -249,6 +250,8 @@ public class RoomPanel extends BasePanel {
        private StreamProcessor streamProcessor;
        @SpringBean
        private TimerService timerService;
+       @SpringBean
+       private FileItemDao fileDao;
 
        public RoomPanel(String id, Room r) {
                super(id);
@@ -595,6 +598,11 @@ public class RoomPanel extends BasePanel {
                                                }
                                        }
                                                break;
+                                       case WB_PUT_FILE: {
+                                               JSONObject obj = new 
JSONObject(((TextRoomMessage)m).getText());
+                                               
getWb().sendFileToWb(fileDao.getAny(obj.getLong("fileId")), 
obj.getBoolean("clean"));
+                                       }
+                                               break;
                                }
                        }
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
index 35d2943..784bfaa 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFileUploadResourceReference.java
@@ -42,6 +42,8 @@ import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.Room.Right;
 import org.apache.openmeetings.db.entity.room.Room.RoomElement;
+import org.apache.openmeetings.db.util.ws.RoomMessage;
+import org.apache.openmeetings.db.util.ws.TextRoomMessage;
 import org.apache.openmeetings.util.process.ProcessResult;
 import org.apache.openmeetings.util.process.ProcessResultList;
 import org.apache.openmeetings.web.app.Application;
@@ -113,15 +115,16 @@ public class RoomFileUploadResourceReference extends 
ResourceReference {
                                                final boolean toWb = 
multiPartRequest.getPostParameters().getParameterValue(PARAM_TO_WB_NAME).toBoolean(false);
                                                final boolean clean = 
multiPartRequest.getPostParameters().getParameterValue(PARAM_CLEAN_NAME).toBoolean(false);
                                                final long lastSelected = 
multiPartRequest.getPostParameters().getParameterValue(PARAM_LAST_SELECTED_NAME).toLong(-1L);
-                                               startRunnable(() -> 
convertAll(c, fileItems, toWb, clean, lastSelected));
+                                               final String uuid = 
randomUUID().toString();
+                                               startRunnable(() -> 
convertAll(c, fileItems, uuid, toWb, clean, lastSelected));
 
-                                               prepareResponse(response, 
Status.SUCCESS, Application.getString("54", langId));
+                                               prepareResponse(response, 
Status.SUCCESS, uuid, Application.getString("54", langId));
                                        } else {
-                                               prepareResponse(response, 
Status.ERROR, Application.getString("access.denied.header", langId));
+                                               prepareResponse(response, 
Status.ERROR, null, Application.getString("access.denied.header", langId));
                                        }
                                } catch (Exception e) {
                                        log.error("An error occurred while 
uploading a file", e);
-                                       prepareResponse(response, Status.ERROR, 
e.getMessage());
+                                       prepareResponse(response, Status.ERROR, 
null, e.getMessage());
                                }
                                return response;
                        }
@@ -132,7 +135,7 @@ public class RoomFileUploadResourceReference extends 
ResourceReference {
                return c == null || c.getUser() == null ? 1L : 
c.getUser().getLanguageId();
        }
 
-       private static void prepareResponse(ResourceResponse response, Status 
status, String msg) {
+       private static void prepareResponse(ResourceResponse response, Status 
status, String uuid, String msg) {
                response.setContentType(MediaType.APPLICATION_JSON);
                response.setWriteCallback(new WriteCallback() {
                        @Override
@@ -140,6 +143,7 @@ public class RoomFileUploadResourceReference extends 
ResourceReference {
                                attributes.getResponse().write(new JSONObject()
                                                .put("status", status.name())
                                                .put("message", msg)
+                                               .put("uuid", uuid)
                                                .toString());
                        }
                });
@@ -153,11 +157,10 @@ public class RoomFileUploadResourceReference extends 
ResourceReference {
                return !r.isHidden(RoomElement.FILES) && 
c.hasRight(Right.PRESENTER);
        }
 
-       private void convertAll(Client c, List<FileItem> files, boolean toWb, 
boolean clean, long lastSelected) {
+       private void convertAll(Client c, List<FileItem> files, String uuid, 
boolean toWb, boolean clean, long lastSelected) {
                final BaseFileItem parent = fileDao.get(lastSelected);
                final long langId = getLangId(c);
                final long totalSize = 
files.stream().mapToLong(FileItem::getSize).sum();
-               final String uuid = randomUUID().toString();
                final AtomicInteger progress = new AtomicInteger(0);
                long currentSize = 0;
                for (FileItem curItem : files) {
@@ -187,7 +190,11 @@ public class RoomFileUploadResourceReference extends 
ResourceReference {
                                        sendError(c, uuid, 
Application.getString("convert.errors.file", langId));
                                } else {
                                        if (toWb) {
-                                               //FIXME TODO 
room.getWb().sendFileToWb(f, clean);
+                                               WebSocketHelper.sendClient(c, 
new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.WB_PUT_FILE
+                                                               , new 
JSONObject()
+                                                                               
.put("fileId", f.getId())
+                                                                               
.put("clean", clean)
+                                                                               
.toString()));
                                                clean = false;
                                        }
                                }

Reply via email to