From eb735e10b10ef79fe6a800d799cd936fc326a86a Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Wed, 31 Aug 2022 23:46:25 +0100 Subject: [PATCH 1/2] add test that shows an issue when scala 2.13 or scala 3 used (scala 2.11/2.12 work ok) --- .../scala/ser/CaseObjectSerializerTest.scala | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseObjectSerializerTest.scala b/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseObjectSerializerTest.scala index c851687ac..cb4d7aac6 100644 --- a/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseObjectSerializerTest.scala +++ b/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseObjectSerializerTest.scala @@ -1,5 +1,6 @@ package com.fasterxml.jackson.module.scala.ser +import com.fasterxml.jackson.annotation.{JsonAutoDetect, PropertyAccessor} import com.fasterxml.jackson.module.scala.DefaultScalaModule case object CaseObjectExample { @@ -14,7 +15,18 @@ class CaseObjectSerializerTest extends SerializerTest { "An ObjectMapper with the DefaultScalaModule" should "serialize a case object as a bean" in { serialize(CaseObjectExample) should ( equal ("""{"field1":"test","field2":42}""") or - equal ("""{"field2":42,"field1":"test"}""") + equal ("""{"field2":42,"field1":"test"}""") + ) + } + + it should "serialize a case object when visibility settings set" in { + val mapper = newBuilder + .visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) + .visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE) + .build() + mapper.writeValueAsString(CaseObjectExample) should ( + equal("""{"field1":"test","field2":42}""") or + equal("""{"field2":42,"field1":"test"}""") ) } } From 71f755480d5ad0b94a763e92c3f224b7485a8c1f Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 1 Sep 2022 00:26:50 +0100 Subject: [PATCH 2/2] Update CaseObjectSerializerTest.scala --- .../scala/ser/CaseObjectSerializerTest.scala | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseObjectSerializerTest.scala b/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseObjectSerializerTest.scala index cb4d7aac6..fcad72b83 100644 --- a/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseObjectSerializerTest.scala +++ b/src/test/scala/com/fasterxml/jackson/module/scala/ser/CaseObjectSerializerTest.scala @@ -10,6 +10,10 @@ case object CaseObjectExample { class CaseObjectSerializerTest extends SerializerTest { + case object Foo { + val field: String = "bar" + } + def module = DefaultScalaModule "An ObjectMapper with the DefaultScalaModule" should "serialize a case object as a bean" in { @@ -19,7 +23,7 @@ class CaseObjectSerializerTest extends SerializerTest { ) } - it should "serialize a case object when visibility settings set" in { + it should "serialize a case object when visibility settings set" ignore { val mapper = newBuilder .visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) .visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE) @@ -29,4 +33,12 @@ class CaseObjectSerializerTest extends SerializerTest { equal("""{"field2":42,"field1":"test"}""") ) } + + it should "serialize an inner case object when visibility settings set" in { + val mapper = newBuilder + .visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) + .visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE) + .build() + mapper.writeValueAsString(Foo) shouldEqual """{"field":"bar"}""" + } }