Skip to content

Commit b70b62e

Browse files
authored
uptake IterationType (#640)
* start work uptaking IterationType * try to fix tests * Update IteratorSerializerModule.scala
1 parent c8f140c commit b70b62e

File tree

2 files changed

+19
-2
lines changed

2 files changed

+19
-2
lines changed

src/main/scala/com/fasterxml/jackson/module/scala/modifiers/ScalaTypeModifier.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ class ScalaTypeModifier extends TypeModifier {
1818
private val longClass = classOf[Long]
1919
private val immutableLongMapClass = classOf[immutable.LongMap[_]]
2020
private val mutableLongMapClass = classOf[mutable.LongMap[_]]
21+
private val iteratorClass = classOf[Iterator[_]]
2122
private val iterableOnceClass = classOf[IterableOnce[_]]
2223

2324
override def modifyType(javaType: JavaType,
@@ -39,6 +40,8 @@ class ScalaTypeModifier extends TypeModifier {
3940
} else {
4041
MapLikeType.upgradeFrom(javaType, javaType.containedTypeOrUnknown(0), javaType.containedTypeOrUnknown(1))
4142
}
43+
} else if (javaType.isTypeOrSubTypeOf(iteratorClass)) {
44+
IterationType.upgradeFrom(javaType, javaType.containedTypeOrUnknown(0))
4245
} else if (javaType.isTypeOrSubTypeOf(iterableOnceClass)) {
4346
CollectionLikeType.upgradeFrom(javaType, javaType.containedTypeOrUnknown(0))
4447
} else if (javaType.isTypeOrSubTypeOf(eitherClass)) {

src/main/scala/com/fasterxml/jackson/module/scala/ser/IteratorSerializerModule.scala

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ package module.scala
33
package ser
44

55
import java.{lang => jl}
6-
76
import com.fasterxml.jackson.core.JsonGenerator
87
import com.fasterxml.jackson.databind._
9-
import com.fasterxml.jackson.databind.`type`.CollectionLikeType
8+
import com.fasterxml.jackson.databind.`type`.{CollectionLikeType, IterationType}
109
import com.fasterxml.jackson.databind.jsontype.TypeSerializer
1110
import com.fasterxml.jackson.databind.ser.std.AsArraySerializerBase
1211
import com.fasterxml.jackson.databind.ser.Serializers
@@ -75,6 +74,21 @@ private object ScalaIteratorSerializerResolver extends Serializers.Base {
7574
if (!SCALAITERATOR_CLASS.isAssignableFrom(rawClass) || JSONSERIALIZABLE_CLASS.isAssignableFrom(rawClass)) None.orNull
7675
else new UnresolvedIteratorSerializer(rawClass, collectionType.getContentType, false, elementTypeSerializer, elementSerializer)
7776
}
77+
78+
override def findSerializer(config: SerializationConfig, `type`: JavaType, beanDesc: BeanDescription): JsonSerializer[_] = {
79+
`type` match {
80+
case it: IterationType => {
81+
val rawClass = it.getRawClass
82+
if (JSONSERIALIZABLE_CLASS.isAssignableFrom(rawClass)) {
83+
None.orNull
84+
} else {
85+
new UnresolvedIteratorSerializer(it.getRawClass, config.constructType(classOf[AnyRef]), false,
86+
None.orNull, None.orNull)
87+
}
88+
}
89+
case _ => None.orNull
90+
}
91+
}
7892
}
7993

8094
trait IteratorSerializerModule extends IteratorTypeModifierModule {

0 commit comments

Comments
 (0)