diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ae83fb97e62c241cd998076e7da8778c286f1e7..e62554a29b4a6aabf9238f89b69b4a731c1fb706 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,17 @@ # Changelog +## 2.6.3 +Bug fixes: +* The backend now correctly responds with 4xx error codes instead of 500 to less + common errors caused by bad requests from the client-side. + +Additional changes: +* Libraries have been upgraded to fix potential bugs. + +## 2.5.9 +This is a maintenance release which only brings libraries up to date to fix +potential bugs. + ## 2.6.2 This is a maintenance release which only brings libraries up to date to fix potential bugs. diff --git a/pom.xml b/pom.xml index d7010aeb10a47c61c37086b60f6aceda08aee6f4..3b823bef5cf6e87c73339abdb46a72a4739b3f42 100644 --- a/pom.xml +++ b/pom.xml @@ -262,7 +262,7 @@ <dependency> <groupId>com.corundumstudio.socketio</groupId> <artifactId>netty-socketio</artifactId> - <version>1.7.16</version> + <version>1.7.17</version> </dependency> <dependency> <groupId>javax.inject</groupId> @@ -440,7 +440,7 @@ <plugin> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> - <version>3.5.0.1254</version> + <version>3.6.0.1398</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> @@ -450,7 +450,7 @@ <plugin> <groupId>org.jacoco</groupId> <artifactId>jacoco-maven-plugin</artifactId> - <version>0.8.2</version> + <version>0.8.3</version> <executions> <execution> <id>default-prepare-agent</id> @@ -493,7 +493,7 @@ <plugin> <groupId>com.github.kongchen</groupId> <artifactId>swagger-maven-plugin</artifactId> - <version>3.1.7</version> + <version>3.1.8</version> <configuration> <apiSources> <apiSource> @@ -516,6 +516,7 @@ </contact> </info> <swaggerDirectory>${project.build.directory}/classes</swaggerDirectory> + <outputFormats>json</outputFormats> </apiSource> </apiSources> </configuration> diff --git a/src/main/java/de/thm/arsnova/controller/v2/RoomController.java b/src/main/java/de/thm/arsnova/controller/v2/RoomController.java index d9475104079c1621539b178564d120f89370425a..d7d48c255cad3410243e385d3b6b0d9c5a9af58f 100644 --- a/src/main/java/de/thm/arsnova/controller/v2/RoomController.java +++ b/src/main/java/de/thm/arsnova/controller/v2/RoomController.java @@ -32,6 +32,7 @@ import de.thm.arsnova.service.RoomServiceImpl.RoomShortNameComparator; import de.thm.arsnova.service.UserService; import de.thm.arsnova.web.DeprecatedApi; import de.thm.arsnova.web.Pagination; +import de.thm.arsnova.web.exceptions.NotImplementedException; import de.thm.arsnova.web.exceptions.UnauthorizedException; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -337,6 +338,14 @@ public class RoomController extends PaginationController { return toV2Migrator.migrate(roomInfo); } + @ApiOperation(value = "copy a Room from the public pool if enabled") + @RequestMapping(value = "/{shortId}/copyfrompublicpool", method = RequestMethod.POST) + public Room copyFromPublicPool( + @ApiParam(value = "Short ID of the Room", required = true) @PathVariable final String shortId, + @ApiParam(value = "custom attributes for Room", required = true) @RequestBody final Room sessionAttributes + ) { + throw new NotImplementedException(); + } @ApiOperation(value = "Locks or unlocks a Room", nickname = "lockRoom") diff --git a/src/main/java/de/thm/arsnova/model/migration/v2/LoggedIn.java b/src/main/java/de/thm/arsnova/model/migration/v2/LoggedIn.java index 4ee32222cd6a04737a11fc84085811338da27daf..0aa2ccab7f6bb63d27edd3fb5f9d463124e69449 100644 --- a/src/main/java/de/thm/arsnova/model/migration/v2/LoggedIn.java +++ b/src/main/java/de/thm/arsnova/model/migration/v2/LoggedIn.java @@ -35,6 +35,7 @@ public class LoggedIn implements Entity { private String sessionId; private long timestamp; private List<VisitedRoom> visitedSessions = new ArrayList<>(); + private boolean anonymized; public LoggedIn() { this.updateTimestamp(); @@ -119,6 +120,16 @@ public class LoggedIn implements Entity { this.visitedSessions = visitedSessions; } + @JsonView(View.Persistence.class) + public boolean isAnonymized() { + return anonymized; + } + + @JsonView(View.Persistence.class) + public void setAnonymized(boolean anonymized) { + this.anonymized = anonymized; + } + @Override public String toString() { return "LoggedIn [id=" + id + ", rev=" + rev + ", type=" + getType() diff --git a/src/main/java/de/thm/arsnova/model/transport/ImportExportContainer.java b/src/main/java/de/thm/arsnova/model/transport/ImportExportContainer.java index ac7ff6c685f2e6698e2f6b51261799216ab9b989..9cfbee398de0a54d7cdb8eb692d2f1ede0e63226 100644 --- a/src/main/java/de/thm/arsnova/model/transport/ImportExportContainer.java +++ b/src/main/java/de/thm/arsnova/model/transport/ImportExportContainer.java @@ -48,8 +48,6 @@ public class ImportExportContainer { private List<Motd> motds; - private RoomFeature sessionFeature = new RoomFeature(); - private RoomInfo sessionInfo; public ImportExportContainer() { @@ -100,11 +98,11 @@ public class ImportExportContainer { @JsonView(View.Public.class) public RoomFeature getSessionFeature() { - return sessionFeature; + return session.sessionFeature; } public void setSessionFeature(RoomFeature sF) { - sessionFeature = sF; + session.sessionFeature = sF; } @JsonView(View.Public.class) @@ -124,7 +122,7 @@ public class ImportExportContainer { PublicPool p = new PublicPool(); p.setPpFromSession(s); iesession.setPublicPool(p); - sessionFeature = s.getFeatures(); + iesession.sessionFeature = s.getFeatures(); session = iesession; } @@ -249,7 +247,7 @@ public class ImportExportContainer { private PublicPool publicPool; - private RoomFeature sessionFeature; + private RoomFeature sessionFeature = new RoomFeature(); @ApiModelProperty(required = true, value = "used to display short name") @JsonView(View.Public.class) @@ -301,8 +299,8 @@ public class ImportExportContainer { this.publicPool = publicPool; } - @JsonView(View.Public.class) - public RoomFeature getSessionFeature() { + /* Use getSessionFeature() of outer class for public access. */ + private RoomFeature getSessionFeature() { return this.sessionFeature; } diff --git a/src/main/resources/arsnova.properties.example b/src/main/resources/arsnova.properties.example index 0eda0cadfc51d0d68c578ab51db68bcb30b2a68f..27a57e95c43d8952319f5eedb537dd65979a33c1 100644 --- a/src/main/resources/arsnova.properties.example +++ b/src/main/resources/arsnova.properties.example @@ -253,6 +253,9 @@ session.demo-id= # Delete guest sessions automatically after X days of owner inactivity. #session.guest-session.cleanup-days=180 +# Anonymize user content for users with X days of inactivity +#user.cleanup-days=180 + # Label underneath ARSnova logo ui.slogan=Audience Response System diff --git a/src/test/resources/arsnova.properties.example b/src/test/resources/arsnova.properties.example index 0eda0cadfc51d0d68c578ab51db68bcb30b2a68f..27a57e95c43d8952319f5eedb537dd65979a33c1 100644 --- a/src/test/resources/arsnova.properties.example +++ b/src/test/resources/arsnova.properties.example @@ -253,6 +253,9 @@ session.demo-id= # Delete guest sessions automatically after X days of owner inactivity. #session.guest-session.cleanup-days=180 +# Anonymize user content for users with X days of inactivity +#user.cleanup-days=180 + # Label underneath ARSnova logo ui.slogan=Audience Response System