@@ -74,7 +74,6 @@ class SerializationFactory(
74
74
val map = ConcurrentHashMap <SerializerKey , JsonSerializer <Any >>()
75
75
76
76
map[SerializerKey (String ::class .java)] = StringSerializer as JsonSerializer <Any >
77
- map[SerializerKey (ByteArray ::class .java)] = ByteArraySerializer as JsonSerializer <Any >
78
77
map[SerializerKey (Int ::class .java)] = IntSerializer as JsonSerializer <Any >
79
78
map[SerializerKey (Long ::class .java)] = LongSerializer as JsonSerializer <Any >
80
79
map[SerializerKey (Double ::class .java)] = DoubleSerializer as JsonSerializer <Any >
@@ -137,6 +136,8 @@ class SerializationFactory(
137
136
138
137
override val valueType = SerializerKey .fromSuperclassTypeArgument(PrimitiveTypeSerializer ::class , this ::class )
139
138
override fun generateSchema (generator : JsonSchemaGenerator ) = schema
139
+
140
+ abstract fun fromMultiPartFormValue (formValue : FormData .FormValue ) : T
140
141
}
141
142
142
143
/* * Built-in serializer for atomic value of type [String] */
@@ -156,25 +157,13 @@ class SerializationFactory(
156
157
override fun toJson (obj : String , generator : JsonGenerator ) {
157
158
generator.write(obj)
158
159
}
159
- }
160
160
161
- /* * Built-in serializer for atomic value of type [ByteArray] */
162
- object ByteArraySerializer : PrimitiveTypeSerializer<ByteArray>(" string" ) {
163
- override fun fromJson (value : JsonValue ): ByteArray {
164
- return when (value.valueType) {
165
- // provide limited number of type conversions
166
- JsonValue .ValueType .TRUE -> true .toString().base64ToByteArray()
167
- JsonValue .ValueType .FALSE -> false .toString().base64ToByteArray()
168
- JsonValue .ValueType .NULL -> " " .base64ToByteArray()
169
- JsonValue .ValueType .NUMBER -> value.toString().base64ToByteArray()
170
- JsonValue .ValueType .STRING -> (value as JsonString ).string.base64ToByteArray()
171
- else -> throw AssertionError (" Expected string, got ${value.valueType} with value $value " )
161
+ override fun fromMultiPartFormValue (formValue : FormData .FormValue ): String {
162
+ return when (formValue.value.isNotEmpty()) {
163
+ true -> formValue.value
164
+ false -> " "
172
165
}
173
166
}
174
-
175
- override fun toJson (obj : ByteArray , generator : JsonGenerator ) {
176
- generator.write(String (obj))
177
- }
178
167
}
179
168
180
169
/* * Built-in serializer for atomic value of type [Int] */
@@ -191,6 +180,13 @@ class SerializationFactory(
191
180
override fun toJson (obj : Int , generator : JsonGenerator ) {
192
181
generator.write(obj)
193
182
}
183
+
184
+ override fun fromMultiPartFormValue (formValue : FormData .FormValue ): Int {
185
+ return when (formValue.value.isNotEmpty()) {
186
+ true -> Integer .parseInt(formValue.value)
187
+ false -> 0
188
+ }
189
+ }
194
190
}
195
191
196
192
/* * Built-in serializer for atomic value of type [Long] */
@@ -207,6 +203,13 @@ class SerializationFactory(
207
203
override fun toJson (obj : Long , generator : JsonGenerator ) {
208
204
generator.write(obj)
209
205
}
206
+
207
+ override fun fromMultiPartFormValue (formValue : FormData .FormValue ): Long {
208
+ return when (formValue.value.isNotEmpty()) {
209
+ true -> formValue.value.toLong()
210
+ false -> 0
211
+ }
212
+ }
210
213
}
211
214
212
215
/* * Built-in serializer for atomic value of type [Double] */
@@ -223,6 +226,13 @@ class SerializationFactory(
223
226
override fun toJson (obj : Double , generator : JsonGenerator ) {
224
227
generator.write(obj)
225
228
}
229
+
230
+ override fun fromMultiPartFormValue (formValue : FormData .FormValue ): Double {
231
+ return when (formValue.value.isNotEmpty()) {
232
+ true -> formValue.value.toDouble()
233
+ false -> 0.0
234
+ }
235
+ }
226
236
}
227
237
228
238
/* * Built-in serializer for atomic value of type [Float] */
@@ -239,6 +249,13 @@ class SerializationFactory(
239
249
override fun toJson (obj : Float , generator : JsonGenerator ) {
240
250
generator.write(obj.toDouble())
241
251
}
252
+
253
+ override fun fromMultiPartFormValue (formValue : FormData .FormValue ): Float {
254
+ return when (formValue.value.isNotEmpty()) {
255
+ true -> formValue.value.toFloat()
256
+ false -> 0.0 .toFloat()
257
+ }
258
+ }
242
259
}
243
260
244
261
/* * Built-in serializer for atomic value of type [Boolean] */
@@ -255,6 +272,13 @@ class SerializationFactory(
255
272
override fun toJson (obj : Boolean , generator : JsonGenerator ) {
256
273
generator.write(obj)
257
274
}
275
+
276
+ override fun fromMultiPartFormValue (formValue : FormData .FormValue ): Boolean {
277
+ return when (formValue.value.isNotEmpty()) {
278
+ true -> formValue.value.toBoolean()
279
+ else -> throw AssertionError (" Expected , boolean got ${formValue.value} " )
280
+ }
281
+ }
258
282
}
259
283
260
284
/* * Serializer for Kotlin type [Unit] */
@@ -269,6 +293,13 @@ class SerializationFactory(
269
293
override fun toJson (obj : Unit , generator : JsonGenerator ) {
270
294
generator.write(obj.toString())
271
295
}
296
+
297
+ override fun fromMultiPartFormValue (formValue : FormData .FormValue ) {
298
+ return when (formValue.value.isNullOrEmpty()) {
299
+ true -> Unit
300
+ else -> throw AssertionError (" Expected unit, got ${formValue.value} " )
301
+ }
302
+ }
272
303
}
273
304
274
305
// FIXME use url format for the schema
0 commit comments