Skip to content

Commit b848cb8

Browse files
committed
Kotlin LocalDate and LocalDateTime parsing fix #516
1 parent 9c0443b commit b848cb8

File tree

5 files changed

+61
-7
lines changed

5 files changed

+61
-7
lines changed

src/main/java/io/swagger/codegen/v3/generators/kotlin/AbstractKotlinCodegen.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,14 +155,14 @@ public AbstractKotlinCodegen() {
155155
typeMapping.put("double", "kotlin.Double");
156156
typeMapping.put("number", "java.math.BigDecimal");
157157
typeMapping.put("date-time", "java.time.LocalDateTime");
158-
typeMapping.put("date", "java.time.LocalDateTime");
158+
typeMapping.put("date", "java.time.LocalDate");
159159
typeMapping.put("file", "java.io.File");
160160
typeMapping.put("array", "kotlin.Array");
161161
typeMapping.put("list", "kotlin.Array");
162162
typeMapping.put("map", "kotlin.collections.Map");
163163
typeMapping.put("object", "kotlin.Any");
164164
typeMapping.put("binary", "kotlin.Array<kotlin.Byte>");
165-
typeMapping.put("Date", "java.time.LocalDateTime");
165+
typeMapping.put("Date", "java.time.LocalDate");
166166
typeMapping.put("DateTime", "java.time.LocalDateTime");
167167

168168
instantiationTypes.put("array", "arrayOf");
@@ -500,7 +500,7 @@ public String toModelName(final String name) {
500500

501501
modifiedName = titleCase(modifiedName);
502502

503-
if (modifiedName.equalsIgnoreCase("Companion")){
503+
if (modifiedName.equalsIgnoreCase("Companion")) {
504504
modifiedName = "_" + modifiedName;
505505
}
506506

src/main/java/io/swagger/codegen/v3/generators/kotlin/KotlinClientCodegen.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,5 +129,8 @@ public void processOpts() {
129129
supportingFiles.add(new SupportingFile("infrastructure/ResponseExtensions.kt.mustache", infrastructureFolder, "ResponseExtensions.kt"));
130130
supportingFiles.add(new SupportingFile("infrastructure/Serializer.kt.mustache", infrastructureFolder, "Serializer.kt"));
131131
supportingFiles.add(new SupportingFile("infrastructure/Errors.kt.mustache", infrastructureFolder, "Errors.kt"));
132+
supportingFiles.add(new SupportingFile("infrastructure/LocalDateAdapter.kt.mustache", infrastructureFolder, "LocalDateAdapter.kt"));
133+
supportingFiles.add(new SupportingFile("infrastructure/LocalDateTimeAdapter.kt.mustache", infrastructureFolder, "LocalDateTimeAdapter.kt"));
134+
132135
}
133136
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package {{packageName}}.infrastructure
2+
3+
import com.squareup.moshi.FromJson
4+
import com.squareup.moshi.ToJson
5+
{{^threetenbp}}
6+
import java.time.LocalDate
7+
import java.time.format.DateTimeFormatter
8+
{{/threetenbp}}
9+
{{#threetenbp}}
10+
import org.threeten.bp.LocalDate
11+
import org.threeten.bp.format.DateTimeFormatter
12+
{{/threetenbp}}
13+
14+
class LocalDateAdapter {
15+
@ToJson
16+
fun toJson(value: LocalDate): String {
17+
return DateTimeFormatter.ISO_LOCAL_DATE.format(value)
18+
}
19+
20+
@FromJson
21+
fun fromJson(value: String): LocalDate {
22+
return LocalDate.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
23+
}
24+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package {{packageName}}.infrastructure
2+
3+
import com.squareup.moshi.FromJson
4+
import com.squareup.moshi.ToJson
5+
{{^threetenbp}}
6+
import java.time.LocalDateTime
7+
import java.time.format.DateTimeFormatter
8+
{{/threetenbp}}
9+
{{#threetenbp}}
10+
import org.threeten.bp.LocalDateTime
11+
import org.threeten.bp.format.DateTimeFormatter
12+
{{/threetenbp}}
13+
14+
class LocalDateTimeAdapter {
15+
@ToJson
16+
fun toJson(value: LocalDateTime): String {
17+
return DateTimeFormatter.ISO_LOCAL_DATE_TIME.format(value)
18+
}
19+
20+
@FromJson
21+
fun fromJson(value: String): LocalDateTime {
22+
return LocalDateTime.parse(value, DateTimeFormatter.ISO_LOCAL_DATE_TIME)
23+
}
24+
25+
}
Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,16 @@
11
package {{packageName}}.infrastructure
22

3-
import com.squareup.moshi.KotlinJsonAdapterFactory
43
import com.squareup.moshi.Moshi
5-
import com.squareup.moshi.Rfc3339DateJsonAdapter
6-
import java.util.*
4+
import com.squareup.moshi.adapters.Rfc3339DateJsonAdapter
5+
import com.squareup.moshi.kotlin.reflect.KotlinJsonAdapterFactory
6+
import java.util.Date
77

88
object Serializer {
99
@JvmStatic
1010
val moshi: Moshi = Moshi.Builder()
1111
.add(KotlinJsonAdapterFactory())
1212
.add(Date::class.java, Rfc3339DateJsonAdapter().nullSafe())
13+
.add(LocalDateTimeAdapter())
14+
.add(LocalDateAdapter())
1315
.build()
14-
}
16+
}

0 commit comments

Comments
 (0)