From 2d3b73bd7e347986b50eef8b49b6b5bb4e342831 Mon Sep 17 00:00:00 2001
From: Daniel Gerhardt <code@dgerhardt.net>
Date: Tue, 13 Feb 2018 17:27:14 +0100
Subject: [PATCH] Use format instead of type property for Content
 deserialization

While type works fine for deserialization from CouchDB, it is not part
of the public v3 API. The format property is available in both cases.
---
 src/main/java/de/thm/arsnova/entities/Content.java        | 3 ++-
 .../entities/serialization/CouchDbDocumentModule.java     | 8 ++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/main/java/de/thm/arsnova/entities/Content.java b/src/main/java/de/thm/arsnova/entities/Content.java
index f716d2123..0b1b145e5 100644
--- a/src/main/java/de/thm/arsnova/entities/Content.java
+++ b/src/main/java/de/thm/arsnova/entities/Content.java
@@ -12,7 +12,8 @@ import java.util.Objects;
 @JsonTypeInfo(
 		use = JsonTypeInfo.Id.MINIMAL_CLASS,
 		include = JsonTypeInfo.As.PROPERTY,
-		property = "type"
+		property = "format",
+		visible = true
 )
 public class Content extends Entity {
 	public enum Format {
diff --git a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java
index a99adbf97..7584b1556 100644
--- a/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java
+++ b/src/main/java/de/thm/arsnova/entities/serialization/CouchDbDocumentModule.java
@@ -36,8 +36,12 @@ public class CouchDbDocumentModule extends SimpleModule {
 		context.setMixInAnnotations(Entity.class, CouchDbDocumentMixIn.class);
 		context.setMixInAnnotations(de.thm.arsnova.entities.migration.v2.Entity.class, CouchDbDocumentV2MixIn.class);
 		context.registerSubtypes(
-				new NamedType(Content.class, Content.class.getSimpleName()),
-				new NamedType(ChoiceQuestionContent.class, ChoiceQuestionContent.class.getSimpleName()),
+				new NamedType(Content.class, Content.Format.TEXT.toString()),
+				new NamedType(Content.class, Content.Format.NUMBER.toString()),
+				new NamedType(ChoiceQuestionContent.class, Content.Format.CHOICE.toString()),
+				new NamedType(ChoiceQuestionContent.class, Content.Format.BINARY.toString()),
+				new NamedType(ChoiceQuestionContent.class, Content.Format.SCALE.toString()),
+				new NamedType(ChoiceQuestionContent.class, Content.Format.GRID.toString()),
 				new NamedType(Answer.class, Answer.class.getSimpleName()),
 				new NamedType(ChoiceAnswer.class, ChoiceAnswer.class.getSimpleName()),
 				new NamedType(TextAnswer.class, TextAnswer.class.getSimpleName()));
-- 
GitLab