Skip to content

Commit 3840a47

Browse files
committed
cache scala class check results
1 parent 4f92eac commit 3840a47

File tree

1 file changed

+14
-5
lines changed

1 file changed

+14
-5
lines changed

src/main/scala/tools/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -140,11 +140,11 @@ class ScalaAnnotationIntrospectorInstance(scalaAnnotationIntrospectorModule: Sca
140140
private def _descriptorFor(clz: Class[_]): Option[BeanDescriptor] = {
141141
val key = clz.getName
142142
val isScala = {
143-
Option(ScalaAnnotationIntrospectorModule._scalaTypeCache.get(key)) match {
143+
Option(scalaAnnotationIntrospectorModule._scalaTypeCache.get(key)) match {
144144
case Some(result) => result
145145
case _ => {
146146
val result = clz.extendsScalaClass(config.shouldSupportScala3Classes()) || clz.hasSignature
147-
ScalaAnnotationIntrospectorModule._scalaTypeCache.put(key, result)
147+
scalaAnnotationIntrospectorModule._scalaTypeCache.put(key, result)
148148
result
149149
}
150150
}
@@ -399,9 +399,18 @@ trait ScalaAnnotationIntrospectorModule extends JacksonModule {
399399
private def isScalaPackage(pkg: Option[Package]): Boolean =
400400
pkg.exists(_.getName.startsWith("scala."))
401401

402-
private[introspect] def isMaybeScalaBeanType(cls: Class[_]): Boolean =
403-
(cls.extendsScalaClass(config.shouldSupportScala3Classes()) || cls.hasSignature) &&
404-
!isScalaPackage(Option(cls.getPackage))
402+
private[introspect] def isMaybeScalaBeanType(cls: Class[_]): Boolean = {
403+
val key = cls.getName
404+
val flag = Option(_scalaTypeCache.get(key)) match {
405+
case Some(result) => result
406+
case _ => {
407+
val result = cls.extendsScalaClass(config.shouldSupportScala3Classes()) || cls.hasSignature
408+
_scalaTypeCache.put(key, result)
409+
result
410+
}
411+
}
412+
flag && !isScalaPackage(Option(cls.getPackage))
413+
}
405414

406415
private def recreateDescriptorCache(): Unit = {
407416
_descriptorCache.clear()

0 commit comments

Comments
 (0)