diff --git a/src/main/scala/com/fasterxml/jackson/module/scala/introspect/JavaParameterIntrospector.scala b/src/main/scala/com/fasterxml/jackson/module/scala/introspect/JavaParameterIntrospector.scala index a885f4ac0..007d5b54f 100644 --- a/src/main/scala/com/fasterxml/jackson/module/scala/introspect/JavaParameterIntrospector.scala +++ b/src/main/scala/com/fasterxml/jackson/module/scala/introspect/JavaParameterIntrospector.scala @@ -1,23 +1,29 @@ package com.fasterxml.jackson.module.scala.introspect -import java.lang.reflect.{Constructor, Field, Method, Parameter} - import com.thoughtworks.paranamer.{BytecodeReadingParanamer, CachingParanamer} +import java.lang.reflect.{Constructor, Field, Method, Parameter} +import scala.util.Try + private[introspect] object JavaParameterIntrospector { private val paranamer = new CachingParanamer(new BytecodeReadingParanamer) def getCtorParamNames(ctor: Constructor[_]): IndexedSeq[String] = { - paranamer.lookupParameterNames(ctor, false).toIndexedSeq + Try(paranamer.lookupParameterNames(ctor, false)) + .getOrElse(ctor.getParameters.map(_.getName)) + .toIndexedSeq } def getMethodParamNames(mtd: Method): IndexedSeq[String] = { - paranamer.lookupParameterNames(mtd, false).toIndexedSeq + Try(paranamer.lookupParameterNames(mtd, false)) + .getOrElse(mtd.getParameters.map(_.getName)) + .toIndexedSeq } def getFieldName(field: Field): String = { - paranamer.lookupParameterNames(field, false).headOption.getOrElse(None.orNull) + Try(paranamer.lookupParameterNames(field, false).headOption.getOrElse(None.orNull)) + .getOrElse(field.getName) } def getParameterName(parameter: Parameter): String = parameter.getName