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 2022/12/19 09:48:06 UTC

[openmeetings] branch master updated: [OPENMEETINGS-2733] Sonar should be more happy

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 fad82268c [OPENMEETINGS-2733] Sonar should be more happy
fad82268c is described below

commit fad82268c5aaedfec37fdb3b9e23158f87271c1b
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Mon Dec 19 16:47:51 2022 +0700

    [OPENMEETINGS-2733] Sonar should be more happy
---
 .../openmeetings/core/ldap/LdapLoginManager.java   |  2 +-
 .../apache/openmeetings/core/mail/MailHandler.java |  5 +-
 .../openmeetings/core/util/WebSocketHelper.java    |  6 +--
 .../openmeetings/db/dto/room/Whiteboard.java       |  8 +--
 .../openmeetings/db/entity/basic/Client.java       |  4 +-
 .../openmeetings/db/entity/basic/StreamDesc.java   |  4 +-
 .../apache/openmeetings/backup/BackupImport.java   |  6 +--
 .../openmeetings/backup/converter/WbConverter.java |  4 +-
 .../service/scheduler/AbstractJob.java             |  4 +-
 .../openmeetings/util/OpenmeetingsVariables.java   |  2 +-
 .../openmeetings/util/process/ProcessHelper.java   |  2 +-
 .../apache/openmeetings/web/app/ClientManager.java |  8 +--
 .../openmeetings/web/app/WhiteboardManager.java    |  2 +-
 .../common/datetime/AbstractOmDateTimePicker.java  |  2 +-
 .../web/common/tree/FileTreePanel.java             |  4 +-
 .../apache/openmeetings/web/room/wb/WbPanel.java   | 63 +++++++++++-----------
 .../web/room/wb/WbWebSocketHelper.java             | 20 +++----
 .../web/user/calendar/CalendarDialog.java          |  6 +--
 .../web/util/logging/TomcatGenericExports.java     |  2 +-
 19 files changed, 78 insertions(+), 76 deletions(-)

diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
index e0e7804b9..33139d299 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManager.java
@@ -371,7 +371,7 @@ public class LdapLoginManager {
 			return u;
 		}
 
-		public User setUserPicture(Entry entry, User inUser) throws LdapInvalidAttributeValueException {
+		public User setUserPicture(Entry entry, User inUser) {
 			User user = Optional.ofNullable(getAttr(config, entry, CONFIGKEY_LDAP_KEY_PICTURE, ""))
 					.map(Attribute::get)
 					.filter(val -> val != null && val.getBytes() != null)
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
index 445d1a67f..d673220d2 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/mail/MailHandler.java
@@ -32,7 +32,6 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.isSmtpUseSsl;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isSmtpUseTls;
 
 import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
 import java.util.Calendar;
@@ -118,11 +117,11 @@ public class MailHandler {
 		return msg;
 	}
 
-	private MimeMessage appendBody(MimeMessage msg, MailMessage m) throws MessagingException, IOException {
+	private MimeMessage appendBody(MimeMessage msg, MailMessage m) throws MessagingException {
 		return appendBody(msg, m.getBody());
 	}
 
-	public MimeMessage appendBody(MimeMessage msg, String body) throws MessagingException, IOException {
+	public MimeMessage appendBody(MimeMessage msg, String body) throws MessagingException {
 		// -- Set the subject and body text --
 		msg.setDataHandler(new DataHandler(new ByteArrayDataSource(body, "text/html; charset=\"utf-8\"")));
 
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 a8f3d9563..896856bd1 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
@@ -69,7 +69,7 @@ public class WebSocketHelper {
 			sendClient(omClient, c -> {
 				try {
 					c.sendMessage(b, 0, b.length);
-				} catch (Throwable e) {
+				} catch (Exception e) {
 					log.error("Error while sending binary message to client", e);
 				}
 			});
@@ -82,7 +82,7 @@ public class WebSocketHelper {
 			sendClient(omClient, c -> {
 				try {
 					c.sendMessage(msg.toString());
-				} catch (Throwable e) {
+				} catch (Exception e) {
 					log.error("Error while sending message to client", e);
 				}
 			});
@@ -94,7 +94,7 @@ public class WebSocketHelper {
 		sendClient(omClient, c -> {
 			try {
 				c.sendMessage(m);
-			} catch (Throwable e) {
+			} catch (Exception e) {
 				log.error("Error while sending message to client", e);
 			}
 		});
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
index 25e6b5018..769a237bf 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/Whiteboard.java
@@ -19,7 +19,7 @@
 package org.apache.openmeetings.db.dto.room;
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_SRC;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM__SRC;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_SRC_UND;
 
 import java.io.BufferedWriter;
 import java.io.IOException;
@@ -215,13 +215,13 @@ public class Whiteboard implements Serializable {
 			JSONObject o = new JSONObject(e.getValue());
 			//filtering
 			if ("Clipart".equals(o.opt(ATTR_OMTYPE))) {
-				if (o.has(PARAM__SRC)) {
-					o.put(PARAM_SRC, o.get(PARAM__SRC));
+				if (o.has(PARAM_SRC_UND)) {
+					o.put(PARAM_SRC, o.get(PARAM_SRC_UND));
 				}
 			} else {
 				o.remove(PARAM_SRC);
 			}
-			o.remove(PARAM__SRC);
+			o.remove(PARAM_SRC_UND);
 			items.put(e.getKey(), o);
 		}
 		json.put(ITEMS_KEY, items);
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
index ec182e493..742e246c0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/Client.java
@@ -223,14 +223,14 @@ public class Client implements IDataProviderEntity, IWsClient {
 	public Optional<ScreenStreamDesc> getScreenStream() {
 		return streams.values().stream()
 				.filter(sd -> StreamType.SCREEN == sd.getType())
-				.map(sd -> (ScreenStreamDesc)sd)
+				.map(ScreenStreamDesc.class::cast)
 				.findFirst();
 	}
 
 	public Stream<WebcamStreamDesc> getCamStreams() {
 		return streams.values().stream()
 				.filter(sd -> StreamType.WEBCAM == sd.getType())
-				.map(sd -> (WebcamStreamDesc)sd);
+				.map(WebcamStreamDesc.class::cast);
 	}
 
 	public Date getConnectedSince() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/StreamDesc.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/StreamDesc.java
index 9508bb208..eebc62058 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/StreamDesc.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/entity/basic/StreamDesc.java
@@ -40,7 +40,7 @@ public abstract class StreamDesc implements Serializable, Cloneable {
 	private int width;
 	private int height;
 
-	public StreamDesc(StreamDesc sd) {
+	protected StreamDesc(StreamDesc sd) {
 		this.client = sd.client;
 		this.uid = sd.uid;
 		this.type = sd.type;
@@ -49,7 +49,7 @@ public abstract class StreamDesc implements Serializable, Cloneable {
 		this.activities.addAll(sd.activities);
 	}
 
-	public StreamDesc(final Client client, StreamType type) {
+	protected StreamDesc(final Client client, StreamType type) {
 		this.client = client;
 		this.uid = randomUUID().toString();
 		this.type = type;
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
index 7e9af5d50..ec9e84dbf 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java
@@ -590,7 +590,7 @@ public class BackupImport {
 	/*
 	 * ##################### Import Groups
 	 */
-	void importGroups(File base) throws Exception {
+	void importGroups(File base) {
 		log.info("Configs import complete, starting group import");
 		readList(base, "organizations.xml", GROUP_LIST_NODE, GROUP_NODE, Group.class, g -> {
 			Long oldId = g.getId();
@@ -968,7 +968,7 @@ public class BackupImport {
 	/*
 	 * ##################### Import Recordings
 	 */
-	void importRecordings(File base) throws Exception {
+	void importRecordings(File base) {
 		log.info("Meeting members import complete, starting recordings server import");
 		final Map<Long, Long> folders = new HashMap<>();
 		saveTree(base, "flvRecordings.xml", RECORDING_LIST_NODE, RECORDING_NODE, Recording.class, folders, r -> {
@@ -1083,7 +1083,7 @@ public class BackupImport {
 	/*
 	 * ##################### Import File-Explorer Items
 	 */
-	private List<FileItem> importFiles(File base) throws Exception {
+	private List<FileItem> importFiles(File base) {
 		log.info("Private message import complete, starting file explorer item import");
 		List<FileItem> result = new ArrayList<>();
 		final Map<Long, Long> folders = new HashMap<>();
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
index 57bcaea09..e5decb667 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/backup/converter/WbConverter.java
@@ -26,7 +26,7 @@ import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_FILE_TYPE;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_SLIDE;
 import static org.apache.openmeetings.db.dto.room.Whiteboard.ATTR_TYPE;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_WML;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM__SRC;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_SRC_UND;
 
 import java.io.BufferedReader;
 import java.io.File;
@@ -202,7 +202,7 @@ public class WbConverter {
 		add(wb, init(wb, props)
 				.put(ATTR_TYPE, TYPE_IMAGE)
 				.put("omType", "Clipart")
-				.put(PARAM__SRC, src)
+				.put(PARAM_SRC_UND, src)
 				.put("angle", props.get(3)));
 	}
 
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AbstractJob.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AbstractJob.java
index 513c4d5f5..ae53f5323 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AbstractJob.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/scheduler/AbstractJob.java
@@ -22,7 +22,7 @@ import static org.apache.openmeetings.util.OpenmeetingsVariables.isInitComplete;
 
 import java.time.Instant;
 import java.time.temporal.ChronoUnit;
-import java.util.function.BiConsumer;
+import java.util.function.ObjLongConsumer;
 
 import org.apache.openmeetings.db.dao.record.RecordingDao;
 import org.apache.openmeetings.db.dao.user.GroupDao;
@@ -39,7 +39,7 @@ public abstract class AbstractJob {
 	@Autowired
 	RecordingDao recordingDao;
 
-	void processExpiringRecordings(boolean notified, BiConsumer<Recording, Long> consumer) {
+	void processExpiringRecordings(boolean notified, ObjLongConsumer<Recording> consumer) {
 		if (!isInitComplete()) {
 			return;
 		}
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
index 715fe626b..e28c3b3dd 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/OpenmeetingsVariables.java
@@ -37,7 +37,7 @@ public class OpenmeetingsVariables {
 	public static final String PARAM_USER_ID = "userId";
 	public static final String PARAM_STATUS = "status";
 	public static final String PARAM_SRC = "src";
-	public static final String PARAM__SRC = "_src";
+	public static final String PARAM_SRC_UND = "_src";
 	public static final String CONFIG_CRYPT = "crypt.class.name";
 	public static final String CONFIG_DASHBOARD_SHOW_CHAT = "dashboard.show.chat";
 	public static final String CONFIG_DASHBOARD_SHOW_MYROOMS = "dashboard.show.myrooms";
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
index a82acc997..1eeb86b2a 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ProcessHelper.java
@@ -97,7 +97,7 @@ public class ProcessHelper {
 		return exec(process, argv, Map.of(), optional);
 	}
 
-	private static ProcessResult exec(String process, List<String> argv, Map<? extends String, ? extends String> env, boolean optional) {
+	private static ProcessResult exec(String process, List<String> argv, Map<String, String> env, boolean optional) {
 		ProcessResult res = new ProcessResult()
 				.setProcess(process)
 				.setOptional(optional);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
index eff15eaef..11c2c47dd 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/ClientManager.java
@@ -32,7 +32,7 @@ import java.util.Optional;
 import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.Function;
+import java.util.function.UnaryOperator;
 import java.util.stream.Stream;
 
 import org.apache.openmeetings.db.dao.log.ConferenceLogDao;
@@ -332,7 +332,7 @@ public class ClientManager implements IClientManager {
 		}
 	}
 
-	private String getServerUrl(Map.Entry<String, ServerInfo> e, Room r, Function<String, String> generator) {
+	private String getServerUrl(Map.Entry<String, ServerInfo> e, Room r, UnaryOperator<String> generator) {
 		final String curServerId = app.getServerId();
 		String serverId = e.getKey();
 		if (!curServerId.equals(serverId)) {
@@ -342,12 +342,12 @@ public class ClientManager implements IClientManager {
 		return null;
 	}
 
-	public String getServerUrl(Room r, Function<String, String> inGenerator) {
+	public String getServerUrl(Room r, UnaryOperator<String> inGenerator) {
 		if (onlineServers.size() == 1) {
 			log.debug("Cluster:: The only server found");
 			return null;
 		}
-		Function<String, String> generator = inGenerator == null ? baseUrl -> {
+		UnaryOperator<String> generator = inGenerator == null ? baseUrl -> {
 			String uuid = UUID.randomUUID().toString();
 			tokens().put(uuid, new InstantToken(getUserId(), r.getId()));
 			return Application.urlForPage(SignInPage.class, new PageParameters().add(TOKEN_PARAM, uuid), baseUrl);
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 cda6b6e36..49801d1a9 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
@@ -147,7 +147,7 @@ public class WhiteboardManager implements IWhiteboardManager {
 				getOrCreate(r.getId(), wbs -> {
 					r.getFiles().stream()
 						.sorted((rf1, rf2) -> (int)(rf1.getWbIdx() - rf2.getWbIdx()))
-						.collect(Collectors.groupingBy(f -> f.getWbIdx()))
+						.collect(Collectors.groupingBy(RoomFile::getWbIdx))
 						.forEach((wbIdx, fileList) -> {
 							log.trace("WBS init, processing idx {}", wbIdx);
 							Whiteboard wb = add(wbs, langId);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/datetime/AbstractOmDateTimePicker.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/datetime/AbstractOmDateTimePicker.java
index de23bd14b..dc521e527 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/datetime/AbstractOmDateTimePicker.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/datetime/AbstractOmDateTimePicker.java
@@ -117,7 +117,7 @@ public abstract class AbstractOmDateTimePicker<T extends Serializable> extends F
 	public static String patch(String format) {
 		// in Java free text is escaped with single-quotes
 		// moment.js uses []
-		return format.replaceAll("[']{1}([^']*)[']{1}", "\\[$1\\]");
+		return format.replaceAll("[']([^']*)[']", "\\[$1\\]");
 	}
 
 	public static String getDateTimeFormat() {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
index 54806e18e..9c4afcde8 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
@@ -438,7 +438,9 @@ public abstract class FileTreePanel extends Panel {
 	}
 
 	private void updateTrash(IPartialPageRequestHandler handler) {
-		final boolean hasDeletable = selected.values().stream().map(f -> f.getId()).anyMatch(Objects::nonNull);
+		final boolean hasDeletable = selected.values().stream()
+				.map(BaseFileItem::getId)
+				.anyMatch(Objects::nonNull);
 		trash.add(AttributeModifier.replace(ATTR_CLASS, TRASH_CLASS + (hasDeletable && !readOnly ? "" : DISABLED_CLASS)));
 		if (handler != null) {
 			handler.add(trash);
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 b21a2a723..de937790e 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
@@ -127,7 +127,7 @@ public class WbPanel extends AbstractWbPanel {
 	private final SerializableBiConsumer<Whiteboard, Boolean> addUndo = (wb, redo) -> {
 		JSONArray arr = getArray(wb.toJson(), null);
 		if (arr.length() != 0) {
-			if (!redo) {
+			if (Boolean.FALSE.equals(redo)) {
 				cleanRedo(wb.getId());
 			}
 			addUndo(wb.getId(), new UndoObject(WbAction.CLEAR_ALL
@@ -203,7 +203,7 @@ public class WbPanel extends AbstractWbPanel {
 		}
 		//presenter-right
 		if (c.hasRight(Right.PRESENTER)) {
-			processActionPresenter(c, a, obj, redo, handler);
+			processActionPresenter(c, a, obj, redo);
 		}
 		//wb-right
 		if (c.hasRight(Right.PRESENTER) || c.hasRight(Right.WHITEBOARD)) {
@@ -211,7 +211,7 @@ public class WbPanel extends AbstractWbPanel {
 		}
 	}
 
-	private boolean processActionGeneral(Client c, WbAction a, JSONObject obj, IPartialPageRequestHandler handler) throws IOException {
+	private boolean processActionGeneral(Client c, WbAction a, JSONObject obj, IPartialPageRequestHandler handler) {
 		switch (a) {
 			case CREATE_OBJ, MODIFY_OBJ:
 			{
@@ -232,39 +232,15 @@ public class WbPanel extends AbstractWbPanel {
 				return true;
 			}
 			case LOAD_VIDEOS:
-			{
-				StringBuilder sb = new StringBuilder("WbArea.initVideos(");
-				JSONArray arr = new JSONArray();
-				for (Entry<Long, Whiteboard> entry : wbm.list(roomId)) {
-					Whiteboard wb = entry.getValue();
-					for (JSONObject o : wb.list()) {
-						String ft = o.optString(ATTR_FILE_TYPE);
-						if (BaseFileItem.Type.RECORDING.name().equals(ft) || BaseFileItem.Type.VIDEO.name().equals(ft)) {
-							JSONObject status = o.optJSONObject(PARAM_STATUS);
-							if (status == null) {
-								continue;
-							}
-							JSONObject sts = new JSONObject(status.toString()); //copy
-							sts.put("pos", sts.getDouble("pos") + (System.currentTimeMillis() - sts.getLong(PARAM_UPDATED)) * 1. / 1000);
-							arr.put(new JSONObject()
-									.put("wbId", wb.getId())
-									.put("uid", o.getString("uid"))
-									.put(ATTR_SLIDE, o.getString(ATTR_SLIDE))
-									.put(PARAM_STATUS, sts));
-						}
-					}
-				}
-				sb.append(arr.toString()).append(");");
-				handler.appendJavaScript(sb);
+				loadVideos(handler);
 				return true;
-			}
 			default:
 				break;
 		}
 		return false;
 	}
 
-	private void processActionPresenter(Client c, WbAction a, JSONObject obj, boolean redo, IPartialPageRequestHandler handler) throws IOException {
+	private void processActionPresenter(Client c, WbAction a, JSONObject obj, boolean redo) {
 		switch (a) {
 			case CREATE_WB:
 			{
@@ -480,6 +456,32 @@ public class WbPanel extends AbstractWbPanel {
 		}
 	}
 
+	private void loadVideos(IPartialPageRequestHandler handler) {
+		StringBuilder sb = new StringBuilder("WbArea.initVideos(");
+		JSONArray arr = new JSONArray();
+		for (Entry<Long, Whiteboard> entry : wbm.list(roomId)) {
+			Whiteboard wb = entry.getValue();
+			for (JSONObject o : wb.list()) {
+				String ft = o.optString(ATTR_FILE_TYPE);
+				if (BaseFileItem.Type.RECORDING.name().equals(ft) || BaseFileItem.Type.VIDEO.name().equals(ft)) {
+					JSONObject status = o.optJSONObject(PARAM_STATUS);
+					if (status == null) {
+						continue;
+					}
+					JSONObject sts = new JSONObject(status.toString()); //copy
+					sts.put("pos", sts.getDouble("pos") + (System.currentTimeMillis() - sts.getLong(PARAM_UPDATED)) * 1. / 1000);
+					arr.put(new JSONObject()
+							.put("wbId", wb.getId())
+							.put("uid", o.getString("uid"))
+							.put(ATTR_SLIDE, o.getString(ATTR_SLIDE))
+							.put(PARAM_STATUS, sts));
+				}
+			}
+		}
+		sb.append(arr.toString()).append(");");
+		handler.appendJavaScript(sb);
+	}
+
 	@Override
 	protected String getRole() {
 		String role = ROLE_NONE;
@@ -672,8 +674,7 @@ public class WbPanel extends AbstractWbPanel {
 		if (deq == null || deq.isEmpty()) {
 			return null;
 		}
-		UndoObject redoObj = deq.pop();
-		return redoObj;
+		return deq.pop();
 	}
 
 	private static class LimitedLinkedList<T> extends LinkedList<T> {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
index 9752ab22c..45a46696b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/WbWebSocketHelper.java
@@ -22,7 +22,7 @@ import static org.apache.openmeetings.core.util.WebSocketHelper.alwaysTrue;
 import static org.apache.openmeetings.core.util.WebSocketHelper.publish;
 import static org.apache.openmeetings.core.util.WebSocketHelper.sendRoom;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_SRC;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM__SRC;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_SRC_UND;
 
 import java.util.function.Predicate;
 
@@ -44,7 +44,7 @@ import com.github.openjson.JSONObject;
 
 public class WbWebSocketHelper {
 	public static final String PARAM_OBJ = "obj";
-	private static final String PARAM__POSTER = "_poster";
+	private static final String PARAM_POSTER_UND = "_poster";
 
 	private WbWebSocketHelper() {
 		// denied
@@ -116,17 +116,17 @@ public class WbWebSocketHelper {
 		switch (fi.getType()) {
 			case VIDEO:
 				ref = new RoomResourceReference();
-				file.put(PARAM__SRC, urlFor(ref, pp));
-				file.put(PARAM__POSTER, urlFor(new RoomPreviewResourceReference(), pp));
+				file.put(PARAM_SRC_UND, urlFor(ref, pp));
+				file.put(PARAM_POSTER_UND, urlFor(new RoomPreviewResourceReference(), pp));
 				break;
 			case RECORDING:
 				ref = new Mp4RecordingResourceReference();
-				file.put(PARAM__SRC, urlFor(ref, pp));
-				file.put(PARAM__POSTER, urlFor(new PngRecordingResourceReference(), pp));
+				file.put(PARAM_SRC_UND, urlFor(ref, pp));
+				file.put(PARAM_POSTER_UND, urlFor(new PngRecordingResourceReference(), pp));
 				break;
 			case PRESENTATION:
 				ref = new RoomResourceReference();
-				file.put(PARAM__SRC, urlFor(ref, pp));
+				file.put(PARAM_SRC_UND, urlFor(ref, pp));
 				break;
 			default:
 				ref = new RoomResourceReference();
@@ -149,11 +149,11 @@ public class WbWebSocketHelper {
 		JSONObject f = new JSONObject(inFile.toString()); // deep copy to ensure thread safety
 		switch (fi.getType()) {
 			case VIDEO, RECORDING:
-				f.put(PARAM__SRC, patchUrl(f.getString(PARAM__SRC), c));
-				f.put(PARAM__POSTER, patchUrl(f.getString(PARAM__POSTER), c));
+				f.put(PARAM_SRC_UND, patchUrl(f.getString(PARAM_SRC_UND), c));
+				f.put(PARAM_POSTER_UND, patchUrl(f.getString(PARAM_POSTER_UND), c));
 				break;
 			case PRESENTATION:
-				f.put(PARAM__SRC, patchUrl(f.getString(PARAM__SRC), c));
+				f.put(PARAM_SRC_UND, patchUrl(f.getString(PARAM_SRC_UND), c));
 				break;
 			default:
 				f.put(PARAM_SRC, patchUrl(f.getString(PARAM_SRC), c));
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
index 01ac049d0..4f830b54a 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/calendar/CalendarDialog.java
@@ -117,7 +117,7 @@ public class CalendarDialog extends Modal<OmCalendar> {
 						HttpClient client = calendarPanel.getHttpClient();
 						HttpClientContext context = calendarPanel.getHttpClientContext();
 
-						if (form.gcal.getModelObject()) {
+						if (Boolean.TRUE.equals(form.gcal.getModelObject())) {
 							c.setSyncType(OmCalendar.SyncType.GOOGLE_CALENDAR);
 							c.setToken(form.username.getModelObject());
 							if (c.getId() == null) {
@@ -389,7 +389,7 @@ public class CalendarDialog extends Modal<OmCalendar> {
 			@Override
 			public void validate(IValidatable<String> validatable) {
 				//Only Validate when It's not a Google Calendar i.e a URL
-				if (!gcal.getModelObject()) {
+				if (Boolean.FALSE.equals(gcal.getModelObject())) {
 					super.validate(validatable);
 				}
 			}
@@ -506,7 +506,7 @@ public class CalendarDialog extends Modal<OmCalendar> {
 
 			//Add new AttributeModifier to change the type of URLTextField, to text for
 			//Google Calendar and to URL for a normal CalDAV calendar
-			url.add(AttributeModifier.replace("type", gcal.getModelObject() ? "text" : "url"));
+			url.add(AttributeModifier.replace("type", Boolean.TRUE.equals(gcal.getModelObject()) ? "text" : "url"));
 		}
 
 
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatGenericExports.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatGenericExports.java
index 696fbf527..5403b53b2 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatGenericExports.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/logging/TomcatGenericExports.java
@@ -299,7 +299,7 @@ public class TomcatGenericExports extends Collector {
 			props.load(is);
 			//server info can be get as props.getProperty("server.info");
 			tomcatInfo.addMetric(List.of(props.getProperty("server.number"), props.getProperty("server.built")), 1);
-		} catch (Throwable t) {
+		} catch (Exception t) {
 			log.warn("Unable to read Tomcat version: ", t);
 		}
 		mfs.add(tomcatInfo);