Skip to content

Commit 157f12d

Browse files
authored
Object not serializing ok (#496)
1 parent e771a65 commit 157f12d

File tree

4 files changed

+10
-4
lines changed

4 files changed

+10
-4
lines changed

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

+2-1
Original file line numberDiff line numberDiff line change
@@ -187,10 +187,11 @@ object BeanIntrospector {
187187
//create properties for all appropriate fields
188188
val fields = for {
189189
cls <- hierarchy
190+
classW = ClassW(cls)
190191
field <- cls.getDeclaredFields
191192
name = maybePrivateName(field)
192193
if !name.contains('$')
193-
if (isScalaCaseObject(cls) || isAcceptableField(field))
194+
if (classW.isScalaObject || isScalaCaseObject(cls) || isAcceptableField(field))
194195
beanGetter = findBeanGetter(cls, name)
195196
beanSetter = findBeanSetter(cls, name)
196197
} yield PropertyDescriptor(name, findConstructorParam(hierarchy.head, name), Some(field), findGetter(cls, name), findSetter(cls, name), beanGetter, beanSetter)

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ object ScalaAnnotationIntrospector extends NopAnnotationIntrospector with ValueI
1717
private [this] val _descriptorCache = new LRUMap[ClassKey, BeanDescriptor](16, 100)
1818

1919
private def _descriptorFor(clz: Class[_]): Option[BeanDescriptor] = {
20-
if (clz.hasSignature || clz.extendsScalaClass) {
20+
if (clz.extendsScalaClass || clz.hasSignature) {
2121
val key = new ClassKey(clz)
2222
Option(_descriptorCache.get(key)) match {
2323
case Some(result) => Some(result)

src/main/scala/com/fasterxml/jackson/module/scala/util/Classes.scala

+6-1
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@ package com.fasterxml.jackson.module.scala.util
22

33
import scala.language.implicitConversions
44
import scala.reflect.{ScalaLongSignature, ScalaSignature}
5+
import scala.util.Try
56

67
trait ClassW extends PimpedType[Class[_]] {
78

89
def extendsScalaClass: Boolean = {
9-
ClassW.productClass.isAssignableFrom(value)
10+
ClassW.productClass.isAssignableFrom(value) || isScalaObject
1011
}
1112

1213
def hasSignature: Boolean = {
@@ -19,6 +20,10 @@ trait ClassW extends PimpedType[Class[_]] {
1920
}
2021
hasSigHelper(value)
2122
}
23+
24+
def isScalaObject: Boolean = {
25+
Try(value.getField("MODULE$")).isSuccess
26+
}
2227
}
2328

2429
object ClassW {

src/test/scala/com/fasterxml/jackson/module/scala/ser/ObjectSerializerTest.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class ObjectSerializerTest extends SerializerTest {
1616
import ObjectSerializerTest._
1717
def module = DefaultScalaModule
1818

19-
"An ObjectMapper with the DefaultScalaModule" should "serialize an object as a bean" ignore {
19+
"An ObjectMapper with the DefaultScalaModule" should "serialize an object as a bean" in {
2020
serialize(ObjectWithoutJsonProperty) should (
2121
equal ("""{"name":"name1","value":"value1"}""") or
2222
equal ("""{"value":"value1","name":"name1"}""")

0 commit comments

Comments
 (0)