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 2023/03/28 09:18:23 UTC

[openmeetings] branch master updated (4b0c46c24 -> a28dea888)

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

solomax pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/openmeetings.git


    from 4b0c46c24 [OPENMEETINGS-2757] spring, swagger, plugins
     new 6a10c749e [OPENMEETINGS-2757] wicket-jquery-ui, kurento
     new a28dea888 [OPENMEETINGS-2762] Invitation hash check is more strict

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../db/dao/calendar/AppointmentDao.java            | 11 ++--
 .../db/dao/calendar/MeetingMemberDao.java          |  7 +--
 .../db/dao/calendar/OmCalendarDao.java             |  6 +--
 .../openmeetings/db/dao/file/FileItemDao.java      |  6 +--
 .../db/dao/record/RecordingChunkDao.java           |  7 +--
 .../openmeetings/db/dao/room/InvitationDao.java    | 16 +++---
 .../apache/openmeetings/db/dao/room/PollDao.java   |  6 +--
 .../openmeetings/db/dao/server/LdapConfigDao.java  |  6 +--
 .../openmeetings/db/dao/server/OAuth2Dao.java      | 15 +++---
 .../openmeetings/db/dao/server/SOAPLoginDao.java   | 14 ++---
 .../apache/openmeetings/db/dao/user/GroupDao.java  |  6 +--
 .../db/dao/user/PrivateMessageDao.java             |  6 +--
 .../db/dao/user/PrivateMessageFolderDao.java       | 12 ++---
 .../openmeetings/db/dao/user/UserContactDao.java   | 12 ++---
 .../org/apache/openmeetings/db/util/DaoHelper.java | 10 ++++
 .../apache/openmeetings/util/mail/IcalHandler.java |  2 +-
 .../openmeetings/invitiation/TestInvitation.java   | 59 ++++++++++++++--------
 pom.xml                                            | 10 +++-
 18 files changed, 122 insertions(+), 89 deletions(-)


[openmeetings] 02/02: [OPENMEETINGS-2762] Invitation hash check is more strict

Posted by so...@apache.org.
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 a28dea888fca1c5c3e0ce4c8a4c62f501aebe0cd
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Mar 28 16:18:08 2023 +0700

    [OPENMEETINGS-2762] Invitation hash check is more strict
---
 .../db/dao/calendar/AppointmentDao.java            | 11 ++--
 .../db/dao/calendar/MeetingMemberDao.java          |  7 +--
 .../db/dao/calendar/OmCalendarDao.java             |  6 +--
 .../openmeetings/db/dao/file/FileItemDao.java      |  6 +--
 .../db/dao/record/RecordingChunkDao.java           |  7 +--
 .../openmeetings/db/dao/room/InvitationDao.java    | 16 +++---
 .../apache/openmeetings/db/dao/room/PollDao.java   |  6 +--
 .../openmeetings/db/dao/server/LdapConfigDao.java  |  6 +--
 .../openmeetings/db/dao/server/OAuth2Dao.java      | 15 +++---
 .../openmeetings/db/dao/server/SOAPLoginDao.java   | 14 ++---
 .../apache/openmeetings/db/dao/user/GroupDao.java  |  6 +--
 .../db/dao/user/PrivateMessageDao.java             |  6 +--
 .../db/dao/user/PrivateMessageFolderDao.java       | 12 ++---
 .../openmeetings/db/dao/user/UserContactDao.java   | 12 ++---
 .../org/apache/openmeetings/db/util/DaoHelper.java | 10 ++++
 .../apache/openmeetings/util/mail/IcalHandler.java |  2 +-
 .../openmeetings/invitiation/TestInvitation.java   | 59 ++++++++++++++--------
 17 files changed, 114 insertions(+), 87 deletions(-)

diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
index 0ad2a752b..209860fb7 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/AppointmentDao.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.db.dao.calendar;
 
 import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.UNSUPPORTED;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.CONFIG_CALENDAR_ROOM_CAPACITY;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
@@ -75,15 +76,13 @@ public class AppointmentDao implements IDataProviderDao<Appointment>{
 	// -----------------------------------------------------------------------------------------------
 	@Override
 	public Appointment get(Long id) {
-		List<Appointment> list = em.createNamedQuery("getAppointmentById", Appointment.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getAppointmentById", Appointment.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	public Appointment getAny(Long id) {
-		List<Appointment> list = em.createNamedQuery("getAppointmentByIdAny", Appointment.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getAppointmentByIdAny", Appointment.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	public List<Appointment> get() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java
index 56569cd94..a45c24663 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/MeetingMemberDao.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.db.dao.calendar;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
+
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -39,9 +41,8 @@ public class MeetingMemberDao {
 	private EntityManager em;
 
 	public MeetingMember get(Long id) {
-		List<MeetingMember> list = em.createNamedQuery("getMeetingMemberById", MeetingMember.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getMeetingMemberById", MeetingMember.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	public List<MeetingMember> get() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
index 48fe917b5..21f9c834c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/calendar/OmCalendarDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.calendar;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.UNSUPPORTED;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 
@@ -53,9 +54,8 @@ public class OmCalendarDao implements IDataProviderDao<OmCalendar> {
 	 */
 	@Override
 	public OmCalendar get(Long calId) {
-		List<OmCalendar> list = em.createNamedQuery("getCalendarbyId", OmCalendar.class)
-				.setParameter("calId", calId).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getCalendarbyId", OmCalendar.class)
+				.setParameter("calId", calId).getResultList());
 	}
 
 	/**
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
index ad97f20eb..e3e5d3485 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.file;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 
 import java.io.File;
@@ -103,10 +104,9 @@ public class FileItemDao extends BaseFileItemDao {
 	public FileItem get(String externalId, String externalType) {
 		log.debug("get started");
 
-		List<FileItem> list = em.createNamedQuery("getFileExternal", FileItem.class)
+		return only(em.createNamedQuery("getFileExternal", FileItem.class)
 				.setParameter("externalFileId", externalId).setParameter("externalType", externalType)
-				.getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+				.getResultList());
 	}
 
 	public List<FileItem> get() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingChunkDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingChunkDao.java
index bd24a8d0a..bc09bb106 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingChunkDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/record/RecordingChunkDao.java
@@ -18,6 +18,8 @@
  */
 package org.apache.openmeetings.db.dao.record;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
+
 import java.util.Date;
 import java.util.List;
 
@@ -44,9 +46,8 @@ public class RecordingChunkDao {
 	private RecordingDao recordingDao;
 
 	public RecordingChunk get(Long id) {
-		List<RecordingChunk> list = em.createNamedQuery("getChunkById", RecordingChunk.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getChunkById", RecordingChunk.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	public List<RecordingChunk> getByRecording(Long recordingId) {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
index 7c7aa4972..54c7b015c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/InvitationDao.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.db.dao.room;
 
 import static org.apache.openmeetings.db.util.DaoHelper.getRoot;
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.util.CalendarHelper.getZoneId;
 
 import java.time.LocalDateTime;
@@ -61,9 +62,8 @@ public class InvitationDao implements IDataProviderDao<Invitation> {
 
 	@Override
 	public Invitation get(Long invId) {
-		List<Invitation> list = em.createNamedQuery("getInvitationbyId", Invitation.class)
-				.setParameter("id", invId).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getInvitationbyId", Invitation.class)
+				.setParameter("id", invId).getResultList());
 	}
 
 	@Override
@@ -159,10 +159,14 @@ public class InvitationDao implements IDataProviderDao<Invitation> {
 		}
 	}
 
+	private Invitation get(String hash) {
+		Invitation i = only(em.createNamedQuery("getInvitationByHashCode", Invitation.class)
+				.setParameter("hashCode", hash).getResultList());
+		return i != null && i.getHash().equals(hash) ? i : null;
+	}
+
 	public Invitation getByHash(String hash, boolean hidePass) {
-		List<Invitation> list = em.createNamedQuery("getInvitationByHashCode", Invitation.class)
-				.setParameter("hashCode", hash).getResultList();
-		Invitation i = list != null && list.size() == 1 ? list.get(0) : null;
+		Invitation i = get(hash);
 		if (i != null) {
 			switch (i.getValid()) {
 				case ONE_TIME:
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
index 0210e27bb..c2d42b649 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/room/PollDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.room;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 
 import java.util.Date;
@@ -85,9 +86,8 @@ public class PollDao {
 
 	public RoomPoll getByRoom(Long roomId) {
 		log.debug(" :: getPoll :: {}", roomId);
-		List<RoomPoll> list = em.createNamedQuery("getPoll", RoomPoll.class)
-				.setParameter(PARAM_ROOMID, roomId).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getPoll", RoomPoll.class)
+				.setParameter(PARAM_ROOMID, roomId).getResultList());
 	}
 
 	public List<RoomPoll> get() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
index 91cb12e1e..d2a6a5ea0 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.server;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 
 import java.util.ArrayList;
@@ -60,9 +61,8 @@ public class LdapConfigDao implements IDataProviderDao<LdapConfig> {
 
 	@Override
 	public LdapConfig get(Long id) {
-		List<LdapConfig> list = em.createNamedQuery("getLdapConfigById", LdapConfig.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getLdapConfigById", LdapConfig.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	public List<LdapConfig> getActive() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
index a81d76bea..c626c510c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/OAuth2Dao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.server;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.isAllowRegisterOauth;
 
@@ -25,7 +26,6 @@ import java.util.List;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
-import javax.persistence.TypedQuery;
 
 import org.apache.openmeetings.db.dao.IDataProviderDao;
 import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -50,15 +50,14 @@ public class OAuth2Dao implements IDataProviderDao<OAuthServer> {
 		if (!isAllowRegisterOauth()) {
 			return List.of();
 		}
-		TypedQuery<OAuthServer> query = em.createNamedQuery("getEnabledOAuthServers", OAuthServer.class);
-		return query.getResultList();
+		return em.createNamedQuery("getEnabledOAuthServers", OAuthServer.class)
+				.getResultList();
 	}
 
 	@Override
 	public OAuthServer get(Long id) {
-		List<OAuthServer> list = em.createNamedQuery("getOAuthServerById", OAuthServer.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getOAuthServerById", OAuthServer.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	@Override
@@ -74,8 +73,8 @@ public class OAuth2Dao implements IDataProviderDao<OAuthServer> {
 
 	@Override
 	public long count() {
-		TypedQuery<Long> q = em.createNamedQuery("countOAuthServers", Long.class);
-		return q.getSingleResult();
+		return em.createNamedQuery("countOAuthServers", Long.class)
+				.getSingleResult();
 	}
 
 	@Override
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
index 899684315..5dbeab254 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/SOAPLoginDao.java
@@ -19,9 +19,9 @@
 package org.apache.openmeetings.db.dao.server;
 
 import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 
 import java.util.Date;
-import java.util.List;
 
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
@@ -74,21 +74,17 @@ public class SOAPLoginDao {
 		}
 		try {
 			//MSSql find nothing in case SID is passed as-is without wildcarting '%hash%'
-			List<SOAPLogin> sList = em.createNamedQuery("getSoapLoginByHash", SOAPLogin.class)
-					.setParameter("hash", String.format("%%%s%%", hash))
-					.getResultList();
+			SOAPLogin sl = only(em.createNamedQuery("getSoapLoginByHash", SOAPLogin.class)
+					.setParameter("hash", '%' + hash + '%')
+					.getResultList());
 
-			if (sList.size() == 1) {
-				SOAPLogin sl = sList.get(0);
+			if (sl != null) {
 				if (hash.equals(sl.getHash())) {
 					return sl;
 				} else {
 					log.error("[get]: Wrong SOAPLogin was found by hash! {}", hash);
 				}
 			}
-			if (sList.size() > 1) {
-				log.error("[get]: there are more then one SOAPLogin with identical hash! {}", hash);
-			}
 		} catch (Exception ex2) {
 			log.error("[get]: ", ex2);
 		}
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
index 273672f77..7c0303479 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupDao.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.db.dao.user;
 
 import static org.apache.openmeetings.db.util.DaoHelper.getRoot;
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 
 import java.util.Collection;
@@ -49,9 +50,8 @@ public class GroupDao implements IGroupAdminDataProviderDao<Group> {
 
 	@Override
 	public Group get(Long id) {
-		List<Group> list = em.createNamedQuery("getGroupById", Group.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getGroupById", Group.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	public Group get(String name) {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
index 51a3e3d60..b6ad0bd7d 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageDao.java
@@ -21,6 +21,7 @@ package org.apache.openmeetings.db.dao.user;
 import static org.apache.openmeetings.db.entity.user.PrivateMessage.INBOX_FOLDER_ID;
 import static org.apache.openmeetings.db.util.DaoHelper.UNSUPPORTED;
 import static org.apache.openmeetings.db.util.DaoHelper.getStringParam;
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 
 import java.util.Collection;
@@ -82,9 +83,8 @@ public class PrivateMessageDao implements IDataProviderDao<PrivateMessage> {
 
 	@Override
 	public PrivateMessage get(Long id) {
-		List<PrivateMessage> list = em.createNamedQuery("getPrivateMessageById", PrivateMessage.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getPrivateMessageById", PrivateMessage.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	@Override
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java
index 08fca325a..9e1607ebe 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/PrivateMessageFolderDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.user;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.UNSUPPORTED;
 import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 
@@ -66,17 +67,16 @@ public class PrivateMessageFolderDao implements IDataProviderDao<PrivateMessageF
 
 	@Override
 	public PrivateMessageFolder get(Long id) {
-		final String hql = "select c from PrivateMessageFolder c where c.id = :id ";
-
-		List<PrivateMessageFolder> list = em.createQuery(hql, PrivateMessageFolder.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createQuery("select c from PrivateMessageFolder c where c.id = :id "
+					, PrivateMessageFolder.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	@Override
 	public List<PrivateMessageFolder> get(long start, long count) {
 		return setLimits(
-				em.createQuery("SELECT c FROM PrivateMessageFolder c ORDER BY c.id", PrivateMessageFolder.class)
+				em.createQuery("SELECT c FROM PrivateMessageFolder c ORDER BY c.id"
+					, PrivateMessageFolder.class)
 				, start, count)
 				.getResultList();
 	}
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserContactDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserContactDao.java
index 5fdbdde1e..f6576d09e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserContactDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserContactDao.java
@@ -18,6 +18,7 @@
  */
 package org.apache.openmeetings.db.dao.user;
 
+import static org.apache.openmeetings.db.util.DaoHelper.only;
 import static org.apache.openmeetings.db.util.DaoHelper.setLimits;
 import static org.apache.openmeetings.util.OpenmeetingsVariables.PARAM_USER_ID;
 
@@ -78,12 +79,10 @@ public class UserContactDao {
 	}
 
 	public UserContact get(Long userId, Long ownerId) {
-		List<UserContact> ll = em.createNamedQuery("getContactByUserOwner", UserContact.class)
+		return only(em.createNamedQuery("getContactByUserOwner", UserContact.class)
 				.setParameter(PARAM_USER_ID, userId)
 				.setParameter(PARAM_OWNERID, ownerId)
-				.getResultList();
-		log.info("number of contacts:: {}", (ll == null ? null : ll.size()));
-		return ll != null && ll.size() == 1 ? ll.get(0) : null;
+				.getResultList());
 	}
 
 	public boolean isContact(Long userId, Long ownerId) {
@@ -118,9 +117,8 @@ public class UserContactDao {
 	}
 
 	public UserContact get(Long id) {
-		List<UserContact> list = em.createNamedQuery("getUserContactsById", UserContact.class)
-				.setParameter("id", id).getResultList();
-		return list.size() == 1 ? list.get(0) : null;
+		return only(em.createNamedQuery("getUserContactsById", UserContact.class)
+				.setParameter("id", id).getResultList());
 	}
 
 	public List<UserContact> get() {
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
index 9c6d96509..3e5515e7e 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/util/DaoHelper.java
@@ -42,8 +42,11 @@ import org.apache.openjpa.persistence.OpenJPAQuery;
 import org.apache.openmeetings.db.entity.user.GroupUser;
 import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
 import org.apache.wicket.util.string.Strings;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 public class DaoHelper {
+	private static final Logger log = LoggerFactory.getLogger(DaoHelper.class);
 	public static final UnsupportedOperationException UNSUPPORTED = new UnsupportedOperationException("Should not be used");
 
 	private DaoHelper() {}
@@ -205,6 +208,13 @@ public class DaoHelper {
 		return l.isEmpty() ? null : l.get(0);
 	}
 
+	public static <T> T only(List<T> l) {
+		if (l.size() > 1) {
+			log.error("More than one ({}) record found", l.size());
+		}
+		return l.isEmpty() ? null : l.get(0);
+	}
+
 	@SuppressWarnings("unchecked")
 	public static <T> Root<T> getRoot(CriteriaQuery<?> query, Class<T> clazz) {
 		return query.getRoots().stream()
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
index 35642ec34..0bd234f34 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/mail/IcalHandler.java
@@ -169,7 +169,7 @@ public class IcalHandler {
 			params.add(chair ? PartStat.ACCEPTED : PartStat.NEEDS_ACTION);
 			params.add(Rsvp.TRUE);
 		}
-		meetingProperties.add(new Attendee(new ParameterList(params), URI.create(MAILTO + email)));
+		meetingProperties.add(new Attendee(new ParameterList(params), getMailto(email)));
 		return this;
 	}
 
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java b/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
index c777733e8..43de067c1 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/invitiation/TestInvitation.java
@@ -20,11 +20,13 @@ package org.apache.openmeetings.invitiation;
 
 import static org.apache.openmeetings.util.CalendarHelper.getDate;
 import static org.junit.jupiter.api.Assertions.assertNotNull;
+import static org.junit.jupiter.api.Assertions.assertNull;
 
 import java.time.LocalDateTime;
 import java.util.Date;
 
 import org.apache.openmeetings.AbstractWicketTesterTest;
+import org.apache.openmeetings.db.dao.room.InvitationDao;
 import org.apache.openmeetings.db.dao.room.RoomDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.room.Invitation;
@@ -37,21 +39,41 @@ import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
 class TestInvitation extends AbstractWicketTesterTest {
+	@Autowired
+	private InvitationDao inviteDao;
 	@Autowired
 	private InvitationManager invitationManager;
 	@Autowired
 	private RoomDao roomDao;
 
-	@Test
-	void testSendInvitationLink() throws Exception {
+	private Invitation create(Valid valid) {
+		return create(valid, false);
+	}
+
+	private Invitation create(Valid valid, boolean createApp) {
+		LocalDateTime base = LocalDateTime.now().plusDays(1).withHour(12).withMinute(0).withSecond(0);
 		User us = userDao.getByLogin(adminUsername, User.Type.USER, null);
 
-		LocalDateTime from = LocalDateTime.now().plusDays(1).withHour(12).withMinute(0).withSecond(0);
-		User invitee = userDao.getContact("sebawagner@apache.org", "Testname", "Testlastname", us.getId());
-		Invitation i = invitationManager.getInvitation(invitee, roomDao.get(1L),
-				false, "", Valid.ONE_TIME
+		Date from = getDate(base, "GMT");
+		Date to = getDate(base.plusHours(2), "GMT");
+		Appointment app = null;
+		Room r = roomDao.get(1L);
+		if (createApp) {
+			app = getAppointment(us, r, from, to);
+			appointmentDao.update(app, null, false);
+		}
+		return invitationManager.getInvitation(
+				userDao.getContact("sebawagner@apache.org", "Testname", "Testlastname", us.getId())
+				, r
+				, false, "", valid
 				, us, us.getLanguageId(),
-				getDate(from, "GMT"), getDate(from.plusHours(2), "GMT"), null);
+				from, to, app);
+	}
+
+
+	@Test
+	void testSendInvitationLink() throws Exception {
+		Invitation i = create(Valid.ONE_TIME);
 
 		invitationManager.sendInvitationLink(i, MessageType.CREATE, "subject", "message", false, null);
 		assertNotNull(i);
@@ -59,21 +81,18 @@ class TestInvitation extends AbstractWicketTesterTest {
 
 	@Test
 	void testSendCancel() throws Exception {
-		User us = userDao.getByLogin(adminUsername, User.Type.USER, null);
-
-		LocalDateTime from = LocalDateTime.now().plusDays(1).withHour(12).withMinute(0).withSecond(0);
-		Date start = getDate(from, "GMT");
-		Date end = getDate(from.plusHours(2), "GMT");
-		Room r = roomDao.get(1L);
-		User invitee = userDao.getContact("sebawagner@apache.org", "Testname", "Testlastname", us.getId());
-		Appointment app = getAppointment(us, r, start, end);
-		appointmentDao.update(app, null, false);
-		Invitation i = invitationManager.getInvitation(invitee, r,
-				false, "", Valid.ONE_TIME
-				, us, us.getLanguageId(),
-				start, end, app);
+		Invitation i = create(Valid.ONE_TIME, true);
 
 		invitationManager.sendInvitationLink(i, MessageType.CANCEL, "subject", "message", true, "https://localhost:5443/openmeetings");
 		assertNotNull(i);
 	}
+
+	@Test
+	void testGetByHash() {
+		final Invitation i1 = create(Valid.ENDLESS);
+		final String hash = i1.getHash();
+
+		assertNull(inviteDao.getByHash(hash.substring(0, 2) + '%', false));
+		assertNotNull(inviteDao.getByHash(hash, false));
+	}
 }


[openmeetings] 01/02: [OPENMEETINGS-2757] wicket-jquery-ui, kurento

Posted by so...@apache.org.
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 6a10c749ed97cefd9425d2b5e7de15f667f21520
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Tue Mar 28 16:10:24 2023 +0700

    [OPENMEETINGS-2757] wicket-jquery-ui, kurento
---
 pom.xml | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/pom.xml b/pom.xml
index d4697df6f..dccce0d75 100644
--- a/pom.xml
+++ b/pom.xml
@@ -82,7 +82,7 @@
 		<!-- dependency versions -->
 		<junit.version>5.9.2</junit.version>
 		<wicket.version>9.12.0</wicket.version>
-		<wicket-jquery-ui.version>9.11.0</wicket-jquery-ui.version>
+		<wicket-jquery-ui.version>9.12.0</wicket-jquery-ui.version>
 		<wicketstuff.version>9.12.0</wicketstuff.version>
 		<wicket-bootstrap.version>6.0.2</wicket-bootstrap.version>
 		<font-awesome.version>6.3.0</font-awesome.version>
@@ -125,7 +125,7 @@
 		<bcprov-jdk15on.version>1.70</bcprov-jdk15on.version>
 		<mockito.version>5.2.0</mockito.version>
 		<quartz.version>2.3.2</quartz.version>
-		<kurento.version>6.18.0</kurento.version>
+		<kurento.version>7.0.0</kurento.version>
 		<jain-sip.version>1.2.307</jain-sip.version><!-- other versions are broken! -->
 		<jasny-bootstrap.version>3.1.3-2</jasny-bootstrap.version>
 		<jodconverter.version>4.4.6</jodconverter.version>
@@ -1777,6 +1777,9 @@
 		</profile>
 		<profile>
 			<id>rc</id>
+			<properties>
+				<site.skip>true</site.skip>
+			</properties>
 			<build>
 				<plugins>
 					<plugin>
@@ -1794,6 +1797,9 @@
 					<plugin>
 						<groupId>org.apache.maven.plugins</groupId>
 						<artifactId>maven-javadoc-plugin</artifactId>
+						<configuration>
+							<skip>false</skip>
+						</configuration>
 						<executions>
 							<execution>
 								<id>attach-javadocs</id>