Skip to content

Commit

Permalink
Merge pull request #120 from ProjectMapK/optimize-is-assignable-from
Browse files Browse the repository at this point in the history
Optimized to not use `isAssignableFrom`
  • Loading branch information
k163377 authored Jul 31, 2023
2 parents 8c2d7cb + 1ee808b commit 81c6497
Show file tree
Hide file tree
Showing 2 changed files with 9 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ internal class KotlinFallbackAnnotationIntrospector(

valueParameter.createValueClassUnboxConverterOrNull(rawType) ?: run {
if (strictNullChecks) {
valueParameter.createStrictNullChecksConverterOrNull(a.type, rawType)
valueParameter.createStrictNullChecksConverterOrNull(a.type)
} else {
null
}
Expand Down Expand Up @@ -176,13 +176,13 @@ private fun ValueParameter.createValueClassUnboxConverterOrNull(rawType: Class<*
// @see io.github.projectmapk.jackson.module.kogera._ported.test.StrictNullChecksTest#testListOfGenericWithNullValue
private fun ValueParameter.isNullishTypeAt(index: Int) = arguments.getOrNull(index)?.isNullable ?: true

private fun ValueParameter.createStrictNullChecksConverterOrNull(type: JavaType, rawType: Class<*>): Converter<*, *>? {
private fun ValueParameter.createStrictNullChecksConverterOrNull(type: JavaType): Converter<*, *>? {
return when {
Array::class.java.isAssignableFrom(rawType) && !this.isNullishTypeAt(0) ->
type.isArrayType && !this.isNullishTypeAt(0) ->
CollectionValueStrictNullChecksConverter.ForArray(type, this.name)
Iterable::class.java.isAssignableFrom(rawType) && !this.isNullishTypeAt(0) ->
type.isCollectionLikeType && !this.isNullishTypeAt(0) ->
CollectionValueStrictNullChecksConverter.ForIterable(type, this.name)
Map::class.java.isAssignableFrom(rawType) && !this.isNullishTypeAt(1) ->
type.isMapLikeType && !this.isNullishTypeAt(1) ->
MapValueStrictNullChecksConverter(type, this.name)
else -> null
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -85,10 +85,10 @@ internal class KotlinSerializers : Serializers.Base() {
val rawClass = type.rawClass

return when {
UByte::class.java.isAssignableFrom(rawClass) -> UByteSerializer
UShort::class.java.isAssignableFrom(rawClass) -> UShortSerializer
UInt::class.java.isAssignableFrom(rawClass) -> UIntSerializer
ULong::class.java.isAssignableFrom(rawClass) -> ULongSerializer
UByte::class.java == rawClass -> UByteSerializer
UShort::class.java == rawClass -> UShortSerializer
UInt::class.java == rawClass -> UIntSerializer
ULong::class.java == rawClass -> ULongSerializer
// The priority of Unboxing needs to be lowered so as not to break the serialization of Unsigned Integers.
rawClass.isUnboxableValueClass() -> ValueClassStaticJsonValueSerializer.createOrNull(rawClass)
?: ValueClassUnboxSerializer
Expand Down

0 comments on commit 81c6497

Please sign in to comment.