Skip to content

Commit 8509b3f

Browse files
committed
use SealedTypeAdapterFactory.kt
1 parent 0a22f8b commit 8509b3f

File tree

3 files changed

+107
-350
lines changed

3 files changed

+107
-350
lines changed

kotlin-insight-client/kotlin-insight-client-api/src/main/kotlin/com/linkedplanet/kotlininsightclient/api/impl/GsonUtil.kt

Lines changed: 5 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,11 @@ class GsonUtil {
3232
companion object {
3333
fun gsonBuilder(): GsonBuilder = GsonBuilder()
3434
.registerTypeAdapter(ZonedDateTime::class.java, zonedDateTimeAdapter)
35-
.registerTypeAdapterFactory(insightAttributeAdapter)
36-
.registerTypeAdapterFactory(insightSchemaAttributeAdapter)
35+
.registerTypeAdapterFactory(SealedTypeAdapterFactory.of(InsightAttribute::class))
36+
.registerTypeAdapterFactory(SealedTypeAdapterFactory.of(ObjectTypeSchemaAttribute::class,
37+
typeFieldName = "type",
38+
jsonNameForType = { it.simpleName!!.removeSuffix("Schema") to it }
39+
))
3740

3841

3942
private val zonedDateTimeAdapter = object : TypeAdapter<ZonedDateTime>() {
@@ -45,52 +48,5 @@ class GsonUtil {
4548
return ZonedDateTime.parse(`in`.nextString())
4649
}
4750
}
48-
49-
private val insightAttributeAdapter =
50-
RuntimeTypeAdapterFactory.of(InsightAttribute::class.java, "type", true)
51-
.registerSubtype(InsightAttribute.Text::class.java)
52-
.registerSubtype(InsightAttribute.Integer::class.java)
53-
.registerSubtype(InsightAttribute.Bool::class.java)
54-
.registerSubtype(InsightAttribute.DoubleNumber::class.java)
55-
.registerSubtype(InsightAttribute.Select::class.java)
56-
.registerSubtype(InsightAttribute.Date::class.java)
57-
.registerSubtype(InsightAttribute.Time::class.java)
58-
.registerSubtype(InsightAttribute.DateTime::class.java)
59-
.registerSubtype(InsightAttribute.Url::class.java)
60-
.registerSubtype(InsightAttribute.Email::class.java)
61-
.registerSubtype(InsightAttribute.Textarea::class.java)
62-
.registerSubtype(InsightAttribute.Ipaddress::class.java)
63-
.registerSubtype(InsightAttribute.Reference::class.java)
64-
.registerSubtype(InsightAttribute.User::class.java)
65-
.registerSubtype(InsightAttribute.Confluence::class.java)
66-
.registerSubtype(InsightAttribute.Group::class.java)
67-
.registerSubtype(InsightAttribute.Version::class.java)
68-
.registerSubtype(InsightAttribute.Project::class.java)
69-
.registerSubtype(InsightAttribute.Status::class.java)
70-
.registerSubtype(InsightAttribute.Unknown::class.java)!!
71-
72-
private val insightSchemaAttributeAdapter =
73-
RuntimeTypeAdapterFactory.of(ObjectTypeSchemaAttribute::class.java, "type", true)
74-
.registerSubtype(ObjectTypeSchemaAttribute.TextSchema::class.java, "Text")
75-
.registerSubtype(ObjectTypeSchemaAttribute.IntegerSchema::class.java, "Integer")
76-
.registerSubtype(ObjectTypeSchemaAttribute.BoolSchema::class.java, "Bool")
77-
.registerSubtype(ObjectTypeSchemaAttribute.DoubleNumberSchema::class.java, "DoubleNumber")
78-
.registerSubtype(ObjectTypeSchemaAttribute.SelectSchema::class.java, "Select")
79-
.registerSubtype(ObjectTypeSchemaAttribute.DateSchema::class.java, "Date")
80-
.registerSubtype(ObjectTypeSchemaAttribute.TimeSchema::class.java, "Time")
81-
.registerSubtype(ObjectTypeSchemaAttribute.DateTimeSchema::class.java, "DateTime")
82-
.registerSubtype(ObjectTypeSchemaAttribute.UrlSchema::class.java, "Url")
83-
.registerSubtype(ObjectTypeSchemaAttribute.EmailSchema::class.java, "Email")
84-
.registerSubtype(ObjectTypeSchemaAttribute.TextareaSchema::class.java, "Textarea")
85-
.registerSubtype(ObjectTypeSchemaAttribute.IpaddressSchema::class.java, "Ipaddress")
86-
.registerSubtype(ObjectTypeSchemaAttribute.ReferenceSchema::class.java, "Reference")
87-
.registerSubtype(ObjectTypeSchemaAttribute.UserSchema::class.java, "User")
88-
.registerSubtype(ObjectTypeSchemaAttribute.ConfluenceSchema::class.java, "Confluence")
89-
.registerSubtype(ObjectTypeSchemaAttribute.GroupSchema::class.java, "Group")
90-
.registerSubtype(ObjectTypeSchemaAttribute.VersionSchema::class.java, "Version")
91-
.registerSubtype(ObjectTypeSchemaAttribute.ProjectSchema::class.java, "Project")
92-
.registerSubtype(ObjectTypeSchemaAttribute.StatusSchema::class.java, "Status")
93-
.registerSubtype(ObjectTypeSchemaAttribute.UnknownSchema::class.java, "Unknown")
9451
}
95-
9652
}

kotlin-insight-client/kotlin-insight-client-api/src/main/kotlin/com/linkedplanet/kotlininsightclient/api/impl/RuntimeTypeAdapterFactory.java

Lines changed: 0 additions & 301 deletions
This file was deleted.

0 commit comments

Comments
 (0)