Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import javax.persistence.Enumerated;
import javax.persistence.MappedSuperclass;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonView;

import de.tum.in.www1.artemis.domain.enumeration.AssessmentType;
Expand Down Expand Up @@ -241,6 +242,7 @@ protected static boolean isNotAfterAndNotNull(ZonedDateTime previousDate, ZonedD
*
* @return the sanitized exercise title
**/
@JsonIgnore
public String getSanitizedExerciseTitle() {
if (title == null) {
return "exercise";
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/de/tum/in/www1/artemis/domain/Exercise.java
Original file line number Diff line number Diff line change
Expand Up @@ -707,6 +707,7 @@ public void setStudentAssignedTeamId(Long studentAssignedTeamIdTransient) {
this.studentAssignedTeamIdTransient = studentAssignedTeamIdTransient;
}

// TODO: do we really need this information in all places in the client? I doubt this, we should probably JsonIgnore this in most cases
public boolean isStudentAssignedTeamIdComputed() {
return studentAssignedTeamIdComputedTransient;
}
Expand All @@ -715,6 +716,7 @@ public void setStudentAssignedTeamIdComputed(boolean studentAssignedTeamIdComput
this.studentAssignedTeamIdComputedTransient = studentAssignedTeamIdComputedTransient;
}

// TODO: do we really need this information in all places in the client? I doubt this, we should probably JsonIgnore this in most cases
public boolean isGradingInstructionFeedbackUsed() {
return isGradingInstructionFeedbackUsedTransient;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import javax.persistence.*;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

import de.tum.in.www1.artemis.domain.enumeration.ExerciseType;

Expand All @@ -14,7 +13,6 @@
*/
@Entity
@DiscriminatorValue(value = "F")
@JsonTypeName("file-upload")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class FileUploadExercise extends Exercise {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import org.apache.commons.lang3.math.NumberUtils;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

import de.tum.in.www1.artemis.exception.FilePathParsingException;
import de.tum.in.www1.artemis.service.FilePathService;
Expand All @@ -18,7 +17,6 @@
*/
@Entity
@DiscriminatorValue(value = "F")
@JsonTypeName("file-upload")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class FileUploadSubmission extends Submission {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
*/
@Entity
@DiscriminatorValue(value = "P")
@JsonTypeName("programming")
@SecondaryTable(name = "programming_exercise_details")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ProgrammingExercise extends Exercise {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

import de.tum.in.www1.artemis.domain.enumeration.SubmissionType;
import de.tum.in.www1.artemis.domain.participation.Participation;
Expand All @@ -24,7 +23,6 @@
*/
@Entity
@DiscriminatorValue(value = "P")
@JsonTypeName("programming")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ProgrammingSubmission extends Submission {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import javax.persistence.*;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

import de.tum.in.www1.artemis.domain.enumeration.AssessmentType;
import de.tum.in.www1.artemis.domain.enumeration.ExerciseType;
Expand All @@ -15,7 +14,6 @@
*/
@Entity
@DiscriminatorValue(value = "T")
@JsonTypeName("text")
@SecondaryTable(name = "text_exercise_details")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class TextExercise extends Exercise {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

import de.tum.in.www1.artemis.domain.enumeration.Language;

Expand All @@ -20,7 +19,6 @@
*/
@Entity
@DiscriminatorValue(value = "T")
@JsonTypeName("text")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class TextSubmission extends Submission {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

import de.tum.in.www1.artemis.domain.Exercise;
import de.tum.in.www1.artemis.domain.enumeration.DiagramType;
Expand All @@ -19,7 +18,6 @@
*/
@Entity
@DiscriminatorValue(value = "M")
@JsonTypeName("modeling")
@SecondaryTable(name = "model_exercise_details")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ModelingExercise extends Exercise {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import org.springframework.util.StringUtils;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
Expand All @@ -24,7 +23,6 @@
*/
@Entity
@DiscriminatorValue(value = "M")
@JsonTypeName("modeling")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ModelingSubmission extends Submission {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonView;

import de.tum.in.www1.artemis.config.Constants;
Expand All @@ -23,7 +22,6 @@
*/
@Entity
@DiscriminatorValue(value = "DD")
@JsonTypeName("drag-and-drop")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class DragAndDropQuestion extends QuizQuestion {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,12 @@
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

/**
* A DragAndDropQuestionStatistic.
*/
@Entity
@DiscriminatorValue(value = "DD")
@JsonTypeName("drag-and-drop")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class DragAndDropQuestionStatistic extends QuizQuestionStatistic {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonView;

import de.tum.in.www1.artemis.domain.quiz.compare.DnDMapping;
Expand All @@ -21,7 +20,6 @@
*/
@Entity
@DiscriminatorValue(value = "DD")
@JsonTypeName("drag-and-drop")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class DragAndDropSubmittedAnswer extends SubmittedAnswer {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonView;

import de.tum.in.www1.artemis.domain.enumeration.ScoringType;
Expand All @@ -21,7 +20,6 @@
*/
@Entity
@DiscriminatorValue(value = "MC")
@JsonTypeName("multiple-choice")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MultipleChoiceQuestion extends QuizQuestion {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,12 @@
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

/**
* A MultipleChoiceQuestionStatistic.
*/
@Entity
@DiscriminatorValue(value = "MC")
@JsonTypeName("multiple-choice")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MultipleChoiceQuestionStatistic extends QuizQuestionStatistic {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonView;

import de.tum.in.www1.artemis.domain.DomainObject;
Expand All @@ -22,7 +21,6 @@
*/
@Entity
@DiscriminatorValue(value = "MC")
@JsonTypeName("multiple-choice")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class MultipleChoiceSubmittedAnswer extends SubmittedAnswer {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
*/
@Entity
@DiscriminatorValue(value = "Q")
@JsonTypeName("quiz")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class QuizExercise extends Exercise implements QuizConfiguration {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,13 @@
@DiscriminatorValue(value = "Q")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type")
@JsonSubTypes({ @JsonSubTypes.Type(value = MultipleChoiceQuestion.class, name = "multiple-choice"), @JsonSubTypes.Type(value = DragAndDropQuestion.class, name = "drag-and-drop"),
@JsonSubTypes.Type(value = ShortAnswerQuestion.class, name = "short-answer") })
// @formatter:off
@JsonSubTypes({
@JsonSubTypes.Type(value = MultipleChoiceQuestion.class, name = "multiple-choice"),
@JsonSubTypes.Type(value = DragAndDropQuestion.class, name = "drag-and-drop"),
@JsonSubTypes.Type(value = ShortAnswerQuestion.class, name = "short-answer") }
)
// @formatter:on
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public abstract class QuizQuestion extends DomainObject {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,12 @@
import javax.persistence.*;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

/**
* A QuizSubmission.
*/
@Entity
@DiscriminatorValue(value = "Q")
@JsonTypeName("quiz")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class QuizSubmission extends AbstractQuizSubmission {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,6 @@

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonView;

import de.tum.in.www1.artemis.domain.quiz.scoring.*;
Expand All @@ -20,7 +19,6 @@
*/
@Entity
@DiscriminatorValue(value = "SA")
@JsonTypeName("short-answer")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ShortAnswerQuestion extends QuizQuestion {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,12 @@
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;

/**
* A ShortAnswerQuestionStatistic.
*/
@Entity
@DiscriminatorValue(value = "SA")
@JsonTypeName("short-answer")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ShortAnswerQuestionStatistic extends QuizQuestionStatistic {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import org.hibernate.annotations.CacheConcurrencyStrategy;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonTypeName;
import com.fasterxml.jackson.annotation.JsonView;

import de.tum.in.www1.artemis.domain.quiz.compare.SAMapping;
Expand All @@ -22,7 +21,6 @@
*/
@Entity
@DiscriminatorValue(value = "SA")
@JsonTypeName("short-answer")
@JsonInclude(JsonInclude.Include.NON_EMPTY)
public class ShortAnswerSubmittedAnswer extends SubmittedAnswer {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,13 @@ public ResponseEntity<Post> createMessage(@PathVariable Long courseId, @Valid @R
public ResponseEntity<List<Post>> getMessages(@ApiParam Pageable pageable, PostContextFilter postContextFilter, Principal principal) {
long timeNanoStart = System.nanoTime();
Page<Post> coursePosts = conversationMessagingService.getMessages(pageable, postContextFilter);
// keep the data as small as possible and avoid unnecessary information sent to the client
// TODO: in the future we should set conversation to null
coursePosts.getContent().forEach(post -> {
if (post.getConversation() != null) {
post.getConversation().hideDetails();
}
});
HttpHeaders headers = PaginationUtil.generatePaginationHttpHeaders(ServletUriComponentsBuilder.fromCurrentRequest(), coursePosts);
logDuration(coursePosts.getContent(), principal, timeNanoStart);
return new ResponseEntity<>(coursePosts.getContent(), headers, HttpStatus.OK);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,6 +123,9 @@ public ResponseEntity<Channel> getExerciseChannel(@PathVariable Long courseId, @
var course = courseRepository.findByIdElseThrow(courseId);
authorizationCheckService.checkHasAtLeastRoleInCourseElseThrow(Role.STUDENT, course, requestingUser);
var channel = channelRepository.findChannelByExerciseId(exerciseId);
if (channel != null) {
channel.hideDetails();
}

checkChannelMembership(channel, requestingUser.getId());

Expand All @@ -145,6 +148,9 @@ public ResponseEntity<Channel> getLectureChannel(@PathVariable Long courseId, @P
var course = courseRepository.findByIdElseThrow(courseId);
authorizationCheckService.checkHasAtLeastRoleInCourseElseThrow(Role.STUDENT, course, requestingUser);
var channel = channelRepository.findChannelByLectureId(lectureId);
if (channel != null) {
channel.hideDetails();
}

checkChannelMembership(channel, requestingUser.getId());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -780,7 +780,7 @@ void getExerciseChannel_asCourseStudent_shouldGetExerciseChannel() throws Except

Channel exerciseChannel = request.get("/api/courses/" + exampleCourseId + "/exercises/" + exercise.getId() + "/channel", HttpStatus.OK, Channel.class);
assertThat(exerciseChannel.getId()).isEqualTo(publicChannelWhereMember.getId());
assertThat(exerciseChannel.getExercise().getId()).isEqualTo(exercise.getId());
assertThat(exerciseChannel.getExercise()).isNull();

conversationRepository.deleteById(publicChannelWhereMember.getId());
}
Expand All @@ -806,7 +806,7 @@ void getLectureChannel_asCourseStudent_shouldGetLectureChannel() throws Exceptio

Channel lectureChannel = request.get("/api/courses/" + exampleCourseId + "/lectures/" + lecture.getId() + "/channel", HttpStatus.OK, Channel.class);
assertThat(lectureChannel.getId()).isEqualTo(publicChannelWhereMember.getId());
assertThat(lectureChannel.getLecture().getId()).isEqualTo(lecture.getId());
assertThat(lectureChannel.getLecture()).isNull();

conversationRepository.deleteById(publicChannelWhereMember.getId());
lectureRepository.deleteById(lecture.getId());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -281,8 +281,6 @@ export const metisExerciseChannel = {
isAnnouncementChannel: false,
isArchived: false,
isPublic: true,
course: metisCourse,
exercise: metisExercise,
} as Channel;

export const metisLectureChannel = {
Expand All @@ -292,6 +290,4 @@ export const metisLectureChannel = {
isAnnouncementChannel: false,
isArchived: false,
isPublic: true,
course: metisCourse,
exercise: metisLecture,
} as Channel;