diff options
author | Jesse Morgan <jesse@jesterpm.net> | 2014-05-23 13:05:19 -0700 |
---|---|---|
committer | Jesse Morgan <jesse@jesterpm.net> | 2014-05-23 13:05:19 -0700 |
commit | ef862e30975db691339fd143d2c4d60eb5132a3e (patch) | |
tree | 2388b461e98a6c6443294a172ddb9ab789de8a26 /src/com/p4square/grow/backend/resources/SurveyResource.java | |
parent | 728c8cfae2312e68fefd49241436517afb4c6134 (diff) |
Abstracting out Cassandra.
Diffstat (limited to 'src/com/p4square/grow/backend/resources/SurveyResource.java')
-rw-r--r-- | src/com/p4square/grow/backend/resources/SurveyResource.java | 31 |
1 files changed, 23 insertions, 8 deletions
diff --git a/src/com/p4square/grow/backend/resources/SurveyResource.java b/src/com/p4square/grow/backend/resources/SurveyResource.java index 497978f..8723ee2 100644 --- a/src/com/p4square/grow/backend/resources/SurveyResource.java +++ b/src/com/p4square/grow/backend/resources/SurveyResource.java @@ -13,14 +13,17 @@ import com.fasterxml.jackson.databind.ObjectMapper; import org.restlet.data.MediaType; import org.restlet.data.Status; -import org.restlet.resource.ServerResource; +import org.restlet.ext.jackson.JacksonRepresentation; import org.restlet.representation.Representation; import org.restlet.representation.StringRepresentation; +import org.restlet.resource.ServerResource; import org.apache.log4j.Logger; import com.p4square.grow.backend.GrowBackend; -import com.p4square.grow.backend.db.CassandraDatabase; +import com.p4square.grow.model.Question; +import com.p4square.grow.provider.JsonEncodedProvider; +import com.p4square.grow.provider.Provider; /** * This resource manages assessment questions. @@ -30,9 +33,10 @@ import com.p4square.grow.backend.db.CassandraDatabase; public class SurveyResource extends ServerResource { private static final Logger LOG = Logger.getLogger(SurveyResource.class); - private static final ObjectMapper MAPPER = new ObjectMapper(); + private static final ObjectMapper MAPPER = JsonEncodedProvider.MAPPER; - private CassandraDatabase mDb; + private Provider<String, Question> mQuestionProvider; + private Provider<String, String> mStringProvider; private String mQuestionId; @@ -41,7 +45,8 @@ public class SurveyResource extends ServerResource { super.doInit(); final GrowBackend backend = (GrowBackend) getApplication(); - mDb = backend.getDatabase(); + mQuestionProvider = backend.getQuestionProvider(); + mStringProvider = backend.getStringProvider(); mQuestionId = getAttribute("questionId"); } @@ -71,13 +76,22 @@ public class SurveyResource extends ServerResource { if (mQuestionId != null) { // Get a question by id - result = mDb.getKey("strings", "/questions/" + mQuestionId); + Question question = null; + try { + question = mQuestionProvider.get(mQuestionId); + } catch (IOException e) { + LOG.error("IOException loading question: " + e); + } - if (result == null) { + if (question == null) { // 404 setStatus(Status.CLIENT_ERROR_NOT_FOUND); return null; } + + JacksonRepresentation<Question> rep = new JacksonRepresentation<>(question); + rep.setObjectMapper(MAPPER); + return rep; } return new StringRepresentation(result); @@ -85,7 +99,8 @@ public class SurveyResource extends ServerResource { private Map<?, ?> getQuestionsSummary() { try { - String json = mDb.getKey("strings", "/questions"); + // TODO: This could be better. Quick fix for provider support. + String json = mStringProvider.get("/questions"); if (json != null) { return MAPPER.readValue(json, Map.class); |