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/11/02 07:02:09 UTC

[openmeetings] branch master updated: [OPENMEETINGS-1856] some Sonar issues are addressed

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 6c04a5d  [OPENMEETINGS-1856] some Sonar issues are addressed
6c04a5d is described below

commit 6c04a5dc5a12e0e36df3942b5ddaf8ed654b2d05
Author: Maxim Solodovnik <so...@gmail.com>
AuthorDate: Fri Nov 2 14:01:55 2018 +0700

    [OPENMEETINGS-1856] some Sonar issues are addressed
---
 .../core/converter/DocumentConverter.java          |  7 ++---
 .../openmeetings/core/ldap/LdapLoginManager.java   |  7 ++---
 .../org/apache/openmeetings/core/remote/KRoom.java |  3 ++-
 .../apache/openmeetings/core/remote/KStream.java   |  6 +++--
 .../openmeetings/core/remote/KTestStream.java      |  5 ++--
 .../openmeetings/core/remote/KurentoHandler.java   | 31 ++++++++++++----------
 .../db/dao/calendar/AppointmentDao.java            | 16 ++++++-----
 .../openmeetings/db/dao/file/FileItemLogDao.java   |  7 ++---
 .../db/dao/record/RecordingChunkDao.java           |  7 ++---
 .../apache/openmeetings/db/dao/room/PollDao.java   | 11 ++++----
 .../openmeetings/db/dao/user/GroupUserDao.java     |  7 ++---
 .../db/dao/user/PrivateMessageDao.java             |  7 ++---
 .../openmeetings/db/dao/user/UserContactDao.java   |  7 ++---
 .../apache/openmeetings/db/dao/user/UserDao.java   |  7 ++---
 .../java/org/apache/openmeetings/cli/Admin.java    | 26 ++++++++++--------
 .../org/apache/openmeetings/screenshare/Core.java  | 16 ++++++-----
 .../service/quartz/scheduler/AtomReader.java       | 14 +++++-----
 .../apache/openmeetings/util/CalendarPatterns.java |  9 +++----
 .../openmeetings/web/app/QuickPollManager.java     |  3 ++-
 .../openmeetings/web/pages/auth/SignInDialog.java  | 15 +++++------
 .../org/apache/openmeetings/web/room/raw-video.js  |  2 +-
 .../apache/openmeetings/web/room/wb/WbPanel.java   |  7 ++---
 .../openmeetings/web/room/wb/raw-wb-board.js       |  2 +-
 .../web/user/calendar/CalendarDialog.java          |  5 ++--
 .../web/user/profile/MessagesContactsPanel.java    |  5 ++--
 .../web/user/profile/UserSearchPanel.java          | 16 +++++------
 .../web/user/rooms/RoomsSelectorPanel.java         |  7 ++---
 .../org/apache/openmeetings/web/TestCalendar.java  |  4 ---
 .../openmeetings/web/pages/TestHashPage.java       | 10 +++++--
 29 files changed, 147 insertions(+), 122 deletions(-)

diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
index 1676b0d..5b017ed 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/converter/DocumentConverter.java
@@ -42,6 +42,7 @@ import org.springframework.stereotype.Component;
 @Component
 public class DocumentConverter {
 	private static final Logger log = LoggerFactory.getLogger(DocumentConverter.class);
+	private static final String JOD_JOD_NAME = "doJodConvert";
 
 	@Autowired
 	protected ConfigurationDao cfgDao;
@@ -102,10 +103,10 @@ public class DocumentConverter {
 						converter.convert(in, out);
 					});
 		} catch (Exception ex) {
-			log.error("doJodConvert", ex);
-			return new ProcessResult("doJodConvert", ex.getMessage(), ex);
+			log.error(JOD_JOD_NAME, ex);
+			return new ProcessResult(JOD_JOD_NAME, ex.getMessage(), ex);
 		}
-		return new ProcessResult("doJodConvert", "Document converted successfully", null)
+		return new ProcessResult(JOD_JOD_NAME, "Document converted successfully", null)
 				.setExitCode(0);
 	}
 }
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 962361c..d028127 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
@@ -76,6 +76,7 @@ import org.springframework.stereotype.Component;
 @Component
 public class LdapLoginManager {
 	private static final Logger log = LoggerFactory.getLogger(LdapLoginManager.class);
+	private static final String WARN_REFERRAL = "Referral LDAP entry found, ignore it";
 	// LDAP custom attribute mapping keys
 	private static final String CONFIGKEY_LDAP_KEY_LOGIN = "ldap_user_attr_login";
 	private static final String CONFIGKEY_LDAP_KEY_LASTNAME = "ldap_user_attr_lastname";
@@ -260,7 +261,7 @@ public class LdapLoginManager {
 						entry = e;
 					}
 				} catch (CursorLdapReferralException cle) {
-					log.warn("Referral LDAP entry found, ignore it");
+					log.warn(WARN_REFERRAL);
 				}
 			}
 		}
@@ -311,7 +312,7 @@ public class LdapLoginManager {
 					log.info("User {}, was imported", u);
 				}
 			} catch (CursorLdapReferralException cle) {
-				log.warn("Referral LDAP entry found, ignore it");
+				log.warn(WARN_REFERRAL);
 			}
 		}
 	}
@@ -430,7 +431,7 @@ public class LdapLoginManager {
 						Entry e = cursor.get();
 						groups.add(e.getDn());
 					} catch (CursorLdapReferralException cle) {
-						log.warn("Referral LDAP entry found, ignore it");
+						log.warn(WARN_REFERRAL);
 					}
 				}
 			}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
index 9fd35d7..70c1da5 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KRoom.java
@@ -22,6 +22,7 @@
 package org.apache.openmeetings.core.remote;
 
 import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.core.remote.KurentoHandler.PARAM_ICE;
 import static org.apache.openmeetings.core.remote.KurentoHandler.newKurentoMsg;
 
 import java.util.Collection;
@@ -188,7 +189,7 @@ public class KRoom {
 					.put("stream", sd.toJson()
 							.put("shareType", msg.getString("shareType"))
 							.put("fps", msg.getString("fps")))
-					.put("iceServers", h.getTurnServers()));
+					.put(PARAM_ICE, h.getTurnServers()));
 		}
 	}
 
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
index a3228fb..99a9807 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KStream.java
@@ -22,6 +22,8 @@
 package org.apache.openmeetings.core.remote;
 
 import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.core.remote.KurentoHandler.PARAM_CANDIDATE;
+import static org.apache.openmeetings.core.remote.KurentoHandler.PARAM_ICE;
 import static org.apache.openmeetings.core.remote.KurentoHandler.newKurentoMsg;
 import static org.apache.openmeetings.util.OmFileHelper.getRecUri;
 import static org.apache.openmeetings.util.OmFileHelper.getRecordingChunk;
@@ -137,7 +139,7 @@ public class KStream implements IKStream {
 		WebSocketHelper.sendRoom(new TextRoomMessage(c.getRoomId(), c, RoomMessage.Type.rightUpdated, c.getUid()));
 		WebSocketHelper.sendRoomOthers(room.roomId, c.getUid(), newKurentoMsg()
 				.put("id", "newStream")
-				.put("iceServers", h.getTurnServers())
+				.put(PARAM_ICE, h.getTurnServers())
 				.put("stream", sd.toJson()));
 		return this;
 	}
@@ -207,7 +209,7 @@ public class KStream implements IKStream {
 		endpoint.addIceCandidateFoundListener(evt -> h.sendClient(sid, newKurentoMsg()
 						.put("id", "iceCandidate")
 						.put("uid", KStream.this.uid)
-						.put("candidate", convert(JsonUtils.toJsonObject(evt.getCandidate()))))
+						.put(PARAM_CANDIDATE, convert(JsonUtils.toJsonObject(evt.getCandidate()))))
 				);
 		return endpoint;
 	}
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
index eee4184..b6a9b0a 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KTestStream.java
@@ -19,6 +19,7 @@
 package org.apache.openmeetings.core.remote;
 
 import static java.util.UUID.randomUUID;
+import static org.apache.openmeetings.core.remote.KurentoHandler.PARAM_CANDIDATE;
 import static org.apache.openmeetings.core.remote.KurentoHandler.newTestKurentoMsg;
 import static org.apache.openmeetings.core.remote.KurentoHandler.sendError;
 import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_WEBM;
@@ -165,8 +166,8 @@ public class KTestStream implements IKStream {
 				IceCandidate cand = evt.getCandidate();
 				WebSocketHelper.sendClient(_c, newTestKurentoMsg()
 						.put("id", "iceCandidate")
-						.put("candidate", new JSONObject()
-								.put("candidate", cand.getCandidate())
+						.put(PARAM_CANDIDATE, new JSONObject()
+								.put(PARAM_CANDIDATE, cand.getCandidate())
 								.put("sdpMid", cand.getSdpMid())
 								.put("sdpMLineIndex", cand.getSdpMLineIndex())));
 			});
diff --git a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
index e1f8e40..1fd218f 100644
--- a/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
+++ b/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/KurentoHandler.java
@@ -79,6 +79,9 @@ import com.github.openjson.JSONObject;
 
 public class KurentoHandler {
 	private static final Logger log = LoggerFactory.getLogger(KurentoHandler.class);
+	public static final String PARAM_ICE = "iceServers";
+	public static final String PARAM_CANDIDATE = "candidate";
+	private static final String WARN_NO_KURENTO = "Media Server is not accessible";
 	private static final String MODE_TEST = "test";
 	private static final String TAG_KUID = "kuid";
 	private static final String TAG_MODE = "mode";
@@ -178,7 +181,7 @@ public class KurentoHandler {
 				case "wannaRecord":
 					WebSocketHelper.sendClient(_c, newTestKurentoMsg()
 							.put("id", "canRecord")
-							.put("iceServers", getTurnServers(true))
+							.put(PARAM_ICE, getTurnServers(true))
 							);
 					break;
 				case "record":
@@ -186,9 +189,9 @@ public class KurentoHandler {
 					testsByUid.put(_c.getUid(), user);
 					break;
 				case "iceCandidate":
-					JSONObject candidate = msg.getJSONObject("candidate");
+					JSONObject candidate = msg.getJSONObject(PARAM_CANDIDATE);
 					if (user != null) {
-						IceCandidate cand = new IceCandidate(candidate.getString("candidate"),
+						IceCandidate cand = new IceCandidate(candidate.getString(PARAM_CANDIDATE),
 								candidate.getString("sdpMid"), candidate.getInt("sdpMLineIndex"));
 						user.addCandidate(cand);
 					}
@@ -196,7 +199,7 @@ public class KurentoHandler {
 				case "wannaPlay":
 					WebSocketHelper.sendClient(_c, newTestKurentoMsg()
 							.put("id", "canPlay")
-							.put("iceServers", getTurnServers(true))
+							.put(PARAM_ICE, getTurnServers(true))
 							);
 					break;
 				case "play":
@@ -242,9 +245,9 @@ public class KurentoHandler {
 				case "onIceCandidate":
 					sender = getByUid(uid);
 					if (sender != null) {
-						JSONObject candidate = msg.getJSONObject("candidate");
+						JSONObject candidate = msg.getJSONObject(PARAM_CANDIDATE);
 						IceCandidate cand = new IceCandidate(
-								candidate.getString("candidate")
+								candidate.getString(PARAM_CANDIDATE)
 								, candidate.getString("sdpMid")
 								, candidate.getInt("sdpMLineIndex"));
 						sender.addCandidate(cand, msg.getString("luid"));
@@ -278,7 +281,7 @@ public class KurentoHandler {
 
 	private void checkStreams(Long roomId) {
 		if (client == null) {
-			log.warn("Media Server is not accessible");
+			log.warn(WARN_NO_KURENTO);
 			return;
 		}
 		KRoom room = getRoom(roomId);
@@ -350,7 +353,7 @@ public class KurentoHandler {
 				sendClient(sd.getSid(), newKurentoMsg()
 						.put("id", "broadcast")
 						.put("stream", sd.toJson())
-						.put("iceServers", getTurnServers(false)));
+						.put(PARAM_ICE, getTurnServers(false)));
 				//FIXME TODO update interview buttons
 			} else {
 				//constraints were changed
@@ -368,7 +371,7 @@ public class KurentoHandler {
 
 	public void startRecording(Client c) {
 		if (client == null) {
-			log.warn("Media Server is not accessible");
+			log.warn(WARN_NO_KURENTO);
 			return;
 		}
 		getRoom(c.getRoomId()).startRecording(c, recDao);
@@ -376,7 +379,7 @@ public class KurentoHandler {
 
 	public void stopRecording(Client c) {
 		if (client == null) {
-			log.warn("Media Server is not accessible");
+			log.warn(WARN_NO_KURENTO);
 			return;
 		}
 		getRoom(c.getRoomId()).stopRecording(this, c, recDao);
@@ -389,7 +392,7 @@ public class KurentoHandler {
 
 	public boolean isRecording(Long roomId) {
 		if (client == null) {
-			log.warn("Media Server is not accessible");
+			log.warn(WARN_NO_KURENTO);
 			return false;
 		}
 		return getRoom(roomId).isRecording();
@@ -397,7 +400,7 @@ public class KurentoHandler {
 
 	public JSONObject getRecordingUser(Long roomId) {
 		if (client == null) {
-			log.warn("Media Server is not accessible");
+			log.warn(WARN_NO_KURENTO);
 			return new JSONObject();
 		}
 		return getRoom(roomId).getRecordingUser();
@@ -405,7 +408,7 @@ public class KurentoHandler {
 
 	public boolean screenShareAllowed(Client c) {
 		if (client == null) {
-			log.warn("Media Server is not accessible");
+			log.warn(WARN_NO_KURENTO);
 			return false;
 		}
 		Room r = c.getRoom();
@@ -438,7 +441,7 @@ public class KurentoHandler {
 
 	public boolean isSharing(Long roomId) {
 		if (client == null) {
-			log.warn("Media Server is not accessible");
+			log.warn(WARN_NO_KURENTO);
 			return false;
 		}
 		return getRoom(roomId).isSharing();
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 fea70b1..33c707e 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
@@ -51,6 +51,8 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class AppointmentDao {
 	private static final Logger log = LoggerFactory.getLogger(AppointmentDao.class);
+	private static final String PARAM_START = "start";
+	private static final String PARAM_CALID = "calId";
 	@PersistenceContext
 	private EntityManager em;
 	@Autowired
@@ -157,13 +159,13 @@ public class AppointmentDao {
 		log.debug("Start " + start + " End " + end);
 
 		TypedQuery<Appointment> query = em.createNamedQuery("appointmentsInRange", Appointment.class);
-		query.setParameter("start", start);
+		query.setParameter(PARAM_START, start);
 		query.setParameter("end", end);
 		query.setParameter(PARAM_USER_ID, userId);
 
 		List<Appointment> listAppoints = new ArrayList<>(query.getResultList());
 		TypedQuery<Appointment> q1 = em.createNamedQuery("joinedAppointmentsInRange", Appointment.class);
-		q1.setParameter("start", start);
+		q1.setParameter(PARAM_START, start);
 		q1.setParameter("end", end);
 		q1.setParameter(PARAM_USER_ID, userId);
 		for (Appointment a : q1.getResultList()) {
@@ -177,7 +179,7 @@ public class AppointmentDao {
 	public List<Appointment> getInRange(Calendar start, Calendar end) {
 		TypedQuery<Appointment> q = em.createNamedQuery("appointmentsInRangeRemind", Appointment.class);
 		q.setParameter("none", Reminder.none);
-		q.setParameter("start", start.getTime());
+		q.setParameter(PARAM_START, start.getTime());
 		q.setParameter("end", end.getTime());
 		return q.getResultList();
 	}
@@ -185,7 +187,7 @@ public class AppointmentDao {
 	// next appointment to select date
 	public Appointment getNext(Long userId, Date start) {
 		List<Appointment> list = em.createNamedQuery("getNextAppointment", Appointment.class)
-				.setParameter("start", start).setParameter(PARAM_USER_ID, userId).getResultList();
+				.setParameter(PARAM_START, start).setParameter(PARAM_USER_ID, userId).getResultList();
 		return list == null || list.isEmpty() ? null : list.get(0);
 	}
 
@@ -232,7 +234,7 @@ public class AppointmentDao {
 	 */
 	public List<String> getHrefsbyCalendar(Long calId) {
 		return em.createNamedQuery("getHrefsforAppointmentsinCalendar", String.class)
-				.setParameter("calId", calId)
+				.setParameter(PARAM_CALID, calId)
 				.getResultList();
 	}
 
@@ -244,7 +246,7 @@ public class AppointmentDao {
 	 */
 	public List<Appointment> getbyCalendar(Long calId) {
 		return em.createNamedQuery("getAppointmentsbyCalendar", Appointment.class)
-				.setParameter("calId", calId)
+				.setParameter(PARAM_CALID, calId)
 				.getResultList();
 	}
 
@@ -263,7 +265,7 @@ public class AppointmentDao {
 	 */
 	public int deletebyCalendar(Long calId) {
 		return em.createNamedQuery("deleteAppointmentsbyCalendar", Appointment.class)
-				.setParameter("calId", calId)
+				.setParameter(PARAM_CALID, calId)
 				.executeUpdate();
 	}
 }
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
index b90b29b..1bccb9c 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileItemLogDao.java
@@ -36,21 +36,22 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class FileItemLogDao {
 	private static final Logger log = LoggerFactory.getLogger(FileItemLogDao.class);
+	private static final String PARAM_FILEID = "fileId";
 	@PersistenceContext
 	private EntityManager em;
 
 	public long countErrors(BaseFileItem f) {
-		return em.createNamedQuery("countErrorFileLogsByFile", Long.class).setParameter("fileId", f.getId())
+		return em.createNamedQuery("countErrorFileLogsByFile", Long.class).setParameter(PARAM_FILEID, f.getId())
 				.getSingleResult();
 	}
 
 	public List<FileItemLog> get(BaseFileItem f) {
-		return em.createNamedQuery("getFileLogsByFile", FileItemLog.class).setParameter("fileId", f.getId())
+		return em.createNamedQuery("getFileLogsByFile", FileItemLog.class).setParameter(PARAM_FILEID, f.getId())
 				.getResultList();
 	}
 
 	public void delete(BaseFileItem f) {
-		em.createNamedQuery("deleteErrorFileLogsByFile").setParameter("fileId", f.getId())
+		em.createNamedQuery("deleteErrorFileLogsByFile").setParameter(PARAM_FILEID, f.getId())
 				.executeUpdate();
 	}
 
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 54a4be8..805185f 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
@@ -37,6 +37,7 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class RecordingChunkDao {
 	private static final Logger log = LoggerFactory.getLogger(RecordingChunkDao.class);
+	private static final String PARAM_RECID = "recordingId";
 	@PersistenceContext
 	private EntityManager em;
 	@Autowired
@@ -50,13 +51,13 @@ public class RecordingChunkDao {
 
 	public List<RecordingChunk> getByRecording(Long recordingId) {
 		return em.createNamedQuery("getChunkByRecording", RecordingChunk.class)
-				.setParameter("recordingId", recordingId)
+				.setParameter(PARAM_RECID, recordingId)
 				.getResultList();
 	}
 
 	public List<RecordingChunk> getNotScreenChunksByRecording(Long recordingId) {
 		return em.createNamedQuery("getNotScreenChunkByRecording", RecordingChunk.class)
-				.setParameter("recordingId", recordingId)
+				.setParameter(PARAM_RECID, recordingId)
 				.setParameter("screen", Type.SCREEN)
 				.setParameter("none", Status.NONE)
 				.getResultList();
@@ -65,7 +66,7 @@ public class RecordingChunkDao {
 	public RecordingChunk getScreenByRecording(Long recordingId) {
 		List<RecordingChunk> list = em.createNamedQuery("getScreenChunkByRecording", RecordingChunk.class)
 				.setParameter("screen", Type.SCREEN)
-				.setParameter("recordingId", recordingId)
+				.setParameter(PARAM_RECID, recordingId)
 				.getResultList();
 		return list.isEmpty() ? null : list.get(0);
 	}
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 b5b6b15..f17ffc3 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
@@ -38,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class PollDao {
 	private static final Logger log = LoggerFactory.getLogger(PollDao.class);
+	private static final String PARAM_ROOMID = "roomId";
 
 	@PersistenceContext
 	private EntityManager em;
@@ -56,7 +57,7 @@ public class PollDao {
 		try {
 			log.debug(" :: close :: ");
 			Query q = em.createNamedQuery("closePoll");
-			q.setParameter("roomId", roomId);
+			q.setParameter(PARAM_ROOMID, roomId);
 			q.setParameter("archived", true);
 			return q.executeUpdate() > 0;
 		} catch (Exception err) {
@@ -85,7 +86,7 @@ public class PollDao {
 	public RoomPoll getByRoom(Long roomId) {
 		log.debug(" :: getPoll :: {}", roomId);
 		List<RoomPoll> list = em.createNamedQuery("getPoll", RoomPoll.class)
-				.setParameter("roomId", roomId).getResultList();
+				.setParameter(PARAM_ROOMID, roomId).getResultList();
 		return list.size() == 1 ? list.get(0) : null;
 	}
 
@@ -96,20 +97,20 @@ public class PollDao {
 	public List<RoomPoll> getArchived(Long roomId) {
 		log.debug(" :: getArchived :: {}", roomId);
 		return em.createNamedQuery("getArchivedPollList",RoomPoll.class)
-				.setParameter("roomId", roomId).getResultList();
+				.setParameter(PARAM_ROOMID, roomId).getResultList();
 	}
 
 	public boolean hasPoll(Long roomId) {
 		log.debug(" :: hasPoll :: " + roomId);
 		return em.createNamedQuery("hasPoll", Long.class)
-				.setParameter("roomId", roomId)
+				.setParameter(PARAM_ROOMID, roomId)
 				.setParameter("archived", false)
 				.getSingleResult() > 0;
 	}
 
 	public boolean hasVoted(Long roomId, Long userId) {
 		return !em.createNamedQuery("hasVoted", RoomPollAnswer.class)
-				.setParameter("roomId", roomId)
+				.setParameter(PARAM_ROOMID, roomId)
 				.setParameter(PARAM_USER_ID, userId)
 				.getResultList().isEmpty();
 	}
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
index a6c6010..1fa1c20 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/GroupUserDao.java
@@ -38,6 +38,7 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class GroupUserDao implements IDataProviderDao<GroupUser> {
 	private static final String[] searchFields = {"user.lastname", "user.firstname", "user.login", "user.address.email"};
+	private static final String PARAM_GROUPID = "groupId";
 	@PersistenceContext
 	private EntityManager em;
 
@@ -61,7 +62,7 @@ public class GroupUserDao implements IDataProviderDao<GroupUser> {
 	public List<GroupUser> get(long groupId, String search, long start, long count, String sort) {
 		return setLimits(
 				em.createQuery(DaoHelper.getSearchQuery(GroupUser.class.getSimpleName(), "ou", null, search, false, false, "ou.group.id = :groupId", sort, searchFields), GroupUser.class)
-					.setParameter("groupId", groupId)
+					.setParameter(PARAM_GROUPID, groupId)
 				, start, count).getResultList();
 	}
 
@@ -73,13 +74,13 @@ public class GroupUserDao implements IDataProviderDao<GroupUser> {
 
 	public GroupUser getByGroupAndUser(Long groupId, Long userId) {
 		List<GroupUser> list = em.createNamedQuery("isUserInGroup", GroupUser.class)
-				.setParameter("groupId", groupId).setParameter(PARAM_USER_ID, userId).getResultList();
+				.setParameter(PARAM_GROUPID, groupId).setParameter(PARAM_USER_ID, userId).getResultList();
 		return list.isEmpty() ? null : list.get(0);
 	}
 
 	public boolean isUserInGroup(long groupId, long userId) {
 		return !em.createNamedQuery("isUserInGroup", GroupUser.class)
-				.setParameter("groupId", groupId).setParameter(PARAM_USER_ID, userId).getResultList().isEmpty();
+				.setParameter(PARAM_GROUPID, groupId).setParameter(PARAM_USER_ID, userId).getResultList().isEmpty();
 	}
 
 	@Override
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 0444580..12eae4c 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
@@ -45,6 +45,7 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class PrivateMessageDao implements IDataProviderDao<PrivateMessage> {
 	private static final Logger log = LoggerFactory.getLogger(PrivateMessageDao.class);
+	private static final String PARAM_FLDRID = "folderId";
 	@PersistenceContext
 	private EntityManager em;
 
@@ -129,14 +130,14 @@ public class PrivateMessageDao implements IDataProviderDao<PrivateMessage> {
 		TypedQuery<Long> query = em.createQuery(getQuery(true, search, null, true), Long.class);
 		query.setParameter("ownerId", ownerId);
 		setSearch(query, search);
-		query.setParameter("folderId", folderId);
+		query.setParameter(PARAM_FLDRID, folderId);
 		return query.getSingleResult();
 	}
 
 	public List<PrivateMessage> get(Long ownerId, Long folderId, String search, String orderBy, boolean asc, long start, long max) {
 		TypedQuery<PrivateMessage> query = em.createQuery(getQuery(false, search, orderBy, asc), PrivateMessage.class);
 		query.setParameter("ownerId", ownerId);
-		query.setParameter("folderId", folderId);
+		query.setParameter(PARAM_FLDRID, folderId);
 		setSearch(query, search);
 		return setLimits(query, start, max).getResultList();
 	}
@@ -150,7 +151,7 @@ public class PrivateMessageDao implements IDataProviderDao<PrivateMessage> {
 
 	public int moveMailsToFolder(Collection<Long> ids, Long folderId) {
 		Query query = em.createNamedQuery("moveMailsToFolder");
-		query.setParameter("folderId", folderId);
+		query.setParameter(PARAM_FLDRID, folderId);
 		query.setParameter("ids", ids);
 		return query.executeUpdate();
 	}
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 9e8b70d..4d99c12 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
@@ -39,6 +39,7 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class UserContactDao {
 	private static final Logger log = LoggerFactory.getLogger(UserContactDao.class);
+	private static final String PARAM_OWNERID = "ownerId";
 	@PersistenceContext
 	private EntityManager em;
 	@Autowired
@@ -73,13 +74,13 @@ public class UserContactDao {
 	 * @return rowcount of update
 	 */
 	public Integer deleteAllUserContacts(Long ownerId) {
-		return em.createNamedQuery("deleteAllUserContacts").setParameter("ownerId",ownerId).executeUpdate();
+		return em.createNamedQuery("deleteAllUserContacts").setParameter(PARAM_OWNERID,ownerId).executeUpdate();
 	}
 
 	public UserContact get(Long userId, Long ownerId) {
 		List<UserContact> ll = em.createNamedQuery("getContactByUserOwner", UserContact.class)
 				.setParameter(PARAM_USER_ID, userId)
-				.setParameter("ownerId", ownerId)
+				.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;
@@ -104,7 +105,7 @@ public class UserContactDao {
 
 	public List<UserContact> getContactsByUserAndStatus(Long ownerId, boolean pending) {
 		return em.createNamedQuery("getContactsByUserAndStatus", UserContact.class)
-				.setParameter("ownerId", ownerId)
+				.setParameter(PARAM_OWNERID, ownerId)
 				.setParameter("pending", pending)
 				.getResultList();
 	}
diff --git a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
index d8753b9..bc59e19 100644
--- a/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
+++ b/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/user/UserDao.java
@@ -77,6 +77,7 @@ import org.springframework.transaction.annotation.Transactional;
 @Transactional
 public class UserDao implements IGroupAdminDataProviderDao<User> {
 	private static final Logger log = LoggerFactory.getLogger(UserDao.class);
+	private static final String PARAM_EMAIL = "email";
 	private static final String[] searchFields = {"lastname", "firstname", "login", "address.email", "address.town"};
 
 	@PersistenceContext
@@ -325,7 +326,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 				.executeUpdate();
 			if (!Strings.isEmpty(u.getAddress().getEmail())) {
 				em.createNamedQuery("purgeMailMessages")
-					.setParameter("email", String.format("%%%s%%", u.getAddress().getEmail()))
+					.setParameter(PARAM_EMAIL, String.format("%%%s%%", u.getAddress().getEmail()))
 					.executeUpdate();
 			}
 			u.setActivatehash(null);
@@ -438,7 +439,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 
 	public User getByEmail(String email, User.Type type, Long domainId) {
 		return getSingle(em.createNamedQuery("getUserByEmail", User.class)
-				.setParameter("email", email)
+				.setParameter(PARAM_EMAIL, email)
 				.setParameter("type", type)
 				.setParameter("domainId", domainId == null ? Long.valueOf(0) : domainId)
 				.getResultList());
@@ -521,7 +522,7 @@ public class UserDao implements IGroupAdminDataProviderDao<User> {
 
 	public User getContact(String email, String firstName, String lastName, Long langId, String tzId, User owner) {
 		List<User> list = em.createNamedQuery("getContactByEmailAndUser", User.class)
-				.setParameter("email", email).setParameter("type", User.Type.contact).setParameter("ownerId", owner.getId())
+				.setParameter(PARAM_EMAIL, email).setParameter("type", User.Type.contact).setParameter("ownerId", owner.getId())
 				.getResultList();
 		if (list.isEmpty()) {
 			User to = new User();
diff --git a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
index f173e2c..00838cc 100644
--- a/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
+++ b/openmeetings-install/src/main/java/org/apache/openmeetings/cli/Admin.java
@@ -76,6 +76,10 @@ import org.springframework.web.context.WebApplicationContext;
 
 public class Admin {
 	private static final Logger _log = LoggerFactory.getLogger(Admin.class);
+	private static final String OPTION_EMAIL = "email";
+	private static final String OPTION_GROUP = "group";
+	private static final String OPTION_PWD = "password";
+	private static final String OPTION_DEF_LNG = "default-language";
 	private static final String OPTION_DB_TYPE = "db-type";
 	private static final String OPTION_DB_HOST = "db-host";
 	private static final String OPTION_DB_PORT = "db-port";
@@ -139,10 +143,10 @@ public class Admin {
 		options.addOption(new OmOption("b,r,i", "file", null, true, "file used for backup/restore/install", "b"));
 		//install
 		options.addOption(new OmOption("i", "user", null, true, "Login name of the default user, minimum " + USER_LOGIN_MINIMUM_LENGTH + " characters (mutually exclusive with 'file')"));
-		options.addOption(new OmOption("i", "email", null, true, "Email of the default user (mutually exclusive with 'file')"));
-		options.addOption(new OmOption("i", "group", null, true, "The name of the default user group (mutually exclusive with 'file')"));
+		options.addOption(new OmOption("i", OPTION_EMAIL, null, true, "Email of the default user (mutually exclusive with 'file')"));
+		options.addOption(new OmOption("i", OPTION_GROUP, null, true, "The name of the default user group (mutually exclusive with 'file')"));
 		options.addOption(new OmOption("i", "tz", null, true, "Default server time zone, and time zone for the selected user (mutually exclusive with 'file')"));
-		options.addOption(new OmOption("i", null, "password", true, "Password of the default user, minimum " + USER_PASSWORD_MINIMUM_LENGTH + " characters (will be prompted if not set)", true));
+		options.addOption(new OmOption("i", null, OPTION_PWD, true, "Password of the default user, minimum " + USER_PASSWORD_MINIMUM_LENGTH + " characters (will be prompted if not set)", true));
 		options.addOption(new OmOption("i", null, OPTION_MAIL_REFERRER, true, String.format("System e-mail address [default: %s]", cfg.getMailReferer()), true));
 		options.addOption(new OmOption("i", null, OPTION_MAIL_SERVER, true, String.format("SMTP server for outgoing e-mails [default: %s]", cfg.getSmtpServer()), true));
 		options.addOption(new OmOption("i", null, OPTION_MAIL_PORT, true, String.format("SMTP server for outgoing e-mails [default: %s]", cfg.getSmtpPort()), true));
@@ -151,7 +155,7 @@ public class Admin {
 		options.addOption(new OmOption("i", null, "email-use-tls", false, "Is secure e-mail connection [default: no]", true));
 		options.addOption(new OmOption("i", null, "skip-default-objects", false, "Do not create default rooms and OAuth servers [created by default]", true));
 		options.addOption(new OmOption("i", null, "disable-frontend-register", false, "Do not allow front end register [allowed by default]", true));
-		options.addOption(new OmOption("i", null, "default-language", true, "Default system language as int [1 by default]", true));
+		options.addOption(new OmOption("i", null, OPTION_DEF_LNG, true, "Default system language as int [1 by default]", true));
 
 		options.addOption(new OmOption("i", null, OPTION_DB_TYPE, true, "The type of the DB to be used", true));
 		options.addOption(new OmOption("i", null, OPTION_DB_HOST, true, "DNS name or IP address of database", true));
@@ -278,7 +282,7 @@ public class Admin {
 	}
 
 	private void processInstall(String file) throws Exception {
-		if (cmdl.hasOption("file") && (cmdl.hasOption("user") || cmdl.hasOption("email") || cmdl.hasOption("group"))) {
+		if (cmdl.hasOption("file") && (cmdl.hasOption("user") || cmdl.hasOption(OPTION_EMAIL) || cmdl.hasOption(OPTION_GROUP))) {
 			log("Please specify even 'file' option or 'admin user'.");
 			throw new ExitException();
 		}
@@ -307,8 +311,8 @@ public class Admin {
 		if (cmdl.hasOption("email-use-tls")) {
 			cfg.setMailUseTls(true);
 		}
-		if (cmdl.hasOption("default-language")) {
-			cfg.setDefaultLangId(Integer.parseInt(cmdl.getOptionValue("default-language")));
+		if (cmdl.hasOption(OPTION_DEF_LNG)) {
+			cfg.setDefaultLangId(Integer.parseInt(cmdl.getOptionValue(OPTION_DEF_LNG)));
 		}
 		ConnectionProperties connectionProperties;
 		File conf = OmFileHelper.getPersistence();
@@ -443,8 +447,8 @@ public class Admin {
 
 	private void checkAdminDetails() throws Exception {
 		cfg.setUsername(cmdl.getOptionValue("user"));
-		cfg.setEmail(cmdl.getOptionValue("email"));
-		cfg.setGroup(cmdl.getOptionValue("group"));
+		cfg.setEmail(cmdl.getOptionValue(OPTION_EMAIL));
+		cfg.setGroup(cmdl.getOptionValue(OPTION_GROUP));
 		if (cfg.getUsername() == null || cfg.getUsername().length() < USER_LOGIN_MINIMUM_LENGTH) {
 			log("User login was not provided, or too short, should be at least " + USER_LOGIN_MINIMUM_LENGTH + " character long.");
 			throw new ExitException();
@@ -458,8 +462,8 @@ public class Admin {
 			log(String.format("User group was not provided, or too short, should be at least 1 character long: %s", cfg.getGroup()));
 			throw new ExitException();
 		}
-		if (cmdl.hasOption("password")) {
-			cfg.setPassword(cmdl.getOptionValue("password"));
+		if (cmdl.hasOption(OPTION_PWD)) {
+			cfg.setPassword(cmdl.getOptionValue(OPTION_PWD));
 		}
 		IValidator<String> passValidator = new StrongPasswordValidator(false, new User());
 		Validatable<String> passVal;
diff --git a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
index fa13e13..8da2c0a 100644
--- a/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
+++ b/openmeetings-screenshare/src/main/java/org/apache/openmeetings/screenshare/Core.java
@@ -58,6 +58,8 @@ import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
 
 public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 	private static final Logger log = getLogger(Core.class);
+	private static final String STATUS_EXC = "Exception: ";
+	private static final String METH_SHARE_ACTION = "screenSharerAction";
 	static final String QUARTZ_GROUP_NAME = "ScreenShare";
 	static final String QUARTZ_REMOTE_JOB_NAME = "RemoteJob";
 	static final String QUARTZ_REMOTE_TRIGGER_NAME = "RemoteTrigger";
@@ -231,7 +233,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 		} catch (NullPointerException npe) {
 			//noop
 		} catch (Exception err) {
-			frame.setStatus("Exception: " + err);
+			frame.setStatus(STATUS_EXC + err);
 			log.error("[sendCursorStatus]", err);
 		}
 	}
@@ -302,7 +304,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 	}
 
 	void handleException(Throwable e) {
-		frame.setStatus("Exception: " + e);
+		frame.setStatus(STATUS_EXC + e);
 		if (e instanceof ConnectException) {
 			fallbackUsed = true;
 			connect(sid);
@@ -320,7 +322,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 			}
 		} catch (Exception err) {
 			log.error("captureScreenStart Exception: ", err);
-			frame.setStatus("Exception: " + err);
+			frame.setStatus(STATUS_EXC + err);
 		}
 	}
 
@@ -349,10 +351,10 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 			if (Red5.getConnectionLocal() == null) {
 				Red5.setConnectionLocal(instance.getConnection());
 			}
-			instance.invoke("screenSharerAction", new Object[] { map }, this);
+			instance.invoke(METH_SHARE_ACTION, new Object[] { map }, this);
 		} catch (Exception err) {
 			log.error("captureScreenStop Exception: ", err);
-			frame.setStatus("Exception: " + err);
+			frame.setStatus(STATUS_EXC + err);
 		}
 	}
 
@@ -401,7 +403,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 		}
 
 		String method = invoke.getCall().getServiceMethodName();
-		if ("screenSharerAction".equals(method)) {
+		if (METH_SHARE_ACTION.equals(method)) {
 			Object[] args = invoke.getCall().getArguments();
 			if (args != null && args.length > 0) {
 				@SuppressWarnings("unchecked")
@@ -553,7 +555,7 @@ public class Core implements IPendingServiceCallback, INetStreamEventHandler {
 						capture.start();
 					}
 				}
-			} else if ("screenSharerAction".equals(method)) {
+			} else if (METH_SHARE_ACTION.equals(method)) {
 				Object result = returnMap.get("result");
 				if ("stopAll".equals(result)) {
 					log.trace("Stopping to stream, there is neither a Desktop Sharing nor Recording anymore");
diff --git a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/AtomReader.java b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/AtomReader.java
index 1e7951a..25eecaf 100644
--- a/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/AtomReader.java
+++ b/openmeetings-service/src/main/java/org/apache/openmeetings/service/quartz/scheduler/AtomReader.java
@@ -47,7 +47,9 @@ import com.github.openjson.JSONArray;
 import com.github.openjson.JSONObject;
 
 public class AtomReader {
-	private static Logger log = LoggerFactory.getLogger(AtomReader.class);
+	private static final Logger log = LoggerFactory.getLogger(AtomReader.class);
+	private static final String ATTR_CONTENT = "content";
+	private static final String ATTR_PUBLISHED = "published";
 	private static final int MAX_ITEM_COUNT = 5;
 	private static final Map<String, Spec> specs = new HashMap<>();
 	private static final XMLInputFactory inputFactory;
@@ -60,15 +62,15 @@ public class AtomReader {
 		add("item")
 			.add(new Field("title"))
 			.add(new Field("link"))
-			.add(new Field("description", "content", true))
-			.add(new Field("pubDate", "published"))
+			.add(new Field("description", ATTR_CONTENT, true))
+			.add(new Field("pubDate", ATTR_PUBLISHED))
 			.add(new Field("author"));
 		add("entry")
 			.add(new Field("title"))
 			.add(new Field("link", "link", "href", false))
-			.add(new Field("content", "content", true))
-			.add(new Field("updated", "published"))
-			.add(new Field("published"))
+			.add(new Field(ATTR_CONTENT, ATTR_CONTENT, true))
+			.add(new Field("updated", ATTR_PUBLISHED))
+			.add(new Field(ATTR_PUBLISHED))
 			.add(new Field("author"));
 	}
 
diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
index caf2273..1f21012 100644
--- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
+++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/CalendarPatterns.java
@@ -70,7 +70,6 @@ public class CalendarPatterns {
 
 	public static Date parseImportDate(String dateString) {
 		try {
-
 			Date resultDate = validDate(dateFormat__ddMMyyyyHHmmss, dateString);
 
 			if (resultDate != null) {
@@ -89,9 +88,9 @@ public class CalendarPatterns {
 				return resultDate;
 			}
 
-			log.error("parseDate:: Could not parse date string {}", dateString);
+			log.error("parseImportDate:: Could not parse date string {}", dateString);
 		} catch (Exception e) {
-			log.error("parseDate", e);
+			log.error("parseImportDate", e);
 		}
 		return null;
 	}
@@ -147,7 +146,7 @@ public class CalendarPatterns {
 		try {
 			return dateFormat__ddMMyyyyBySeparator.parse(dateString);
 		} catch (Exception e) {
-			log.error("parseDate", e);
+			log.error("parseDateBySeparator", e);
 		}
 		return null;
 	}
@@ -160,7 +159,7 @@ public class CalendarPatterns {
 			}
 			return dateFormat__ddMMyyyyHHmmss.parse(dateString);
 		} catch (Exception e) {
-			log.error("parseDate", e);
+			log.error("parseDateWithHour", e);
 		}
 		return null;
 	}
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/QuickPollManager.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/QuickPollManager.java
index e2f8a33..c4f3ff1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/QuickPollManager.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/QuickPollManager.java
@@ -22,6 +22,7 @@ import static org.apache.openmeetings.web.app.Application.getHazelcast;
 import static org.apache.openmeetings.web.app.WebSession.getUserId;
 
 import java.util.Map;
+import java.util.Map.Entry;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.openmeetings.core.util.WebSocketHelper;
@@ -92,7 +93,7 @@ public class QuickPollManager {
 		if (started) {
 			Map<Long, Boolean> votes = map().get(roomId);
 			o.put("voted", votes.containsKey(getUserId()));
-			o.put("pros", votes.entrySet().stream().filter(e -> e.getValue()).count())
+			o.put("pros", votes.entrySet().stream().filter(Entry::getValue).count())
 				.put("cons", votes.entrySet().stream().filter(e -> !e.getValue()).count());
 		}
 		return o;
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
index afdb857..98ec4f3 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/pages/auth/SignInDialog.java
@@ -80,8 +80,8 @@ public class SignInDialog extends NonClosableDialog<String> {
 	private Form<String> form;
 	private DialogButton loginBtn;
 	private DialogButton registerBtn;
-	private String password;
-	private String login;
+	private final PasswordTextField passField = new PasswordTextField("pass", Model.of(""));
+	private final RequiredTextField<String> loginField = new RequiredTextField<>("login", Model.of(""));
 	private boolean rememberMe = false;
 	private RegisterDialog r;
 	private ForgetPasswordDialog f;
@@ -188,9 +188,9 @@ public class SignInDialog extends NonClosableDialog<String> {
 
 	@Override
 	protected void onSubmit(AjaxRequestTarget target, DialogButton btn) {
-		if (domain.getAddDomainToUserName()) {
-			login = login + "@" + domain.getDomain();
-		}
+		final String login = String.format(domain.getAddDomainToUserName() ? "%s@%s" : "%s"
+				, loginField.getModelObject(), domain.getDomain());
+		final String password = passField.getModelObject();
 		OmAuthenticationStrategy strategy = getAuthenticationStrategy();
 		WebSession ws = WebSession.get();
 		Type type = domain.getId() > 0 ? Type.ldap : Type.user;
@@ -226,8 +226,6 @@ public class SignInDialog extends NonClosableDialog<String> {
 
 	class SignInForm extends StatelessForm<String> {
 		private static final long serialVersionUID = 1L;
-		private PasswordTextField passField;
-		private RequiredTextField<String> loginField;
 
 		public SignInForm(String id) {
 			super(id);
@@ -236,8 +234,7 @@ public class SignInDialog extends NonClosableDialog<String> {
 				alreadyLoggedIn();
 			}
 			add(feedback.setOutputMarkupId(true));
-			add(loginField = new RequiredTextField<>("login", new PropertyModel<String>(SignInDialog.this, "login")));
-			add(passField = new PasswordTextField("pass", new PropertyModel<String>(SignInDialog.this, "password")).setResetPassword(true));
+			add(loginField, passField.setResetPassword(true));
 			List<LdapConfig> ldaps = ldapDao.get();
 			int selectedLdap = cfgDao.getInt(CONFIG_DEFAULT_LDAP_ID, 0);
 			domain = ldaps.get(selectedLdap < ldaps.size() && selectedLdap > 0 ? selectedLdap : 0);
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
index 114fa0d..218156f 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/raw-video.js
@@ -38,7 +38,7 @@ var Video = (function() {
 	}
 	function _micActivity(level) {
 		lm.getKendoProgressBar().value(140 * level); // magic number
-		let speaks = level > .02;
+		const speaks = level > .02;
 		if (speaks !== userSpeaks) {
 			userSpeaks = speaks;
 			OmUtil.sendMessage({type: 'mic', id: 'activity', active: speaks});
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 1ab34fd..7613de3 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
@@ -96,6 +96,7 @@ import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 public class WbPanel extends AbstractWbPanel {
 	private static final long serialVersionUID = 1L;
 	private static final Logger log = LoggerFactory.getLogger(WbPanel.class);
+	private static final String PARAM_UPDATED = "updated";
 	private static final int UPLOAD_WB_LEFT = 0;
 	private static final int UPLOAD_WB_TOP = 0;
 	private static final int DEFAULT_WIDTH = 640;
@@ -258,7 +259,7 @@ public class WbPanel extends AbstractWbPanel {
 								continue;
 							}
 							JSONObject sts = new JSONObject(_sts.toString()); //copy
-							sts.put("pos", sts.getDouble("pos") + (System.currentTimeMillis() - sts.getLong("updated")) * 1. / 1000);
+							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"))
@@ -455,7 +456,7 @@ public class WbPanel extends AbstractWbPanel {
 					JSONObject po = wb.get(uid);
 					if (po != null && "video".equals(po.getString(ATTR_TYPE))) {
 						JSONObject ns = obj.getJSONObject(PARAM_STATUS);
-						po.put(PARAM_STATUS, ns.put("updated", System.currentTimeMillis()));
+						po.put(PARAM_STATUS, ns.put(PARAM_UPDATED, System.currentTimeMillis()));
 						wbm.update(roomId, wb.put(uid, po));
 						obj.put(ATTR_SLIDE, po.getInt(ATTR_SLIDE));
 						sendWbAll(WbAction.videoStatus, obj);
@@ -602,7 +603,7 @@ public class WbPanel extends AbstractWbPanel {
 						file.put(PARAM_STATUS, new JSONObject()
 								.put("paused", true)
 								.put("pos", 0.0)
-								.put("updated", System.currentTimeMillis()));
+								.put(PARAM_UPDATED, System.currentTimeMillis()));
 					}
 					final String ruid = wbs.getUid();
 					if (clean) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
index 2f3e29f..5997a29 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/wb/raw-wb-board.js
@@ -128,7 +128,7 @@ var Wb = function() {
 		function setStyle(canvas, styleName, value) {
 			const o = canvas.getActiveObject();
 			if (o.setSelectionStyles && o.isEditing) {
-				let style = {};
+				const style = {};
 				style[styleName] = value;
 				o.setSelectionStyles(style);
 			} else {
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 9931026..288e3f0 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
@@ -62,8 +62,8 @@ import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
  * during the Creation and Deletion of Appointments.
  */
 public class CalendarDialog extends AbstractFormDialog<OmCalendar> {
-	private static final Logger log = LoggerFactory.getLogger(CalendarDialog.class);
 	private static final long serialVersionUID = 1L;
+	private static final Logger log = LoggerFactory.getLogger(CalendarDialog.class);
 	private CalendarPanel calendarPanel;
 
 	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
@@ -534,7 +534,6 @@ public class CalendarDialog extends AbstractFormDialog<OmCalendar> {
 				//Google Calendar ID
 				urlLabel.setDefaultModelObject(getString("calendar.googleID"));
 				url.setEnabled(true);
-				url.setLabel(Model.<String>of(getString("calendar.googleID")));
 
 				//Google API Key
 				userLabel.setDefaultModelObject(getString("calendar.googleKey"));
@@ -548,8 +547,8 @@ public class CalendarDialog extends AbstractFormDialog<OmCalendar> {
 				username.setModelObject(null);
 
 				urlLabel.setDefaultModelObject(getString("calendar.url"));
-				url.setLabel(Model.of(getString("calendar.url")));
 			}
+			url.setLabel(Model.of((String)urlLabel.getDefaultModelObject()));
 
 			//Add new AttributeModifier to change the type of URLTextField, to text for
 			//Google Calendar and to URL for a normal CalDAV calendar
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
index aa2739a..038082b 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/MessagesContactsPanel.java
@@ -89,6 +89,7 @@ import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
 public class MessagesContactsPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
 	private static final Long MOVE_CHOOSE = Long.valueOf(-1);
+	private static final String CSS_UNREAD = "unread";
 	private static final String SELECT_CHOOSE = "1252";
 	private static final String SELECT_ALL = "1239";
 	private static final String SELECT_NONE = "1240";
@@ -305,7 +306,7 @@ public class MessagesContactsPanel extends UserBasePanel {
 						target.add(container);
 					}
 				});
-				StringBuilder cssClass = new StringBuilder(m.getIsRead() ? "" : "unread");
+				StringBuilder cssClass = new StringBuilder(m.getIsRead() ? "" : CSS_UNREAD);
 				if (selectedMessages.contains(id)) {
 					if (cssClass.length() > 0) {
 						cssClass.append(" ");
@@ -469,7 +470,7 @@ public class MessagesContactsPanel extends UserBasePanel {
 				final Long contactId = uc.getId();
 				final Long userId = uc.getOwner().getId();
 				if (uc.isPending()) {
-					item.add(AttributeModifier.append(ATTR_CLASS, "unread"));
+					item.add(AttributeModifier.append(ATTR_CLASS, CSS_UNREAD));
 				}
 				item.add(new Label("name", getName(uc)));
 				item.add(new WebMarkupContainer("accept").add(new AjaxEventBehavior(EVT_CLICK) {
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
index d5d6379..fb1c4f1 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/profile/UserSearchPanel.java
@@ -46,7 +46,7 @@ import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.IDataProvider;
 import org.apache.wicket.model.CompoundPropertyModel;
 import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.PropertyModel;
+import org.apache.wicket.model.Model;
 import org.apache.wicket.spring.injection.annot.SpringBean;
 
 import com.googlecode.wicket.jquery.core.Options;
@@ -56,9 +56,9 @@ import com.googlecode.wicket.jquery.ui.plugins.fixedheadertable.FixedHeaderTable
 public class UserSearchPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
 	private static final List<Integer> itemsPerPage = Arrays.asList(10, 25, 50, 75, 100, 200, 500, 1000, 2500, 5000);
-	private String text;
-	private String search;
-	private String offer;
+	private final TextField<String> text = new TextField<>("text", Model.of(""));
+	private final TextField<String> search = new TextField<>("search", Model.of(""));
+	private final TextField<String> offer = new TextField<>("offer", Model.of(""));
 	private String orderBy = "u.firstname";
 	private boolean asc = true;
 	private boolean searched = false;
@@ -80,9 +80,7 @@ public class UserSearchPanel extends UserBasePanel {
 			@Override
 			protected void onInitialize() {
 				super.onInitialize();
-				add(new TextField<>("text", new PropertyModel<String>(UserSearchPanel.this, "text")));
-				add(new TextField<>("offer", new PropertyModel<String>(UserSearchPanel.this, "offer")));
-				add(new TextField<>("search", new PropertyModel<String>(UserSearchPanel.this, "search")));
+				add(text, offer, search);
 				add(new AjaxButton("submit") {
 					private static final long serialVersionUID = 1L;
 
@@ -99,13 +97,13 @@ public class UserSearchPanel extends UserBasePanel {
 
 			@Override
 			public Iterator<? extends User> iterator(long first, long count) {
-				return searched ? userDao.searchUserProfile(getUserId(), text, offer, search, orderBy, first, count, asc).iterator()
+				return searched ? userDao.searchUserProfile(getUserId(), text.getModelObject(), offer.getModelObject(), search.getModelObject(), orderBy, first, count, asc).iterator()
 						: new ArrayList<User>().iterator();
 			}
 
 			@Override
 			public long size() {
-				return searched ? userDao.searchCountUserProfile(getUserId(), text, offer, search) : 0;
+				return searched ? userDao.searchCountUserProfile(getUserId(), text.getModelObject(), offer.getModelObject(), search.getModelObject()) : 0;
 			}
 
 			@Override
diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
index c0a53be..2554380 100644
--- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
+++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/rooms/RoomsSelectorPanel.java
@@ -29,6 +29,7 @@ import org.apache.wicket.spring.injection.annot.SpringBean;
 
 public class RoomsSelectorPanel extends UserBasePanel {
 	private static final long serialVersionUID = 1L;
+	private static final String PANEL_ID = "rooms";
 	private String title;
 	private String desc;
 	@SpringBean
@@ -41,18 +42,18 @@ public class RoomsSelectorPanel extends UserBasePanel {
 			case myTabButton:
 				title = "781";
 				desc = "782";
-				add(new RoomsPanel("rooms", roomDao.getMyRooms(getUserId(), Application.getString("my.room.conference"), Application.getString("my.room.presentation"))));
+				add(new RoomsPanel(PANEL_ID, roomDao.getMyRooms(getUserId(), Application.getString("my.room.conference"), Application.getString("my.room.presentation"))));
 				break;
 			case privateTabButton:
 				title = "779";
 				desc = "780";
-				add(new RoomsTabbedPanel("rooms"));
+				add(new RoomsTabbedPanel(PANEL_ID));
 				break;
 			case publicTabButton:
 			default:
 				title = "777";
 				desc = "778";
-				add(new RoomsPanel("rooms", roomDao.getPublicRooms()));
+				add(new RoomsPanel(PANEL_ID, roomDao.getPublicRooms()));
 				break;
 		}
 	}
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
index 5523b89..a872329 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/TestCalendar.java
@@ -25,7 +25,6 @@ import java.time.LocalDateTime;
 import java.util.List;
 
 import org.apache.openmeetings.AbstractWicketTester;
-import org.apache.openmeetings.db.dao.calendar.AppointmentDao;
 import org.apache.openmeetings.db.entity.calendar.Appointment;
 import org.apache.openmeetings.db.entity.user.User;
 import org.apache.openmeetings.util.OmException;
@@ -34,7 +33,6 @@ import org.apache.wicket.behavior.AbstractAjaxBehavior;
 import org.apache.wicket.util.tester.FormTester;
 import org.junit.Assert;
 import org.junit.Test;
-import org.springframework.beans.factory.annotation.Autowired;
 
 import com.googlecode.wicket.jquery.ui.calendar.CalendarView;
 import com.googlecode.wicket.jquery.ui.widget.dialog.ButtonAjaxBehavior;
@@ -43,8 +41,6 @@ import com.googlecode.wicket.jquery.ui.widget.menu.Menu;
 public class TestCalendar extends AbstractWicketTester {
 	private static final String PATH_APPOINTMENT_DLG = String.format("%s:appointment", PATH_CHILD);
 	private static final String PATH_APPOINTMENT_DLG_FRM = String.format("%s:appForm", PATH_APPOINTMENT_DLG);
-	@Autowired
-	private AppointmentDao appointmentDao;
 
 	@Test
 	public void testEventCreate() throws OmException {
diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
index 8d732a6..051c9c2 100644
--- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
+++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/TestHashPage.java
@@ -134,16 +134,22 @@ public class TestHashPage extends AbstractWicketTester {
 	@Test
 	public void testBadParam() {
 		log.debug("bad params");
-		checkAccessDenied(new PageParameters().add("aaa", "bbb").add(HashPage.LANG, 7));
+		checkAccessDenied(new PageParameters().add("aaa", "bbb").add(HashPage.LANG, 777));
 	}
 
 	@Test
 	public void testBadSecure() {
-		log.debug("bad params");
+		log.debug("bad secure");
 		checkAccessDenied(new PageParameters().add(HASH, "bbb").add(HashPage.LANG, 7));
 	}
 
 	@Test
+	public void testBadInvitation() {
+		log.debug("bad invitation");
+		checkAccessDenied(new PageParameters().add(INVITATION_HASH, "bbb").add(HashPage.LANG, 5));
+	}
+
+	@Test
 	public void testValidOneTimeRoom() {
 		Invitation i = get(1L, 2L, null, null, Valid.OneTime, null, null, null);
 		checkPanel(new PageParameters().add(INVITATION_HASH, i.getHash()), RoomPanel.class);