diff --git a/pom.xml b/pom.xml
index 936be2b74c..47dbb39c5e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -183,6 +183,12 @@
${java.version}
+
+
+ org.projectlombok
+ lombok
+
+
@@ -284,7 +290,7 @@
6.46.1
- org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_3
+ org.openrewrite.java.spring.boot3.UpgradeSpringBoot_3_4
@@ -348,7 +354,7 @@
org.springframework.boot
spring-boot-starter-parent
- 3.3.13
+ 3.4.13
diff --git a/src/main/java/org/wise/portal/dao/ObjectNotFoundException.java b/src/main/java/org/wise/portal/dao/ObjectNotFoundException.java
index 49814e03e8..6929f0f263 100644
--- a/src/main/java/org/wise/portal/dao/ObjectNotFoundException.java
+++ b/src/main/java/org/wise/portal/dao/ObjectNotFoundException.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.dao;
+import java.io.Serial;
import java.io.Serializable;
/**
@@ -27,6 +28,7 @@
*/
public class ObjectNotFoundException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
private String message;
diff --git a/src/main/java/org/wise/portal/domain/PeriodNotFoundException.java b/src/main/java/org/wise/portal/domain/PeriodNotFoundException.java
index 2f95b0ebb4..19e3621c05 100644
--- a/src/main/java/org/wise/portal/domain/PeriodNotFoundException.java
+++ b/src/main/java/org/wise/portal/domain/PeriodNotFoundException.java
@@ -23,6 +23,8 @@
*/
package org.wise.portal.domain;
+import java.io.Serial;
+
/**
* A checked exception that gets thrown when the period does not exist in
* the data store.
@@ -31,6 +33,7 @@
*/
public class PeriodNotFoundException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
public PeriodNotFoundException(String message) {
diff --git a/src/main/java/org/wise/portal/domain/RunHasEndedException.java b/src/main/java/org/wise/portal/domain/RunHasEndedException.java
index 2f71817866..8baa719c6f 100644
--- a/src/main/java/org/wise/portal/domain/RunHasEndedException.java
+++ b/src/main/java/org/wise/portal/domain/RunHasEndedException.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain;
+import java.io.Serial;
import org.wise.portal.domain.run.Run;
/**
@@ -33,6 +34,7 @@
*/
public class RunHasEndedException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
public RunHasEndedException(String message) {
diff --git a/src/main/java/org/wise/portal/domain/StudentUserAlreadyAssociatedWithRunException.java b/src/main/java/org/wise/portal/domain/StudentUserAlreadyAssociatedWithRunException.java
index a5dfef379e..f3b70dad09 100644
--- a/src/main/java/org/wise/portal/domain/StudentUserAlreadyAssociatedWithRunException.java
+++ b/src/main/java/org/wise/portal/domain/StudentUserAlreadyAssociatedWithRunException.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain;
+import java.io.Serial;
import org.wise.portal.domain.run.Run;
import org.wise.portal.domain.user.User;
@@ -34,6 +35,7 @@
*/
public class StudentUserAlreadyAssociatedWithRunException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
public StudentUserAlreadyAssociatedWithRunException(String message) {
@@ -49,7 +51,6 @@ public StudentUserAlreadyAssociatedWithRunException(String message, Throwable ca
}
public StudentUserAlreadyAssociatedWithRunException(User studentUser, Run run) {
- super("studentuser: " + studentUser +
- " is already associated with run: " + run);
+ super("studentuser: " + studentUser + " is already associated with run: " + run);
}
}
diff --git a/src/main/java/org/wise/portal/domain/attendance/impl/StudentAttendanceImpl.java b/src/main/java/org/wise/portal/domain/attendance/impl/StudentAttendanceImpl.java
index a16b3ecefb..989d4e1d4e 100644
--- a/src/main/java/org/wise/portal/domain/attendance/impl/StudentAttendanceImpl.java
+++ b/src/main/java/org/wise/portal/domain/attendance/impl/StudentAttendanceImpl.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.attendance.impl;
+import java.io.Serial;
import java.util.Date;
import jakarta.persistence.Column;
@@ -46,6 +47,7 @@
@Setter
public class StudentAttendanceImpl implements StudentAttendance {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/BatchStudentChangePasswordParameters.java b/src/main/java/org/wise/portal/domain/authentication/impl/BatchStudentChangePasswordParameters.java
index f6c99c06d0..a73159f434 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/BatchStudentChangePasswordParameters.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/BatchStudentChangePasswordParameters.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import lombok.Getter;
import lombok.Setter;
@@ -31,6 +32,7 @@
*/
public class BatchStudentChangePasswordParameters extends ChangePasswordParameters {
+ @Serial
private static final long serialVersionUID = 1L;
@Getter
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/ChangePasswordParameters.java b/src/main/java/org/wise/portal/domain/authentication/impl/ChangePasswordParameters.java
index 141db5ec9a..8a7ad99dd9 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/ChangePasswordParameters.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/ChangePasswordParameters.java
@@ -23,8 +23,8 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import java.io.Serializable;
-
import lombok.Getter;
import lombok.Setter;
import org.wise.portal.domain.user.User;
@@ -38,6 +38,7 @@
@Setter
public class ChangePasswordParameters implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private String passwd0, passwd1, passwd2;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/ChangeStudentPasswordParameters.java b/src/main/java/org/wise/portal/domain/authentication/impl/ChangeStudentPasswordParameters.java
index f625a8dd18..06ce85d120 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/ChangeStudentPasswordParameters.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/ChangeStudentPasswordParameters.java
@@ -23,12 +23,15 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
+
/**
* TODO HT: do we need this anymore? Can we merge with ChangePasswordParameters?
* @author Patrick Lawler
*/
public class ChangeStudentPasswordParameters extends ChangePasswordParameters {
+ @Serial
private static final long serialVersionUID = 1L;
}
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclEntry.java b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclEntry.java
index cc76d2dad5..9964e33fc9 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclEntry.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclEntry.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import java.io.Serializable;
import jakarta.persistence.CascadeType;
@@ -57,6 +58,7 @@
PersistentAclEntry.COLUMN_NAME_ACE_ORDER }) })
public class PersistentAclEntry implements ImmutableAclEntry, Serializable {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclSid.java b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclSid.java
index 33e9b5c7fd..27ceaf9de9 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclSid.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclSid.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
@@ -50,6 +51,7 @@
PersistentAclSid.COLUMN_NAME_IS_PRINCIPAL }) })
public class PersistentAclSid implements MutableAclSid {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclTargetObject.java b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclTargetObject.java
index f92102a813..fd0645b755 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclTargetObject.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclTargetObject.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
@@ -43,6 +44,7 @@
@Table(name = PersistentAclTargetObject.DATA_STORE_NAME)
public class PersistentAclTargetObject implements MutableAclTargetObject {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclTargetObjectIdentity.java b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclTargetObjectIdentity.java
index 85df9d6b55..26559e727d 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclTargetObjectIdentity.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentAclTargetObjectIdentity.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
@@ -62,6 +63,7 @@
PersistentAclTargetObjectIdentity.COLUMN_NAME_TARGET_OBJECT_ID }) })
public class PersistentAclTargetObjectIdentity implements MutableAclTargetObjectIdentity {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentGrantedAuthority.java b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentGrantedAuthority.java
index e69e06c19f..9139ed0ad7 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentGrantedAuthority.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentGrantedAuthority.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
@@ -49,6 +50,7 @@ public class PersistentGrantedAuthority implements MutableGrantedAuthority {
@Transient
public static final String COLUMN_NAME_ROLE = "authority";
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentUserDetails.java b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentUserDetails.java
index f389917615..026290d48e 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/PersistentUserDetails.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/PersistentUserDetails.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import java.util.Arrays;
import java.util.Collection;
import java.util.Date;
@@ -108,6 +109,7 @@ public class PersistentUserDetails implements MutableUserDetails {
@Transient
public static final String COLUMN_NAME_RECENT_NUMBER_FAILED_VERIFICATION_ATTEMPTS = "recent_number_of_failed_verification_code_attempts";
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/StudentUserDetails.java b/src/main/java/org/wise/portal/domain/authentication/impl/StudentUserDetails.java
index 43677ed532..f7cc9a53f5 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/StudentUserDetails.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/StudentUserDetails.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
@@ -79,6 +80,7 @@ public class StudentUserDetails extends PersistentUserDetails implements Mutable
@Transient
public static final String COLUMN_NAME_ACCOUNTANSWER = "accountanswer";
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/authentication/impl/TeacherUserDetails.java b/src/main/java/org/wise/portal/domain/authentication/impl/TeacherUserDetails.java
index 3b1d229a2b..a03bc24ba9 100644
--- a/src/main/java/org/wise/portal/domain/authentication/impl/TeacherUserDetails.java
+++ b/src/main/java/org/wise/portal/domain/authentication/impl/TeacherUserDetails.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.authentication.impl;
+import java.io.Serial;
import java.util.Date;
import java.util.HashMap;
@@ -93,6 +94,7 @@ public class TeacherUserDetails extends PersistentUserDetails implements Mutable
@Transient
private static final String COLUMN_NAME_HOW_HEAR = "howDidYouHearAboutUs";
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/group/impl/GroupParameters.java b/src/main/java/org/wise/portal/domain/group/impl/GroupParameters.java
index 1769b0866a..68bad3c78d 100644
--- a/src/main/java/org/wise/portal/domain/group/impl/GroupParameters.java
+++ b/src/main/java/org/wise/portal/domain/group/impl/GroupParameters.java
@@ -23,6 +23,7 @@
import lombok.Getter;
import lombok.Setter;
+import java.io.Serial;
import java.io.Serializable;
/**
@@ -33,6 +34,7 @@
@Setter
public class GroupParameters implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private Long groupId;
diff --git a/src/main/java/org/wise/portal/domain/group/impl/PersistentGroup.java b/src/main/java/org/wise/portal/domain/group/impl/PersistentGroup.java
index 33223f3e46..b6c89faf86 100644
--- a/src/main/java/org/wise/portal/domain/group/impl/PersistentGroup.java
+++ b/src/main/java/org/wise/portal/domain/group/impl/PersistentGroup.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.group.impl;
+import java.io.Serial;
import java.util.HashSet;
import java.util.Set;
@@ -72,6 +73,7 @@ public class PersistentGroup implements Group {
@Transient
public static final String GROUPS_JOIN_COLUMN_NAME = "group_fk";
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/impl/AddSharedTeacherParameters.java b/src/main/java/org/wise/portal/domain/impl/AddSharedTeacherParameters.java
index b1101b64ec..5f3e615cbf 100644
--- a/src/main/java/org/wise/portal/domain/impl/AddSharedTeacherParameters.java
+++ b/src/main/java/org/wise/portal/domain/impl/AddSharedTeacherParameters.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.impl;
+import java.io.Serial;
import java.io.Serializable;
import lombok.Getter;
@@ -39,6 +40,7 @@
@Setter
public class AddSharedTeacherParameters implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private Run run;
diff --git a/src/main/java/org/wise/portal/domain/impl/ChangeWorkgroupParameters.java b/src/main/java/org/wise/portal/domain/impl/ChangeWorkgroupParameters.java
index d63c60d42a..ce9ffd080e 100644
--- a/src/main/java/org/wise/portal/domain/impl/ChangeWorkgroupParameters.java
+++ b/src/main/java/org/wise/portal/domain/impl/ChangeWorkgroupParameters.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.impl;
+import java.io.Serial;
import java.io.Serializable;
import lombok.Getter;
@@ -39,6 +40,7 @@
@Setter
public class ChangeWorkgroupParameters implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private User student;
diff --git a/src/main/java/org/wise/portal/domain/impl/PasswordReminderParameters.java b/src/main/java/org/wise/portal/domain/impl/PasswordReminderParameters.java
index 3368ce49a0..d4ed72f947 100644
--- a/src/main/java/org/wise/portal/domain/impl/PasswordReminderParameters.java
+++ b/src/main/java/org/wise/portal/domain/impl/PasswordReminderParameters.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.impl;
+import java.io.Serial;
import java.util.HashMap;
/**
@@ -36,6 +37,7 @@ public class PasswordReminderParameters extends HashMap {
public static final String ACCOUNT_QUESTION = "accountQuestion";
+ @Serial
private static final long serialVersionUID = 1L;
public static final String USERNAME = "username";
diff --git a/src/main/java/org/wise/portal/domain/impl/TagImpl.java b/src/main/java/org/wise/portal/domain/impl/TagImpl.java
index 8efe1118d7..66fdf0fb04 100644
--- a/src/main/java/org/wise/portal/domain/impl/TagImpl.java
+++ b/src/main/java/org/wise/portal/domain/impl/TagImpl.java
@@ -36,6 +36,7 @@
import jakarta.persistence.Transient;
import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serial;
import org.wise.portal.domain.Tag;
import org.wise.portal.domain.run.Run;
@@ -53,6 +54,7 @@
@Setter
public class TagImpl implements Tag {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/newsitem/impl/NewsItemImpl.java b/src/main/java/org/wise/portal/domain/newsitem/impl/NewsItemImpl.java
index b3ae84a4a0..617523a7eb 100644
--- a/src/main/java/org/wise/portal/domain/newsitem/impl/NewsItemImpl.java
+++ b/src/main/java/org/wise/portal/domain/newsitem/impl/NewsItemImpl.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.newsitem.impl;
+import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
@@ -73,6 +74,7 @@ public class NewsItemImpl implements NewsItem, Comparable, Serializabl
@Transient
public static final String COLUMN_NAME_TYPE = "type";
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/peergrouping/impl/PeerGroupingImpl.java b/src/main/java/org/wise/portal/domain/peergrouping/impl/PeerGroupingImpl.java
index 8f9af1e523..e932bcac9b 100644
--- a/src/main/java/org/wise/portal/domain/peergrouping/impl/PeerGroupingImpl.java
+++ b/src/main/java/org/wise/portal/domain/peergrouping/impl/PeerGroupingImpl.java
@@ -37,6 +37,7 @@
import jakarta.persistence.UniqueConstraint;
import com.fasterxml.jackson.annotation.JsonIgnore;
+import java.io.Serial;
import org.json.JSONArray;
import org.json.JSONException;
@@ -59,6 +60,7 @@
@Setter
public class PeerGroupingImpl implements PeerGrouping {
+ @Serial
private static final long serialVersionUID = 1L;
@Id
diff --git a/src/main/java/org/wise/portal/domain/portal/impl/PortalImpl.java b/src/main/java/org/wise/portal/domain/portal/impl/PortalImpl.java
index 3126cef063..a4d3df98c9 100644
--- a/src/main/java/org/wise/portal/domain/portal/impl/PortalImpl.java
+++ b/src/main/java/org/wise/portal/domain/portal/impl/PortalImpl.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.portal.impl;
+import java.io.Serial;
import java.util.Properties;
import jakarta.persistence.Column;
@@ -51,6 +52,7 @@
@Setter
public class PortalImpl implements Portal {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/portal/impl/PortalStatisticsImpl.java b/src/main/java/org/wise/portal/domain/portal/impl/PortalStatisticsImpl.java
index c5231b7033..44e9b1b2ae 100644
--- a/src/main/java/org/wise/portal/domain/portal/impl/PortalStatisticsImpl.java
+++ b/src/main/java/org/wise/portal/domain/portal/impl/PortalStatisticsImpl.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.portal.impl;
+import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
@@ -42,6 +43,7 @@
@Table(name = "portal_statistics")
public class PortalStatisticsImpl implements PortalStatistics {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/project/ProjectUpload.java b/src/main/java/org/wise/portal/domain/project/ProjectUpload.java
index 91fef0f37f..586f98f90a 100644
--- a/src/main/java/org/wise/portal/domain/project/ProjectUpload.java
+++ b/src/main/java/org/wise/portal/domain/project/ProjectUpload.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.project;
+import java.io.Serial;
import java.io.Serializable;
import org.springframework.web.multipart.MultipartFile;
@@ -33,6 +34,7 @@
*/
public class ProjectUpload implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private MultipartFile file;
diff --git a/src/main/java/org/wise/portal/domain/project/impl/AddProjectParameters.java b/src/main/java/org/wise/portal/domain/project/impl/AddProjectParameters.java
index b144acdb7c..a427532008 100644
--- a/src/main/java/org/wise/portal/domain/project/impl/AddProjectParameters.java
+++ b/src/main/java/org/wise/portal/domain/project/impl/AddProjectParameters.java
@@ -26,6 +26,7 @@
import lombok.Getter;
import lombok.Setter;
+import java.io.Serial;
import java.io.Serializable;
/**
@@ -37,6 +38,7 @@
@Setter
public class AddProjectParameters implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private String projectcode;
diff --git a/src/main/java/org/wise/portal/domain/project/impl/ProjectImpl.java b/src/main/java/org/wise/portal/domain/project/impl/ProjectImpl.java
index 749f3e5925..b88264f25a 100644
--- a/src/main/java/org/wise/portal/domain/project/impl/ProjectImpl.java
+++ b/src/main/java/org/wise/portal/domain/project/impl/ProjectImpl.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.project.impl;
+import java.io.Serial;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
@@ -57,6 +58,7 @@
@Inheritance(strategy = InheritanceType.JOINED)
public class ProjectImpl implements Project {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/project/impl/ProjectInfoImpl.java b/src/main/java/org/wise/portal/domain/project/impl/ProjectInfoImpl.java
index a83e3d8714..786f3ce8a5 100644
--- a/src/main/java/org/wise/portal/domain/project/impl/ProjectInfoImpl.java
+++ b/src/main/java/org/wise/portal/domain/project/impl/ProjectInfoImpl.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.project.impl;
+import java.io.Serial;
import lombok.Getter;
import lombok.Setter;
import org.wise.portal.domain.project.FamilyTag;
@@ -36,6 +37,7 @@
@Setter
public class ProjectInfoImpl implements ProjectInfo {
+ @Serial
private static final long serialVersionUID = 1L;
private String name;
private String author;
diff --git a/src/main/java/org/wise/portal/domain/project/impl/ProjectMetadataImpl.java b/src/main/java/org/wise/portal/domain/project/impl/ProjectMetadataImpl.java
index 9a49eb05fa..8559b5b4b4 100644
--- a/src/main/java/org/wise/portal/domain/project/impl/ProjectMetadataImpl.java
+++ b/src/main/java/org/wise/portal/domain/project/impl/ProjectMetadataImpl.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.project.impl;
+import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
@@ -48,6 +49,7 @@
@Table(name = "project_metadata")
public class ProjectMetadataImpl implements ProjectMetadata, Serializable {
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/project/impl/ProjectParameters.java b/src/main/java/org/wise/portal/domain/project/impl/ProjectParameters.java
index 050fa2afba..2ef70be40c 100644
--- a/src/main/java/org/wise/portal/domain/project/impl/ProjectParameters.java
+++ b/src/main/java/org/wise/portal/domain/project/impl/ProjectParameters.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.project.impl;
+import java.io.Serial;
import java.io.Serializable;
import lombok.Getter;
@@ -39,6 +40,7 @@
@Setter
public class ProjectParameters implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private Long projectId;
diff --git a/src/main/java/org/wise/portal/domain/project/impl/Projectcode.java b/src/main/java/org/wise/portal/domain/project/impl/Projectcode.java
index 81df4c6db1..dc19361f78 100644
--- a/src/main/java/org/wise/portal/domain/project/impl/Projectcode.java
+++ b/src/main/java/org/wise/portal/domain/project/impl/Projectcode.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.project.impl;
+import java.io.Serial;
import java.io.Serializable;
import lombok.Getter;
@@ -39,6 +40,7 @@
*/
public class Projectcode implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
@Getter
diff --git a/src/main/java/org/wise/portal/domain/run/impl/RunParameters.java b/src/main/java/org/wise/portal/domain/run/impl/RunParameters.java
index dec931f3e0..157ac51d35 100644
--- a/src/main/java/org/wise/portal/domain/run/impl/RunParameters.java
+++ b/src/main/java/org/wise/portal/domain/run/impl/RunParameters.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.run.impl;
+import java.io.Serial;
import java.io.Serializable;
import java.util.Locale;
import java.util.Set;
@@ -39,6 +40,7 @@
@Setter
public class RunParameters implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private String name;
diff --git a/src/main/java/org/wise/portal/domain/user/BatchCreateUserAccountsUpload.java b/src/main/java/org/wise/portal/domain/user/BatchCreateUserAccountsUpload.java
index a78cc63935..0521d1abc6 100644
--- a/src/main/java/org/wise/portal/domain/user/BatchCreateUserAccountsUpload.java
+++ b/src/main/java/org/wise/portal/domain/user/BatchCreateUserAccountsUpload.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.user;
+import java.io.Serial;
import java.io.Serializable;
import org.springframework.web.multipart.MultipartFile;
@@ -33,6 +34,7 @@
*/
public class BatchCreateUserAccountsUpload implements Serializable {
+ @Serial
private static final long serialVersionUID = 1L;
private MultipartFile file;
diff --git a/src/main/java/org/wise/portal/domain/user/impl/UserImpl.java b/src/main/java/org/wise/portal/domain/user/impl/UserImpl.java
index 64632aa43c..b86e08a08c 100644
--- a/src/main/java/org/wise/portal/domain/user/impl/UserImpl.java
+++ b/src/main/java/org/wise/portal/domain/user/impl/UserImpl.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.domain.user.impl;
+import java.io.Serial;
import java.util.ArrayList;
import java.util.List;
@@ -59,6 +60,7 @@ public class UserImpl implements User {
@Transient
public static final String COLUMN_NAME_USER_DETAILS_FK = "user_details_fk";
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/domain/workgroup/impl/WorkgroupImpl.java b/src/main/java/org/wise/portal/domain/workgroup/impl/WorkgroupImpl.java
index 7142f0c9ec..b4ec264199 100644
--- a/src/main/java/org/wise/portal/domain/workgroup/impl/WorkgroupImpl.java
+++ b/src/main/java/org/wise/portal/domain/workgroup/impl/WorkgroupImpl.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.domain.workgroup.impl;
+import java.io.Serial;
import java.util.HashSet;
import java.util.Set;
@@ -65,6 +66,7 @@ public class WorkgroupImpl implements Workgroup, Comparable {
@Transient
public static final String DATA_STORE_NAME = "workgroups";
+ @Serial
@Transient
private static final long serialVersionUID = 1L;
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/InvalidNameException.java b/src/main/java/org/wise/portal/presentation/web/exception/InvalidNameException.java
index bcf560c403..8fef4f2079 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/InvalidNameException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/InvalidNameException.java
@@ -1,6 +1,10 @@
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
+
public class InvalidNameException extends MessageCodeException {
+
+ @Serial
private static final long serialVersionUID = 1L;
public InvalidNameException(String messageCode) {
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/InvalidPasswordException.java b/src/main/java/org/wise/portal/presentation/web/exception/InvalidPasswordException.java
index 56993c1e74..00974cbbe5 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/InvalidPasswordException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/InvalidPasswordException.java
@@ -1,6 +1,9 @@
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
+
public class InvalidPasswordException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
}
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/MessageCodeException.java b/src/main/java/org/wise/portal/presentation/web/exception/MessageCodeException.java
index a8642a2b66..2a032e2153 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/MessageCodeException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/MessageCodeException.java
@@ -1,6 +1,10 @@
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
+
public class MessageCodeException extends Exception {
+
+ @Serial
private static final long serialVersionUID = 1L;
protected String messageCode;
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/MicrosoftUserNotFoundException.java b/src/main/java/org/wise/portal/presentation/web/exception/MicrosoftUserNotFoundException.java
index ab1fb8b593..5aa9198982 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/MicrosoftUserNotFoundException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/MicrosoftUserNotFoundException.java
@@ -1,10 +1,13 @@
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
import java.util.Map;
import org.springframework.security.core.AuthenticationException;
public class MicrosoftUserNotFoundException extends AuthenticationException {
+
+ @Serial
private static final long serialVersionUID = 1L;
private Map authInfo;
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/NotAuthorizedException.java b/src/main/java/org/wise/portal/presentation/web/exception/NotAuthorizedException.java
index 5a0b8acac0..30425d7842 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/NotAuthorizedException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/NotAuthorizedException.java
@@ -23,11 +23,14 @@
*/
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
+
/**
* @author Patrick Lawler
*/
public class NotAuthorizedException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
private String message;
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/RecaptchaVerificationException.java b/src/main/java/org/wise/portal/presentation/web/exception/RecaptchaVerificationException.java
index e0266a312e..e8ab4cef5c 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/RecaptchaVerificationException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/RecaptchaVerificationException.java
@@ -1,8 +1,11 @@
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
import org.springframework.security.core.AuthenticationException;
public class RecaptchaVerificationException extends AuthenticationException {
+
+ @Serial
private static final long serialVersionUID = 1L;
public RecaptchaVerificationException(String msg) {
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/TagAlreadyExistsException.java b/src/main/java/org/wise/portal/presentation/web/exception/TagAlreadyExistsException.java
index 3e46244a75..b384c64606 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/TagAlreadyExistsException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/TagAlreadyExistsException.java
@@ -1,6 +1,10 @@
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
+
public class TagAlreadyExistsException extends MessageCodeException {
+
+ @Serial
private static final long serialVersionUID = 1L;
public TagAlreadyExistsException() {
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/TeacherAlreadySharedWithProjectException.java b/src/main/java/org/wise/portal/presentation/web/exception/TeacherAlreadySharedWithProjectException.java
index bee43c5e1d..24abd4b307 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/TeacherAlreadySharedWithProjectException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/TeacherAlreadySharedWithProjectException.java
@@ -1,16 +1,20 @@
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
+
public class TeacherAlreadySharedWithProjectException extends Exception {
+
+ @Serial
private static final long serialVersionUID = 1L;
private String message;
- public TeacherAlreadySharedWithProjectException(String message){
+ public TeacherAlreadySharedWithProjectException(String message) {
this.message = message;
}
@Override
- public String getMessage(){
+ public String getMessage() {
return this.message;
}
}
diff --git a/src/main/java/org/wise/portal/presentation/web/exception/TeacherAlreadySharedWithRunException.java b/src/main/java/org/wise/portal/presentation/web/exception/TeacherAlreadySharedWithRunException.java
index 99fe6fc50a..7c1bf169c6 100644
--- a/src/main/java/org/wise/portal/presentation/web/exception/TeacherAlreadySharedWithRunException.java
+++ b/src/main/java/org/wise/portal/presentation/web/exception/TeacherAlreadySharedWithRunException.java
@@ -1,7 +1,10 @@
package org.wise.portal.presentation.web.exception;
+import java.io.Serial;
+
public class TeacherAlreadySharedWithRunException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
private String message;
diff --git a/src/main/java/org/wise/portal/service/annotation/AnnotationJsonModule.java b/src/main/java/org/wise/portal/service/annotation/AnnotationJsonModule.java
index a2aa455379..6aa9adbf64 100644
--- a/src/main/java/org/wise/portal/service/annotation/AnnotationJsonModule.java
+++ b/src/main/java/org/wise/portal/service/annotation/AnnotationJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.annotation;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.stereotype.Service;
@@ -9,6 +10,7 @@
@Service
public class AnnotationJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
public AnnotationJsonModule() {
diff --git a/src/main/java/org/wise/portal/service/authentication/AuthorityNotFoundException.java b/src/main/java/org/wise/portal/service/authentication/AuthorityNotFoundException.java
index 676da1276d..c4567e8a49 100644
--- a/src/main/java/org/wise/portal/service/authentication/AuthorityNotFoundException.java
+++ b/src/main/java/org/wise/portal/service/authentication/AuthorityNotFoundException.java
@@ -20,6 +20,8 @@
*/
package org.wise.portal.service.authentication;
+import java.io.Serial;
+
/**
* A checked exception thrown when an authority is requested from the data
* store, but an authority of that name does not exist.
@@ -28,6 +30,7 @@
*/
public class AuthorityNotFoundException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
private String message;
diff --git a/src/main/java/org/wise/portal/service/authentication/DuplicateAuthorityException.java b/src/main/java/org/wise/portal/service/authentication/DuplicateAuthorityException.java
index 579531aee2..9ce8458b72 100644
--- a/src/main/java/org/wise/portal/service/authentication/DuplicateAuthorityException.java
+++ b/src/main/java/org/wise/portal/service/authentication/DuplicateAuthorityException.java
@@ -20,6 +20,8 @@
*/
package org.wise.portal.service.authentication;
+import java.io.Serial;
+
/**
* A checked exception thrown when the data store already contains an Authority
* object with the same username.
@@ -28,6 +30,7 @@
*/
public class DuplicateAuthorityException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
private String message;
diff --git a/src/main/java/org/wise/portal/service/authentication/DuplicateUsernameException.java b/src/main/java/org/wise/portal/service/authentication/DuplicateUsernameException.java
index 5c85a60e65..a983ade480 100644
--- a/src/main/java/org/wise/portal/service/authentication/DuplicateUsernameException.java
+++ b/src/main/java/org/wise/portal/service/authentication/DuplicateUsernameException.java
@@ -20,6 +20,8 @@
*/
package org.wise.portal.service.authentication;
+import java.io.Serial;
+
/**
* A checked exception thrown when the data store already contains a user
* details object with the same username.
@@ -28,6 +30,7 @@
*/
public class DuplicateUsernameException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
private String message;
diff --git a/src/main/java/org/wise/portal/service/group/CyclicalGroupException.java b/src/main/java/org/wise/portal/service/group/CyclicalGroupException.java
index 734ce8f363..8b66708d8a 100644
--- a/src/main/java/org/wise/portal/service/group/CyclicalGroupException.java
+++ b/src/main/java/org/wise/portal/service/group/CyclicalGroupException.java
@@ -23,12 +23,15 @@
*/
package org.wise.portal.service.group;
+import java.io.Serial;
+
/**
* A checked exception thrown when there exists a cycle of groups in the data store
* @author Hiroki Terashima
*/
public class CyclicalGroupException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
public CyclicalGroupException(String message) {
diff --git a/src/main/java/org/wise/portal/service/notebook/NotebookItemJsonModule.java b/src/main/java/org/wise/portal/service/notebook/NotebookItemJsonModule.java
index 031f726dfe..bc6b5a747f 100644
--- a/src/main/java/org/wise/portal/service/notebook/NotebookItemJsonModule.java
+++ b/src/main/java/org/wise/portal/service/notebook/NotebookItemJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.notebook;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.stereotype.Service;
@@ -9,6 +10,7 @@
@Service
public class NotebookItemJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
public NotebookItemJsonModule() {
diff --git a/src/main/java/org/wise/portal/service/notification/NotificationJsonModule.java b/src/main/java/org/wise/portal/service/notification/NotificationJsonModule.java
index 8f83ad63fb..c9cc455dcb 100644
--- a/src/main/java/org/wise/portal/service/notification/NotificationJsonModule.java
+++ b/src/main/java/org/wise/portal/service/notification/NotificationJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.notification;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.beans.factory.annotation.Autowired;
@@ -11,6 +12,7 @@
@Service
public class NotificationJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
public NotificationJsonModule() {
diff --git a/src/main/java/org/wise/portal/service/peergroup/PeerGroupCreationException.java b/src/main/java/org/wise/portal/service/peergroup/PeerGroupCreationException.java
index 936e9b0d86..f98d515168 100644
--- a/src/main/java/org/wise/portal/service/peergroup/PeerGroupCreationException.java
+++ b/src/main/java/org/wise/portal/service/peergroup/PeerGroupCreationException.java
@@ -23,6 +23,7 @@
*/
package org.wise.portal.service.peergroup;
+import java.io.Serial;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ResponseStatus;
@@ -35,6 +36,7 @@
@ResponseStatus(HttpStatus.NOT_FOUND)
public class PeerGroupCreationException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
public PeerGroupCreationException() {
diff --git a/src/main/java/org/wise/portal/service/peergrouping/PeerGroupingJsonModule.java b/src/main/java/org/wise/portal/service/peergrouping/PeerGroupingJsonModule.java
index 8bc8d879d1..8470aa9450 100644
--- a/src/main/java/org/wise/portal/service/peergrouping/PeerGroupingJsonModule.java
+++ b/src/main/java/org/wise/portal/service/peergrouping/PeerGroupingJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.peergrouping;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.beans.factory.annotation.Autowired;
@@ -9,9 +10,11 @@
@Service
public class PeerGroupingJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
- public PeerGroupingJsonModule() {}
+ public PeerGroupingJsonModule() {
+ }
@Autowired
public PeerGroupingJsonModule(PeerGroupingSerializer serializer,
diff --git a/src/main/java/org/wise/portal/service/peergrouping/PeerGroupingNotFoundException.java b/src/main/java/org/wise/portal/service/peergrouping/PeerGroupingNotFoundException.java
index 501a5e8da3..2e11bb2622 100644
--- a/src/main/java/org/wise/portal/service/peergrouping/PeerGroupingNotFoundException.java
+++ b/src/main/java/org/wise/portal/service/peergrouping/PeerGroupingNotFoundException.java
@@ -23,6 +23,8 @@
*/
package org.wise.portal.service.peergrouping;
+import java.io.Serial;
+
/**
* A checked exception that is thrown when the PeerGrouping does not exist in
* the data store and the curriculum content
@@ -31,6 +33,7 @@
*/
public class PeerGroupingNotFoundException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
}
diff --git a/src/main/java/org/wise/portal/service/project/impl/ProjectServiceImpl.java b/src/main/java/org/wise/portal/service/project/impl/ProjectServiceImpl.java
index 1c6703bcc0..b995edaeca 100644
--- a/src/main/java/org/wise/portal/service/project/impl/ProjectServiceImpl.java
+++ b/src/main/java/org/wise/portal/service/project/impl/ProjectServiceImpl.java
@@ -46,7 +46,6 @@
import jakarta.annotation.PostConstruct;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang3.text.WordUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
@@ -760,7 +759,7 @@ public void writeProjectLicenseFile(Project project) throws JSONException {
} else {
license += ".";
}
- license = WordUtils.wrap(license, 72) + "\n\n";
+ license = wrapText(license, 72) + "\n\n";
JSONArray parentProjects = getParentProjects(metadata);
for (int i = parentProjects.length() - 1; i >= 0; i--) {
JSONObject parentProjectJSON = parentProjects.getJSONObject(i);
@@ -771,16 +770,16 @@ public void writeProjectLicenseFile(Project project) throws JSONException {
if (i == parentProjects.length() - 1) {
parentLicense = "----\n\n";
}
- parentLicense += WordUtils.wrap(titleAndUri, 72);
+ parentLicense += wrapText(titleAndUri, 72);
if (authors.isEmpty()) {
parentLicense += "\nis a copy of ";
} else {
parentLicense += "\nis a derivative of ";
}
titleAndUri = "\"" + parentTitle + "\" (" + parentURI + ")";
- parentLicense += "\n" + WordUtils.wrap(titleAndUri, 72);
+ parentLicense += "\n" + wrapText(titleAndUri, 72);
if (!parentAuthors.isEmpty()) {
- parentLicense += WordUtils.wrap("\nby " + parentAuthors, 72);
+ parentLicense += wrapText("\nby " + parentAuthors, 72);
}
parentLicense += "\n[used under CC BY-SA, copied " + parentProjectJSON.getString("dateCopied")
+ "].\n";
@@ -790,7 +789,7 @@ public void writeProjectLicenseFile(Project project) throws JSONException {
}
authors = parentAuthors;
}
- license += WordUtils.wrap(
+ license += wrapText(
"""
License pertains to original content created \
by the author(s). Authors are responsible for the usage and \
@@ -819,6 +818,40 @@ by the author(s). Authors are responsible for the usage and \
}
}
+ static String wrapText(String str, int wrapLength) {
+ if (str == null || str.length() <= wrapLength) {
+ return str;
+ }
+ StringBuilder result = new StringBuilder();
+ String[] lines = str.split("\n", -1);
+ for (int i = 0; i < lines.length; i++) {
+ String line = lines[i];
+ if (line.length() <= wrapLength) {
+ result.append(line);
+ } else {
+ int lineLen = 0;
+ String[] words = line.split(" ");
+ for (String word : words) {
+ if (lineLen + word.length() + (lineLen > 0 ? 1 : 0) > wrapLength) {
+ if (lineLen > 0) {
+ result.append("\n");
+ lineLen = 0;
+ }
+ } else if (lineLen > 0) {
+ result.append(" ");
+ lineLen++;
+ }
+ result.append(word);
+ lineLen += word.length();
+ }
+ }
+ if (i < lines.length - 1) {
+ result.append("\n");
+ }
+ }
+ return result.toString();
+ }
+
public void replaceMetadataInProjectJSONFile(String projectFilePath, ProjectMetadata metadata)
throws IOException, JSONException {
String projectStr = FileUtils.readFileToString(new File(projectFilePath));
diff --git a/src/main/java/org/wise/portal/service/run/DuplicateRunCodeException.java b/src/main/java/org/wise/portal/service/run/DuplicateRunCodeException.java
index 64e827695f..83830befd2 100644
--- a/src/main/java/org/wise/portal/service/run/DuplicateRunCodeException.java
+++ b/src/main/java/org/wise/portal/service/run/DuplicateRunCodeException.java
@@ -23,6 +23,8 @@
*/
package org.wise.portal.service.run;
+import java.io.Serial;
+
/**
* A checked exception thrown when trying to create a run with
* with a runcode that already exists in the data store
@@ -31,6 +33,7 @@
*/
public class DuplicateRunCodeException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
public DuplicateRunCodeException(String message) {
diff --git a/src/main/java/org/wise/portal/service/work/AchievementJsonModule.java b/src/main/java/org/wise/portal/service/work/AchievementJsonModule.java
index 8469792667..44e0ce38fa 100644
--- a/src/main/java/org/wise/portal/service/work/AchievementJsonModule.java
+++ b/src/main/java/org/wise/portal/service/work/AchievementJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.work;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.beans.factory.annotation.Autowired;
@@ -10,9 +11,11 @@
@Service
public class AchievementJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
- public AchievementJsonModule() {}
+ public AchievementJsonModule() {
+ }
@Autowired
public AchievementJsonModule(AchievementSerializer serializer) {
diff --git a/src/main/java/org/wise/portal/service/work/EventJsonModule.java b/src/main/java/org/wise/portal/service/work/EventJsonModule.java
index dbdbc967a2..15ed751802 100644
--- a/src/main/java/org/wise/portal/service/work/EventJsonModule.java
+++ b/src/main/java/org/wise/portal/service/work/EventJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.work;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.stereotype.Service;
@@ -9,6 +10,7 @@
@Service
public class EventJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
public EventJsonModule() {
diff --git a/src/main/java/org/wise/portal/service/work/StudentAssetJsonModule.java b/src/main/java/org/wise/portal/service/work/StudentAssetJsonModule.java
index 44be8254b8..97d9296eb8 100644
--- a/src/main/java/org/wise/portal/service/work/StudentAssetJsonModule.java
+++ b/src/main/java/org/wise/portal/service/work/StudentAssetJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.work;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.beans.factory.annotation.Autowired;
@@ -10,9 +11,11 @@
@Service
public class StudentAssetJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
- public StudentAssetJsonModule() {}
+ public StudentAssetJsonModule() {
+ }
@Autowired
public StudentAssetJsonModule(StudentAssetSerializer serializer) {
diff --git a/src/main/java/org/wise/portal/service/work/StudentWorkJsonModule.java b/src/main/java/org/wise/portal/service/work/StudentWorkJsonModule.java
index 2aeb13fa35..3a7f9a89ea 100644
--- a/src/main/java/org/wise/portal/service/work/StudentWorkJsonModule.java
+++ b/src/main/java/org/wise/portal/service/work/StudentWorkJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.work;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.beans.factory.annotation.Autowired;
@@ -11,12 +12,15 @@
@Service
public class StudentWorkJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
- public StudentWorkJsonModule() {}
+ public StudentWorkJsonModule() {
+ }
@Autowired
- public StudentWorkJsonModule(StudentWorkSerializer serializer, StudentWorkDeserializer deserializer) {
+ public StudentWorkJsonModule(StudentWorkSerializer serializer,
+ StudentWorkDeserializer deserializer) {
this.addSerializer(StudentWork.class, serializer);
this.addDeserializer(StudentWork.class, deserializer);
}
diff --git a/src/main/java/org/wise/portal/service/workgroup/WorkgroupJsonModule.java b/src/main/java/org/wise/portal/service/workgroup/WorkgroupJsonModule.java
index 8539c1aa40..c3d792668c 100644
--- a/src/main/java/org/wise/portal/service/workgroup/WorkgroupJsonModule.java
+++ b/src/main/java/org/wise/portal/service/workgroup/WorkgroupJsonModule.java
@@ -1,5 +1,6 @@
package org.wise.portal.service.workgroup;
+import java.io.Serial;
import com.fasterxml.jackson.databind.module.SimpleModule;
import org.springframework.stereotype.Service;
@@ -9,6 +10,7 @@
@Service
public class WorkgroupJsonModule extends SimpleModule {
+ @Serial
private static final long serialVersionUID = 1L;
public WorkgroupJsonModule() {
diff --git a/src/main/java/org/wise/portal/spring/impl/CustomDispatcherServlet.java b/src/main/java/org/wise/portal/spring/impl/CustomDispatcherServlet.java
index 8f4f841410..19066d55ba 100644
--- a/src/main/java/org/wise/portal/spring/impl/CustomDispatcherServlet.java
+++ b/src/main/java/org/wise/portal/spring/impl/CustomDispatcherServlet.java
@@ -20,6 +20,7 @@
*/
package org.wise.portal.spring.impl;
+import java.io.Serial;
import java.security.InvalidParameterException;
import org.springframework.beans.BeanUtils;
@@ -35,6 +36,7 @@
*/
public class CustomDispatcherServlet extends DispatcherServlet {
+ @Serial
private static final long serialVersionUID = 1L;
/**
diff --git a/src/main/java/org/wise/portal/spring/impl/HibernateConfig.java b/src/main/java/org/wise/portal/spring/impl/HibernateConfig.java
index 164d415b2f..5e8723d33f 100644
--- a/src/main/java/org/wise/portal/spring/impl/HibernateConfig.java
+++ b/src/main/java/org/wise/portal/spring/impl/HibernateConfig.java
@@ -54,9 +54,6 @@ public class HibernateConfig {
@Value("${spring.jpa.properties.hibernate.storage_engine:innodb}")
private String hibernateStorageEngine;
- @Value("${spring.jpa.hibernate.use-new-id-generator-mappings:false}")
- private String hibernateGeneratorMappings;
-
@Value("${spring.jpa.hibernate.ddl-auto:none}")
private String hibernateDDLAuto;
@@ -82,7 +79,6 @@ private final Properties hibernateProperties() {
Properties properties = new Properties();
properties.setProperty("hibernate.dialect", hibernateDialect);
properties.setProperty("hibernate.storage_engine", hibernateStorageEngine);
- properties.setProperty("hibernate.id.new_generator_mappings", hibernateGeneratorMappings);
properties.setProperty("hibernate.hbm2ddl.auto", hibernateDDLAuto);
return properties;
}
diff --git a/src/main/java/org/wise/vle/domain/chatbot/Chat.java b/src/main/java/org/wise/vle/domain/chatbot/Chat.java
index 23a4cf7451..671f0e41b8 100644
--- a/src/main/java/org/wise/vle/domain/chatbot/Chat.java
+++ b/src/main/java/org/wise/vle/domain/chatbot/Chat.java
@@ -51,7 +51,7 @@
public class Chat extends PersistableDomain {
@Id
- @GeneratedValue(strategy = GenerationType.AUTO)
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id = null;
@ManyToOne(targetEntity = RunImpl.class, cascade = {
diff --git a/src/main/java/org/wise/vle/domain/chatbot/ChatMessage.java b/src/main/java/org/wise/vle/domain/chatbot/ChatMessage.java
index c9e9a3991b..cc6fb25d29 100644
--- a/src/main/java/org/wise/vle/domain/chatbot/ChatMessage.java
+++ b/src/main/java/org/wise/vle/domain/chatbot/ChatMessage.java
@@ -44,7 +44,7 @@
public class ChatMessage extends PersistableDomain {
@Id
- @GeneratedValue(strategy = GenerationType.AUTO)
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id = null;
@ManyToOne(targetEntity = Chat.class, cascade = { CascadeType.PERSIST }, fetch = FetchType.LAZY)
diff --git a/src/main/java/org/wise/vle/domain/work/NotebookItemAlreadyInGroupException.java b/src/main/java/org/wise/vle/domain/work/NotebookItemAlreadyInGroupException.java
index d6ba826d3f..d36b709a54 100644
--- a/src/main/java/org/wise/vle/domain/work/NotebookItemAlreadyInGroupException.java
+++ b/src/main/java/org/wise/vle/domain/work/NotebookItemAlreadyInGroupException.java
@@ -1,6 +1,9 @@
package org.wise.vle.domain.work;
+import java.io.Serial;
+
public class NotebookItemAlreadyInGroupException extends Exception {
+ @Serial
private static final long serialVersionUID = 1L;
public NotebookItemAlreadyInGroupException(NotebookItem notebookItem, String group) {
diff --git a/src/main/resources/application-dockerdev-sample.properties b/src/main/resources/application-dockerdev-sample.properties
index 8e192082c5..61b18cc745 100644
--- a/src/main/resources/application-dockerdev-sample.properties
+++ b/src/main/resources/application-dockerdev-sample.properties
@@ -89,7 +89,6 @@ spring.datasource.password=wisepass
spring.jpa.properties.hibernate.storage_engine=innodb
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.bytecode.use_reflection_optimizer=true
-spring.jpa.hibernate.use-new-id-generator-mappings=false
spring.session.store-type=redis
spring.data.redis.host=wise-redis
diff --git a/src/main/resources/application_sample.properties b/src/main/resources/application_sample.properties
index 7f123a0e5d..82ba995676 100644
--- a/src/main/resources/application_sample.properties
+++ b/src/main/resources/application_sample.properties
@@ -87,7 +87,6 @@ spring.datasource.password=wisepass
spring.jpa.properties.hibernate.storage_engine=innodb
spring.jpa.hibernate.ddl-auto=none
spring.jpa.properties.hibernate.bytecode.use_reflection_optimizer=true
-spring.jpa.hibernate.use-new-id-generator-mappings=false
spring.session.store-type=redis
spring.data.redis.host=localhost
diff --git a/src/test/java/org/wise/portal/dao/authentication/impl/HibernateStudentUserDetailsDaoTest.java b/src/test/java/org/wise/portal/dao/authentication/impl/HibernateStudentUserDetailsDaoTest.java
index a997f92f27..e23345b208 100644
--- a/src/test/java/org/wise/portal/dao/authentication/impl/HibernateStudentUserDetailsDaoTest.java
+++ b/src/test/java/org/wise/portal/dao/authentication/impl/HibernateStudentUserDetailsDaoTest.java
@@ -49,7 +49,7 @@
*/
public class HibernateStudentUserDetailsDaoTest extends AbstractTransactionalDbTests {
- private static final Integer DEFAULT_NUMBEROFLOGINS = new Integer(3);
+ private static final Integer DEFAULT_NUMBEROFLOGINS = Integer.valueOf(3);
private static final String DEFAULT_ROLE_1 = "default_role_1";
diff --git a/src/test/java/org/wise/portal/presentation/web/controllers/ControllerUtilTest.java b/src/test/java/org/wise/portal/presentation/web/controllers/ControllerUtilTest.java
new file mode 100644
index 0000000000..a2d140f220
--- /dev/null
+++ b/src/test/java/org/wise/portal/presentation/web/controllers/ControllerUtilTest.java
@@ -0,0 +1,75 @@
+package org.wise.portal.presentation.web.controllers;
+
+import static org.easymock.EasyMock.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Set;
+
+import org.junit.jupiter.api.Test;
+import org.wise.portal.domain.group.Group;
+import org.wise.portal.domain.run.Run;
+import org.wise.portal.domain.user.User;
+
+public class ControllerUtilTest {
+
+ @Test
+ public void getNumStudentsInRun_emptyPeriods_returnsZero() {
+ Run run = mock(Run.class);
+ expect(run.getPeriods()).andReturn(Collections.emptySet());
+ replay(run);
+
+ int count = ControllerUtil.getNumStudentsInRun(run);
+
+ assertEquals(0, count);
+ verify(run);
+ }
+
+ @Test
+ public void getNumStudentsInRun_periodWithNoMembers_returnsZero() {
+ Run run = mock(Run.class);
+ Group period = mock(Group.class);
+ expect(run.getPeriods()).andReturn(Collections.singleton(period));
+ expect(period.getMembers()).andReturn(Collections.emptySet());
+ replay(run, period);
+
+ int count = ControllerUtil.getNumStudentsInRun(run);
+
+ assertEquals(0, count);
+ verify(run, period);
+ }
+
+ @Test
+ public void getNumStudentsInRun_multiplePeriodsWithStudents_returnsTotalCount() {
+ Run run = mock(Run.class);
+ Group period1 = mock(Group.class);
+ Group period2 = mock(Group.class);
+
+ User user1 = mock(User.class);
+ User user2 = mock(User.class);
+ User user3 = mock(User.class);
+
+ Set period1Students = new HashSet<>();
+ period1Students.add(user1);
+ period1Students.add(user2);
+
+ Set period2Students = new HashSet<>();
+ period2Students.add(user3);
+
+ Set periods = new HashSet<>();
+ periods.add(period1);
+ periods.add(period2);
+
+ expect(run.getPeriods()).andReturn(periods);
+ expect(period1.getMembers()).andReturn(period1Students);
+ expect(period2.getMembers()).andReturn(period2Students);
+
+ replay(run, period1, period2);
+
+ int count = ControllerUtil.getNumStudentsInRun(run);
+
+ assertEquals(3, count);
+ verify(run, period1, period2);
+ }
+}
diff --git a/src/test/java/org/wise/portal/presentation/web/controllers/teacher/management/RemoveStudentRunControllerTest.java b/src/test/java/org/wise/portal/presentation/web/controllers/teacher/management/RemoveStudentRunControllerTest.java
index 95b9b7c430..b21babe3e8 100644
--- a/src/test/java/org/wise/portal/presentation/web/controllers/teacher/management/RemoveStudentRunControllerTest.java
+++ b/src/test/java/org/wise/portal/presentation/web/controllers/teacher/management/RemoveStudentRunControllerTest.java
@@ -3,7 +3,7 @@
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
-import static org.junit.Assert.fail;
+import static org.junit.jupiter.api.Assertions.fail;
import org.easymock.EasyMockExtension;
import org.easymock.Mock;
diff --git a/src/test/java/org/wise/portal/service/project/impl/ProjectServiceImplTest.java b/src/test/java/org/wise/portal/service/project/impl/ProjectServiceImplTest.java
index 16d8090b7f..3160fd1839 100644
--- a/src/test/java/org/wise/portal/service/project/impl/ProjectServiceImplTest.java
+++ b/src/test/java/org/wise/portal/service/project/impl/ProjectServiceImplTest.java
@@ -284,4 +284,36 @@ public void updateProjectNameIfNecessary_whenMetadataHasName_shouldUpdateNameInP
}
verify(appProperties);
}
+
+ @Test
+ public void wrapText_nullOrEmptyString_returnsInput() {
+ assertNull(ProjectServiceImpl.wrapText(null, 20));
+ assertEquals("", ProjectServiceImpl.wrapText("", 20));
+ }
+
+ @Test
+ public void wrapText_shorterThanWrapLength_returnsUnchanged() {
+ String input = "Hello World";
+ assertEquals("Hello World", ProjectServiceImpl.wrapText(input, 20));
+ }
+
+ @Test
+ public void wrapText_longerThanWrapLength_wrapsAtWordBoundary() {
+ String input = "The quick brown fox jumps over the lazy dog";
+ String expected = "The quick brown\nfox jumps over\nthe lazy dog";
+ assertEquals(expected, ProjectServiceImpl.wrapText(input, 15));
+ }
+
+ @Test
+ public void wrapText_preservesExistingNewlines() {
+ String input = "Line one\nLine two is quite long and should wrap";
+ String expected = "Line one\nLine two is\nquite long and\nshould wrap";
+ assertEquals(expected, ProjectServiceImpl.wrapText(input, 15));
+ }
+
+ @Test
+ public void wrapText_singleWordLongerThanWrapLength_doesNotSplitWord() {
+ String input = "Supercalifragilisticexpialidocious";
+ assertEquals("Supercalifragilisticexpialidocious", ProjectServiceImpl.wrapText(input, 10));
+ }
}
diff --git a/src/test/java/org/wise/vle/domain/chatbot/ChatMessageTest.java b/src/test/java/org/wise/vle/domain/chatbot/ChatMessageTest.java
new file mode 100644
index 0000000000..609f05fae4
--- /dev/null
+++ b/src/test/java/org/wise/vle/domain/chatbot/ChatMessageTest.java
@@ -0,0 +1,72 @@
+package org.wise.vle.domain.chatbot;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.sql.Timestamp;
+import java.time.Instant;
+
+import org.junit.jupiter.api.Test;
+
+public class ChatMessageTest {
+
+ @Test
+ public void initialState_hasExpectedDefaults() {
+ ChatMessage message = new ChatMessage();
+ assertNull(message.getId());
+ assertNull(message.getChat());
+ assertNull(message.getRole());
+ assertNull(message.getContent());
+ assertNull(message.getTimestamp());
+ assertNull(message.getNodeId());
+ assertNull(message.getChatId());
+ assertEquals(ChatMessage.class, message.getObjectClass());
+ }
+
+ @Test
+ public void gettersAndSetters_workAsExpected() {
+ ChatMessage message = new ChatMessage();
+ Long id = 99L;
+ Chat chat = new Chat();
+ chat.setId(42L);
+ String role = "user";
+ String content = "How does photosynthesis work?";
+ Timestamp timestamp = Timestamp.from(Instant.now());
+ String nodeId = "node_1";
+ Long chatId = 42L;
+
+ message.setId(id);
+ message.setChat(chat);
+ message.setRole(role);
+ message.setContent(content);
+ message.setTimestamp(timestamp);
+ message.setNodeId(nodeId);
+ message.setChatId(chatId);
+
+ assertEquals(id, message.getId());
+ assertSame(chat, message.getChat());
+ assertEquals(role, message.getRole());
+ assertEquals(content, message.getContent());
+ assertEquals(timestamp, message.getTimestamp());
+ assertEquals(nodeId, message.getNodeId());
+ assertEquals(chatId, message.getChatId());
+ }
+
+ @Test
+ public void convertToClientChatMessage_withNonNullChat_setsChatId() {
+ ChatMessage message = new ChatMessage();
+ Chat chat = new Chat();
+ chat.setId(55L);
+ message.setChat(chat);
+
+ message.convertToClientChatMessage();
+
+ assertEquals(55L, message.getChatId());
+ }
+
+ @Test
+ public void convertToClientChatMessage_withNullChat_doesNotThrow() {
+ ChatMessage message = new ChatMessage();
+ assertDoesNotThrow(message::convertToClientChatMessage);
+ assertNull(message.getChatId());
+ }
+}
diff --git a/src/test/java/org/wise/vle/domain/chatbot/ChatTest.java b/src/test/java/org/wise/vle/domain/chatbot/ChatTest.java
new file mode 100644
index 0000000000..3aac411ac7
--- /dev/null
+++ b/src/test/java/org/wise/vle/domain/chatbot/ChatTest.java
@@ -0,0 +1,96 @@
+package org.wise.vle.domain.chatbot;
+
+import static org.junit.jupiter.api.Assertions.*;
+
+import java.sql.Timestamp;
+import java.time.Instant;
+
+import org.junit.jupiter.api.Test;
+import org.wise.portal.domain.run.Run;
+import org.wise.portal.domain.run.impl.RunImpl;
+import org.wise.portal.domain.workgroup.Workgroup;
+import org.wise.portal.domain.workgroup.impl.WorkgroupImpl;
+
+public class ChatTest {
+
+ @Test
+ public void initialState_hasExpectedDefaults() {
+ Chat chat = new Chat();
+ assertNull(chat.getId());
+ assertFalse(chat.isDeleted());
+ assertNotNull(chat.getMessages());
+ assertTrue(chat.getMessages().isEmpty());
+ assertEquals(Chat.class, chat.getObjectClass());
+ }
+
+ @Test
+ public void gettersAndSetters_workAsExpected() {
+ Chat chat = new Chat();
+ Long id = 42L;
+ String title = "Sample Chat Conversation";
+ Timestamp now = Timestamp.from(Instant.now());
+ Run run = new RunImpl();
+ Workgroup workgroup = new WorkgroupImpl();
+
+ chat.setId(id);
+ chat.setTitle(title);
+ chat.setCreatedAt(now);
+ chat.setLastUpdated(now);
+ chat.setDeleted(true);
+ chat.setRun(run);
+ chat.setWorkgroup(workgroup);
+ chat.setRunId(10L);
+ chat.setWorkgroupId(20L);
+
+ assertEquals(id, chat.getId());
+ assertEquals(title, chat.getTitle());
+ assertEquals(now, chat.getCreatedAt());
+ assertEquals(now, chat.getLastUpdated());
+ assertTrue(chat.isDeleted());
+ assertSame(run, chat.getRun());
+ assertSame(workgroup, chat.getWorkgroup());
+ assertEquals(10L, chat.getRunId());
+ assertEquals(20L, chat.getWorkgroupId());
+ }
+
+ @Test
+ public void addMessage_associatesMessageBidirectionally() {
+ Chat chat = new Chat();
+ ChatMessage message = new ChatMessage();
+
+ chat.addMessage(message);
+
+ assertEquals(1, chat.getMessages().size());
+ assertTrue(chat.getMessages().contains(message));
+ assertSame(chat, message.getChat());
+ }
+
+ @Test
+ public void removeMessage_disassociatesMessageBidirectionally() {
+ Chat chat = new Chat();
+ ChatMessage message = new ChatMessage();
+ chat.addMessage(message);
+
+ chat.removeMessage(message);
+
+ assertTrue(chat.getMessages().isEmpty());
+ assertNull(message.getChat());
+ }
+
+ @Test
+ public void convertToClientChat_setsRunIdAndWorkgroupId() {
+ Chat chat = new Chat();
+ Run run = new RunImpl();
+ run.setId(101L);
+ Workgroup workgroup = new WorkgroupImpl();
+ workgroup.setId(202L);
+
+ chat.setRun(run);
+ chat.setWorkgroup(workgroup);
+
+ chat.convertToClientChat();
+
+ assertEquals(101L, chat.getRunId());
+ assertEquals(202L, chat.getWorkgroupId());
+ }
+}
diff --git a/src/test/java/org/wise/vle/domain/webservice/crater/CRaterServiceTest.java b/src/test/java/org/wise/vle/domain/webservice/crater/CRaterServiceTest.java
index ec7bdcf81b..f4168a641b 100644
--- a/src/test/java/org/wise/vle/domain/webservice/crater/CRaterServiceTest.java
+++ b/src/test/java/org/wise/vle/domain/webservice/crater/CRaterServiceTest.java
@@ -6,7 +6,6 @@
import org.easymock.EasyMockExtension;
import org.easymock.Mock;
-import org.easymock.TestSubject;
import org.json.JSONException;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -112,4 +111,21 @@ public void getBerkeleyVerificationResponse_ShouldGetCRaterProperties() throws J
verify(appProperties);
mockServer.verify();
}
+
+ @Test
+ public void getScoringResponse_WhenServerReturns500_ShouldHandleGracefully()
+ throws JSONException {
+ beforeETS();
+ CRaterScoringRequest request = new CRaterScoringRequest();
+ request.setItemId(itemId);
+ request.setResponseId("1234567890");
+ request.setResponseText("hello");
+ expect(appProperties.getProperty("cRater_scoring_url")).andReturn(scoringUrl);
+ replay(appProperties);
+ mockServer.expect(requestTo(scoringUrl)).andExpect(method(HttpMethod.POST))
+ .andRespond(withServerError());
+ cRaterService.getCRaterResponse(request);
+ verify(appProperties);
+ mockServer.verify();
+ }
}