Skip to content

Commit 1b3edc3

Browse files
rafalbednarczukdinomite
authored andcommitted
fix #373
1 parent 6b549f0 commit 1b3edc3

File tree

1 file changed

+20
-13
lines changed

1 file changed

+20
-13
lines changed

src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt

+20-13
Original file line numberDiff line numberDiff line change
@@ -36,22 +36,22 @@ fun ObjectMapper.registerKotlinModule(): ObjectMapper = this.registerModule(kotl
3636

3737
inline fun <reified T> jacksonTypeRef(): TypeReference<T> = object: TypeReference<T>() {}
3838

39-
inline fun <reified T> ObjectMapper.readValue(jp: JsonParser): T = readValue(jp, jacksonTypeRef<T>())
40-
inline fun <reified T> ObjectMapper.readValues(jp: JsonParser): MappingIterator<T> = readValues(jp, jacksonTypeRef<T>())
39+
inline fun <reified T> ObjectMapper.readValue(jp: JsonParser): T = readValue(jp, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
40+
inline fun <reified T> ObjectMapper.readValues(jp: JsonParser): MappingIterator<T> = readValues(jp, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
4141

42-
inline fun <reified T> ObjectMapper.readValue(src: File): T = readValue(src, jacksonTypeRef<T>())
43-
inline fun <reified T> ObjectMapper.readValue(src: URL): T = readValue(src, jacksonTypeRef<T>())
44-
inline fun <reified T> ObjectMapper.readValue(content: String): T = readValue(content, jacksonTypeRef<T>())
45-
inline fun <reified T> ObjectMapper.readValue(src: Reader): T = readValue(src, jacksonTypeRef<T>())
46-
inline fun <reified T> ObjectMapper.readValue(src: InputStream): T = readValue(src, jacksonTypeRef<T>())
47-
inline fun <reified T> ObjectMapper.readValue(src: ByteArray): T = readValue(src, jacksonTypeRef<T>())
42+
inline fun <reified T> ObjectMapper.readValue(src: File): T = readValue(src, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
43+
inline fun <reified T> ObjectMapper.readValue(src: URL): T = readValue(src, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
44+
inline fun <reified T> ObjectMapper.readValue(content: String): T = readValue(content, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
45+
inline fun <reified T> ObjectMapper.readValue(src: Reader): T = readValue(src, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
46+
inline fun <reified T> ObjectMapper.readValue(src: InputStream): T = readValue(src, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
47+
inline fun <reified T> ObjectMapper.readValue(src: ByteArray): T = readValue(src, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
4848

49-
inline fun <reified T> ObjectMapper.treeToValue(n: TreeNode): T? = treeToValue(n, T::class.java)
50-
inline fun <reified T> ObjectMapper.convertValue(from: Any): T = convertValue(from, jacksonTypeRef<T>())
49+
inline fun <reified T> ObjectMapper.treeToValue(n: TreeNode): T? = treeToValue(n, T::class.java).throwIfNullableTypeIsNull()
50+
inline fun <reified T> ObjectMapper.convertValue(from: Any): T = convertValue(from, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
5151

52-
inline fun <reified T> ObjectReader.readValueTyped(jp: JsonParser): T = readValue(jp, jacksonTypeRef<T>())
53-
inline fun <reified T> ObjectReader.readValuesTyped(jp: JsonParser): Iterator<T> = readValues(jp, jacksonTypeRef<T>())
54-
inline fun <reified T> ObjectReader.treeToValue(n: TreeNode): T? = treeToValue(n, T::class.java)
52+
inline fun <reified T> ObjectReader.readValueTyped(jp: JsonParser): T = readValue(jp, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
53+
inline fun <reified T> ObjectReader.readValuesTyped(jp: JsonParser): Iterator<T> = readValues(jp, jacksonTypeRef<T>()).throwIfNullableTypeIsNull()
54+
inline fun <reified T> ObjectReader.treeToValue(n: TreeNode): T? = treeToValue(n, T::class.java).throwIfNullableTypeIsNull()
5555

5656
internal fun JsonMappingException.wrapWithPath(refFrom: Any?, refFieldName: String) = JsonMappingException.wrapWithPath(this, refFrom, refFieldName)
5757
internal fun JsonMappingException.wrapWithPath(refFrom: Any?, index: Int) = JsonMappingException.wrapWithPath(this, refFrom, index)
@@ -64,4 +64,11 @@ inline fun <reified T : Any> SimpleModule.addSerializer(kClass: KClass<T>, seria
6464
inline fun <reified T : Any> SimpleModule.addDeserializer(kClass: KClass<T>, deserializer: JsonDeserializer<T>) = this.apply {
6565
addDeserializer(kClass.java, deserializer)
6666
addDeserializer(kClass.javaObjectType, deserializer)
67+
}
68+
69+
inline fun <reified T> T.throwIfNullableTypeIsNull(): T {
70+
if (null !is T && this == null) {
71+
throw Exception()
72+
}
73+
return this
6774
}

0 commit comments

Comments
 (0)