Skip to content
Snippets Groups Projects
Commit 77f94005 authored by Christoph Thelen's avatar Christoph Thelen Committed by Tom Käsler
Browse files

Fix NPE when locked questions with answers are present

parent 8446279f
Branches
Tags
No related merge requests found
...@@ -31,8 +31,6 @@ import java.util.TimerTask; ...@@ -31,8 +31,6 @@ import java.util.TimerTask;
import java.util.Dictionary; import java.util.Dictionary;
import java.util.Collections; import java.util.Collections;
import de.thm.arsnova.exceptions.ForbiddenException;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -63,6 +61,7 @@ import de.thm.arsnova.events.NewQuestionEvent; ...@@ -63,6 +61,7 @@ import de.thm.arsnova.events.NewQuestionEvent;
import de.thm.arsnova.events.PiRoundDelayedStartEvent; import de.thm.arsnova.events.PiRoundDelayedStartEvent;
import de.thm.arsnova.events.PiRoundEndEvent; import de.thm.arsnova.events.PiRoundEndEvent;
import de.thm.arsnova.exceptions.BadRequestException; import de.thm.arsnova.exceptions.BadRequestException;
import de.thm.arsnova.exceptions.ForbiddenException;
import de.thm.arsnova.exceptions.NotFoundException; import de.thm.arsnova.exceptions.NotFoundException;
import de.thm.arsnova.exceptions.UnauthorizedException; import de.thm.arsnova.exceptions.UnauthorizedException;
...@@ -223,6 +222,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis ...@@ -223,6 +222,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
this.publisher.publishEvent(event); this.publisher.publishEvent(event);
} }
@Override
public void startNewPiRound(final String questionId, User user) { public void startNewPiRound(final String questionId, User user) {
if(null == user) { if(null == user) {
user = userService.getCurrentUser(); user = userService.getCurrentUser();
...@@ -254,6 +254,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis ...@@ -254,6 +254,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
cancelDelayedPiRoundChange(questionId); cancelDelayedPiRoundChange(questionId);
timer.schedule(new TimerTask() { timer.schedule(new TimerTask() {
@Override
public void run() { public void run() {
questionService.startNewPiRound(questionId, user); questionService.startNewPiRound(questionId, user);
} }
...@@ -268,6 +269,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis ...@@ -268,6 +269,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
this.publisher.publishEvent(new PiRoundDelayedStartEvent(this, session, question)); this.publisher.publishEvent(new PiRoundDelayedStartEvent(this, session, question));
} }
@Override
public void cancelDelayedPiRoundChange(final String questionId) { public void cancelDelayedPiRoundChange(final String questionId) {
Timer timer = timerList.get(questionId); Timer timer = timerList.get(questionId);
...@@ -428,6 +430,11 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis ...@@ -428,6 +430,11 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
final List<Answer> filteredAnswers = new ArrayList<Answer>(); final List<Answer> filteredAnswers = new ArrayList<Answer>();
for (final Answer answer : answers) { for (final Answer answer : answers) {
final Question question = questionIdToQuestion.get(answer.getQuestionId()); final Question question = questionIdToQuestion.get(answer.getQuestionId());
if (question == null) {
// Question is not present. Most likely it has been locked by the
// Session's creator. Locked Questions do not appear in this list.
continue;
}
if (0 == answer.getPiRound() && !"freetext".equals(question.getQuestionType())) { if (0 == answer.getPiRound() && !"freetext".equals(question.getQuestionType())) {
answer.setPiRound(1); answer.setPiRound(1);
} }
...@@ -516,7 +523,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis ...@@ -516,7 +523,7 @@ public class QuestionService implements IQuestionService, ApplicationEventPublis
final User user = userService.getCurrentUser(); final User user = userService.getCurrentUser();
return update(question, user); return update(question, user);
} }
@Override @Override
@PreAuthorize("isAuthenticated()") @PreAuthorize("isAuthenticated()")
public Question update(final Question question, User user) { public Question update(final Question question, User user) {
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment