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

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


The following commit(s) were added to refs/heads/4.0.x by this push:
     new 11ab322  [OPENMEETINGS-2073] cleanWb REST call perform real-time clean
11ab322 is described below

commit 11ab3229c5adbecad5abab3a1af920dcd0f63129
Author: Maxim Solodovnik <[email protected]>
AuthorDate: Thu May 23 11:45:49 2019 +0700

    [OPENMEETINGS-2073] cleanWb REST call perform real-time clean
---
 .../apache/openmeetings/db/manager/IWhiteboardManager.java   |  2 +-
 .../java/org/apache/openmeetings/db/util/ws/RoomMessage.java |  1 +
 .../org/apache/openmeetings/web/app/WhiteboardManager.java   | 12 +++++++++++-
 .../java/org/apache/openmeetings/web/room/RoomPanel.java     |  5 +++++
 .../org/apache/openmeetings/web/room/wb/AbstractWbPanel.java |  4 ++++
 .../java/org/apache/openmeetings/web/room/wb/WbPanel.java    |  8 ++++++++
 .../java/org/apache/openmeetings/web/room/wb/raw-wb-area.js  | 12 ++++++++++++
 .../org/apache/openmeetings/webservice/RoomWebService.java   |  2 +-
 8 files changed, 43 insertions(+), 3 deletions(-)

diff --git 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
index 9e2a3cd..d8f02fe 100644
--- 
a/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
+++ 
b/openmeetings-db/src/main/java/org/apache/openmeetings/db/manager/IWhiteboardManager.java
@@ -22,5 +22,5 @@ import org.apache.openmeetings.db.dto.room.Whiteboards;
 
 public interface IWhiteboardManager {
        Whiteboards get(Long roomId);
-       void remove(Long roomId);
+       void clean(Long roomId, Long userId);
 }
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 dd5627e..dc93ae8 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
@@ -57,6 +57,7 @@ public class RoomMessage implements IWebSocketPushMessage {
                , mute
                , muteOthers
                , quickPollUpdated
+               , wbReload
        }
        private final Date timestamp;
        private final String uid;
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
index ec0be53..2504e24 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WhiteboardManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.web.app;
 
+import static 
org.apache.openmeetings.db.util.ApplicationHelper.ensureApplication;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getDefaultLang;
 import static 
org.apache.openmeetings.util.OpenmeetingsVariables.getWebAppRootKey;
 import static org.red5.logging.Red5LoggerFactory.getLogger;
@@ -34,13 +35,16 @@ import java.util.concurrent.TimeUnit;
 
 import javax.annotation.PostConstruct;
 
+import org.apache.openmeetings.core.util.WebSocketHelper;
 import org.apache.openmeetings.db.dao.label.LabelDao;
 import org.apache.openmeetings.db.dto.room.Whiteboard;
 import org.apache.openmeetings.db.dto.room.Whiteboards;
 import org.apache.openmeetings.db.entity.file.BaseFileItem;
 import org.apache.openmeetings.db.entity.room.Room;
 import org.apache.openmeetings.db.entity.room.RoomFile;
+import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.db.manager.IWhiteboardManager;
+import org.apache.openmeetings.db.util.ws.RoomMessage;
 import org.slf4j.Logger;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
@@ -88,7 +92,7 @@ public class WhiteboardManager implements IWhiteboardManager {
        }
 
        @Override
-       public void remove(Long roomId) {
+       public void clean(Long roomId, Long userId) {
                if (roomId == null) {
                        return;
                }
@@ -101,6 +105,12 @@ public class WhiteboardManager implements 
IWhiteboardManager {
                                        map().unlock(roomId);
                                }
                        }
+                       new Thread(() -> {
+                               ensureApplication();
+                               User u = new User();
+                               u.setId(userId);
+                               WebSocketHelper.sendRoom(new 
RoomMessage(roomId, u, RoomMessage.Type.wbReload));
+                       }).start();
                } catch (InterruptedException e) {
                        log.warn("Unexpected exception while map clean-up", e);
                }
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 e8a918f..5aadb1e 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
@@ -614,6 +614,11 @@ public class RoomPanel extends BasePanel {
                                                
handler.appendJavaScript(getQuickPollJs());
                                        }
                                                break;
+                                       case wbReload:
+                                               if (Room.Type.interview != 
r.getType()) {
+                                                       wb.reloadWb(handler);
+                                               }
+                                               break;
                                }
                        }
                }
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/AbstractWbPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/AbstractWbPanel.java
index 337aacb..63965ff 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/AbstractWbPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/AbstractWbPanel.java
@@ -93,6 +93,10 @@ public abstract class AbstractWbPanel extends Panel {
                return this;
        }
 
+       public void reloadWb(IPartialPageRequestHandler handler) {
+               //designed to be empty
+       }
+
        protected abstract String getRole();
 
        /**
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
index 0e03a1e..2c9ba19 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbPanel.java
@@ -79,6 +79,7 @@ import 
org.apache.pdfbox.pdmodel.graphics.image.PDImageXObject;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
 import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
 import org.apache.wicket.markup.html.list.ListItem;
 import org.apache.wicket.markup.html.list.ListView;
 import org.apache.wicket.request.resource.JavaScriptResourceReference;
@@ -183,6 +184,13 @@ public class WbPanel extends AbstractWbPanel {
        }
 
        @Override
+       public void reloadWb(IPartialPageRequestHandler handler) {
+               StringBuilder sb = new StringBuilder("WbArea.doCleanAll();");
+               internalWbLoad(sb);
+               handler.appendJavaScript(sb);
+       }
+
+       @Override
        protected void processWbAction(WbAction a, JSONObject obj, 
AjaxRequestTarget target) throws IOException {
                Client c = rp.getClient();
                if (c == null) {
diff --git 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
index 2aac871..08ad259 100644
--- 
a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
+++ 
b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-area.js
@@ -399,6 +399,18 @@ var DrawWbArea = function() {
                $(window).off('keyup', _deleteHandler);
        };
        self.updateAreaClass = function() {};
+       self.doCleanAll = function() {
+               if (!_inited) {
+                       return;
+               }
+               tabs.find('li').each(function() {
+                       const wbId = $(this).data('wb-id')
+                               , tabId = self.getWbTabId(wbId);
+                       $(this).remove();
+                       $('#' + tabId).remove();
+               });
+               refreshTabs();
+       };
        return self;
 };
 $(function() {
diff --git 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
index 6b56bab..569abff 100644
--- 
a/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
+++ 
b/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/RoomWebService.java
@@ -418,7 +418,7 @@ public class RoomWebService extends BaseWebService {
        {
                log.debug("[cleanwb] room id {}", id);
                return performCall(sid, User.Right.Soap, sd -> {
-                       getBean(IWhiteboardManager.class).remove(id);
+                       getBean(IWhiteboardManager.class).clean(id, 
sd.getUserId());
                        return new ServiceResult("", Type.SUCCESS);
                });
        }

Reply via email to