private def typeOf()

in jackson/src/main/scala/com/twitter/finatra/jackson/caseclass/DefaultAnnotationIntrospector.scala [112:130]


  private def typeOf(javaType: JavaType): Type = {
    if (javaType.isArrayType) return javaType.getRawClass

    val typeArguments =
      for (i <- 0 until javaType.containedTypeCount) yield javaType.containedType(i)

    typeArguments match {
      case Seq() =>
        Types.wrapperType(javaType.getRawClass)
      case args =>
        javaType.getRawClass match {
          case c: Class[_] if c.getEnclosingClass == null =>
            com.google.inject.util.Types.newParameterizedType(c, args.map(typeOf): _*)
          case c: Class[_] =>
            com.google.inject.util.Types
              .newParameterizedTypeWithOwner(c.getEnclosingClass, c, args.map(typeOf): _*)
        }
    }
  }