From 76d1dba3f0d5d87b1c847e169844d552406d68b4 Mon Sep 17 00:00:00 2001
From: Daniel Knapp <daniel.knapp@thm.de>
Date: Wed, 23 Jan 2013 16:33:19 +0100
Subject: [PATCH] response the recently created question

---
 pom.xml                                          |  6 +++---
 .../arsnova/controller/QuestionController.java   | 16 ++++++++++------
 src/main/java/de/thm/arsnova/dao/CouchDBDao.java |  8 ++++----
 .../java/de/thm/arsnova/dao/IDatabaseDao.java    |  4 +++-
 .../thm/arsnova/services/IQuestionService.java   |  2 +-
 .../de/thm/arsnova/services/QuestionService.java | 10 ++++++++--
 6 files changed, 29 insertions(+), 17 deletions(-)

diff --git a/pom.xml b/pom.xml
index 97573865..a44ed123 100644
--- a/pom.xml
+++ b/pom.xml
@@ -330,10 +330,10 @@
 				<groupId>org.mortbay.jetty</groupId>
 				<artifactId>jetty-maven-plugin</artifactId>
 				<version>7.6.5.v20120716</version>
-				<!-- <configuration> <scanIntervalSeconds>5</scanIntervalSeconds> <webApp> 
+				<configuration> <scanIntervalSeconds>1</scanIntervalSeconds> <webApp> 
 					<contextPath>/</contextPath> <baseResource implementation="org.eclipse.jetty.util.resource.ResourceCollection"> 
-					<resourcesAsCSV>src/main/webapp,../arsnova-js/src/main/webapp,../arsnova-legacy-js/src/main/webapp,../dojo-war/src/main/webapp</resourcesAsCSV> 
-					</baseResource> </webApp> </configuration> -->
+					<resourcesAsCSV>src/main/webapp,../arsnova-js/src/main/webapp,../arsnova-legacy-js/src/main/webapp</resourcesAsCSV> 
+					</baseResource> </webApp> </configuration>
 			</plugin>
 			<plugin>
 				<groupId>org.apache.maven.plugins</groupId>
diff --git a/src/main/java/de/thm/arsnova/controller/QuestionController.java b/src/main/java/de/thm/arsnova/controller/QuestionController.java
index f34b9b77..d6f70983 100644
--- a/src/main/java/de/thm/arsnova/controller/QuestionController.java
+++ b/src/main/java/de/thm/arsnova/controller/QuestionController.java
@@ -63,25 +63,29 @@ public class QuestionController extends AbstractController {
 		return null;
 	}
 
-	@RequestMapping(value = "/session/{sessionkey}/question", method = RequestMethod.POST)
+	@RequestMapping(
+			value = "/session/{sessionkey}/question", 
+			method = RequestMethod.POST
+			)
 	@ResponseBody
-	public final void postQuestion(
+	public final Question postQuestion(
 			@PathVariable final String sessionkey,
 			@RequestBody final Question question,
 			final HttpServletResponse response
 	) {
 		if (!sessionkey.equals(question.getSession())) {
 			response.setStatus(HttpStatus.PRECONDITION_FAILED.value());
-			return;
+			return null;
 		}
 
-		if (questionService.saveQuestion(question)) {
+		if (questionService.saveQuestion(question) != null) {
 			response.setStatus(HttpStatus.CREATED.value());
-			return;
+			return question;
 		}
 
 		response.setStatus(HttpStatus.BAD_REQUEST.value());
-		return;
+		
+		return null;
 	}
 
 	@RequestMapping(
diff --git a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
index 47ea04ac..82176db0 100644
--- a/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
+++ b/src/main/java/de/thm/arsnova/dao/CouchDBDao.java
@@ -519,7 +519,7 @@ public class CouchDBDao implements IDatabaseDao {
 	}
 
 	@Override
-	public final boolean saveQuestion(final Session session, final Question question) {
+	public final Document saveQuestion(final Session session, final Question question) {
 		Document q = new Document();
 		q.put("type", "skill_question");
 		q.put("questionType", question.getQuestionType());
@@ -533,12 +533,12 @@ public class CouchDBDao implements IDatabaseDao {
 		q.put("possibleAnswers", question.getPossibleAnswers());
 		q.put("noCorrect", question.isNoCorrect());
 		try {
-			database.saveDocument(q);
-			return true;
+			database.saveDocument(q, null);
+			return q;
 		} catch (IOException e) {
 			LOGGER.error("Could not save question {}", question);
 		}
-		return false;
+		return null;
 	}
 	
 	@Override
diff --git a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
index 140b4083..78e7aa90 100644
--- a/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
+++ b/src/main/java/de/thm/arsnova/dao/IDatabaseDao.java
@@ -22,6 +22,8 @@ package de.thm.arsnova.dao;
 import java.io.IOException;
 import java.util.List;
 
+import com.fourspaces.couchdb.Document;
+
 import de.thm.arsnova.entities.Answer;
 import de.thm.arsnova.entities.Feedback;
 import de.thm.arsnova.entities.FoodVote;
@@ -48,7 +50,7 @@ public interface IDatabaseDao {
 
 	boolean sessionKeyAvailable(String keyword);
 
-	boolean saveQuestion(Session session, Question question);
+	Document saveQuestion(Session session, Question question);
 
 	boolean saveQuestion(Session session, InterposedQuestion question);
 
diff --git a/src/main/java/de/thm/arsnova/services/IQuestionService.java b/src/main/java/de/thm/arsnova/services/IQuestionService.java
index 618ba018..3bacde60 100644
--- a/src/main/java/de/thm/arsnova/services/IQuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/IQuestionService.java
@@ -26,7 +26,7 @@ import de.thm.arsnova.entities.InterposedQuestion;
 import de.thm.arsnova.entities.Question;
 
 public interface IQuestionService {
-	boolean saveQuestion(Question question);
+	Question saveQuestion(Question question);
 
 	boolean saveQuestion(InterposedQuestion question);
 
diff --git a/src/main/java/de/thm/arsnova/services/QuestionService.java b/src/main/java/de/thm/arsnova/services/QuestionService.java
index ee50c779..2351a4ff 100644
--- a/src/main/java/de/thm/arsnova/services/QuestionService.java
+++ b/src/main/java/de/thm/arsnova/services/QuestionService.java
@@ -25,6 +25,8 @@ import java.util.List;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import com.fourspaces.couchdb.Document;
+
 import de.thm.arsnova.annotation.Authenticated;
 import de.thm.arsnova.dao.IDatabaseDao;
 import de.thm.arsnova.entities.Answer;
@@ -66,9 +68,13 @@ public class QuestionService implements IQuestionService {
 
 	@Override
 	@Authenticated
-	public boolean saveQuestion(Question question) {
+	public Question saveQuestion(Question question) {
 		Session session = this.databaseDao.getSessionFromKeyword(question.getSession());
-		return this.databaseDao.saveQuestion(session, question);
+		
+		Document d = this.databaseDao.saveQuestion(session, question);
+		question.set_id(d.getId());
+		question.set_rev(d.getRev());
+		return question;
 	}
 
 	@Override
-- 
GitLab