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