Skip to content

Commit 7f32915

Browse files
authored
when paranamer fails, fail over to using java reflection (#566)
1 parent 6db073c commit 7f32915

File tree

1 file changed

+11
-5
lines changed

1 file changed

+11
-5
lines changed

src/main/scala/com/fasterxml/jackson/module/scala/introspect/JavaParameterIntrospector.scala

+11-5
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
package com.fasterxml.jackson.module.scala.introspect
22

3-
import java.lang.reflect.{Constructor, Field, Method, Parameter}
4-
53
import com.thoughtworks.paranamer.{BytecodeReadingParanamer, CachingParanamer}
64

5+
import java.lang.reflect.{Constructor, Field, Method, Parameter}
6+
import scala.util.Try
7+
78
private[introspect] object JavaParameterIntrospector {
89

910
private val paranamer = new CachingParanamer(new BytecodeReadingParanamer)
1011

1112
def getCtorParamNames(ctor: Constructor[_]): IndexedSeq[String] = {
12-
paranamer.lookupParameterNames(ctor, false).toIndexedSeq
13+
Try(paranamer.lookupParameterNames(ctor, false))
14+
.getOrElse(ctor.getParameters.map(_.getName))
15+
.toIndexedSeq
1316
}
1417

1518
def getMethodParamNames(mtd: Method): IndexedSeq[String] = {
16-
paranamer.lookupParameterNames(mtd, false).toIndexedSeq
19+
Try(paranamer.lookupParameterNames(mtd, false))
20+
.getOrElse(mtd.getParameters.map(_.getName))
21+
.toIndexedSeq
1722
}
1823

1924
def getFieldName(field: Field): String = {
20-
paranamer.lookupParameterNames(field, false).headOption.getOrElse(None.orNull)
25+
Try(paranamer.lookupParameterNames(field, false).headOption.getOrElse(None.orNull))
26+
.getOrElse(field.getName)
2127
}
2228

2329
def getParameterName(parameter: Parameter): String = parameter.getName

0 commit comments

Comments
 (0)