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 2018/09/26 08:24:43 UTC
[openmeetings] 01/02: [OPENMEETINGS-1929] method to clean WB was
added
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
commit f10683a8b7c45a18488e605f92c92c53c860d17f
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Wed Sep 26 15:17:32 2018 +0700
[OPENMEETINGS-1929] method to clean WB was added
---
.../db/manager/IWhiteboardManager.java | 1 +
.../openmeetings/web/app/WhiteboardManager.java | 22 +++++++++++++++++++++-
.../openmeetings/webservice/RoomWebService.java | 21 +++++++++++++++++++++
3 files changed, 43 insertions(+), 1 deletion(-)
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 b321ab0..9e2a3cd 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,4 +22,5 @@ import org.apache.openmeetings.db.dto.room.Whiteboards;
public interface IWhiteboardManager {
Whiteboards get(Long roomId);
+ void remove(Long roomId);
}
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 854af61..54eda74 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
@@ -24,6 +24,7 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.TimeUnit;
import javax.annotation.PostConstruct;
@@ -83,7 +84,26 @@ public class WhiteboardManager implements IWhiteboardManager {
}
public boolean contains(Long roomId) {
- return map().containsKey(roomId);
+ return onlineWbs.containsKey(roomId);
+ }
+
+ @Override
+ public void remove(Long roomId) {
+ if (roomId == null) {
+ return;
+ }
+ try {
+ if (contains(roomId) && map().tryLock(roomId, 1, TimeUnit.SECONDS)) {
+ try {
+ onlineWbs.remove(roomId);
+ map().delete(roomId);
+ } finally {
+ map().unlock(roomId);
+ }
+ }
+ } catch (InterruptedException e) {
+ log.warn("Unexpected exception while map clean-up", e);
+ }
}
@Override
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 59568d4..591315a 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
@@ -51,6 +51,7 @@ 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.IClientManager;
+import org.apache.openmeetings.db.manager.IWhiteboardManager;
import org.apache.openmeetings.db.util.ws.RoomMessage;
import org.apache.openmeetings.service.room.InvitationManager;
import org.apache.openmeetings.webservice.error.ServiceException;
@@ -367,4 +368,24 @@ public class RoomWebService extends BaseWebService {
}
});
}
+
+ /**
+ * Method to clean room white board (all objects will be purged)
+ *
+ * @param roomId - id of the room to clean
+ * @return - serviceResult object with the result
+ */
+ @WebMethod
+ @GET
+ @Path("/cleanwb/{id}")
+ public ServiceResult cleanWb(@WebParam(name="sid") @QueryParam("sid") String sid
+ , @WebParam(name="id") @PathParam("id") long id
+ )
+ {
+ log.debug("[cleanwb] room id {}", id);
+ return performCall(sid, User.Right.Soap, sd -> {
+ getBean(IWhiteboardManager.class).remove(id);
+ return new ServiceResult("", Type.SUCCESS);
+ });
+ }
}