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);
});
}