From 96b0cf42a7f5e47652f26887acc5957b203b2c0c 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 408c330d7..bddb5511c 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