Skip to content

Commit 9bb35ac

Browse files
authored
handle value types like Option[Seq[T]] (#174)
* handle value types like Option[Seq[T]] * Update ErasureHelperTest.scala
1 parent 4c1bc86 commit 9bb35ac

File tree

4 files changed

+21
-2
lines changed

4 files changed

+21
-2
lines changed

src/main/scala-2/com/github/swagger/scala/converter/ErasureHelper.scala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,13 @@ private[converter] object ErasureHelper {
2626
properties.flatMap { prop: universe.Symbol =>
2727
val maybeClass: Option[Class[_]] = prop.typeSignature.typeArgs.headOption.flatMap { signature =>
2828
if (signature.typeSymbol.isClass) {
29-
Option(mirror.runtimeClass(signature.typeSymbol.asClass))
30-
} else None
29+
signature.typeArgs.headOption match {
30+
case Some(typeArg) => Option(mirror.runtimeClass(typeArg))
31+
case _ => Option(mirror.runtimeClass(signature))
32+
}
33+
} else {
34+
None
35+
}
3136
}
3237
maybeClass.map(prop.name.toString.trim -> _)
3338
}.toMap

src/test/scala/com/github/swagger/scala/converter/ErasureHelperTest.scala

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,12 @@ class ErasureHelperTest extends AnyFlatSpec with Matchers {
1313
"ErasureHelper" should "handle MyTrait" in {
1414
ErasureHelper.erasedOptionalPrimitives(classOf[ErasureHelperTest.SuperType]) shouldBe empty
1515
}
16+
it should "handle OptionSeqLong" in {
17+
val expected = if (RuntimeUtil.isScala3()) Map.empty[String, Class[_]] else Map("values" -> classOf[Long])
18+
ErasureHelper.erasedOptionalPrimitives(classOf[OptionSeqLong]) shouldBe expected
19+
}
20+
it should "handle SeqOptionLong" in {
21+
val expected = if (RuntimeUtil.isScala3()) Map.empty[String, Class[_]] else Map("values" -> classOf[Long])
22+
ErasureHelper.erasedOptionalPrimitives(classOf[SeqOptionLong]) shouldBe expected
23+
}
1624
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.github.swagger.scala.converter
2+
3+
case class OptionSeqLong(values: Option[Seq[Long]])
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
package com.github.swagger.scala.converter
2+
3+
case class SeqOptionLong(values: Seq[Option[Long]])

0 commit comments

Comments
 (0)