You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2020/09/08 13:55:56 UTC
[openmeetings] branch master updated: [OPENMEETINGS-2402] upload to
WB is fixed
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 <so...@gmail.com>
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;
}
}