From b21da1e44aa79bba39feeb009b2af8ea0faebf1c Mon Sep 17 00:00:00 2001 From: PJ Fanning Date: Thu, 23 Oct 2025 21:17:42 +0100 Subject: [PATCH] fix test case where scala user wants alphabetic sorting of properties --- .../ScalaAnnotationIntrospectorModule.scala | 2 +- .../module/scala/ser/CaseClassSerializerTest.scala | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/scala/tools/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala b/src/main/scala/tools/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala index cc5f257e..38c41208 100644 --- a/src/main/scala/tools/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala +++ b/src/main/scala/tools/jackson/module/scala/introspect/ScalaAnnotationIntrospectorModule.scala @@ -42,7 +42,7 @@ class ScalaAnnotationIntrospectorInstance(scalaAnnotationIntrospectorModule: Sca override def findSerializationSortAlphabetically(config: MapperConfig[_], ann: Annotated): java.lang.Boolean = { ann match { case ac: AnnotatedClass if scalaAnnotationIntrospectorModule.isMaybeScalaBeanType(ac.getAnnotated) => - java.lang.Boolean.FALSE + !config.isEnabled(MapperFeature.SORT_CREATOR_PROPERTIES_FIRST) case _ => None.orNull } } diff --git a/src/test/scala/tools/jackson/module/scala/ser/CaseClassSerializerTest.scala b/src/test/scala/tools/jackson/module/scala/ser/CaseClassSerializerTest.scala index d7950b54..8f34a2c4 100644 --- a/src/test/scala/tools/jackson/module/scala/ser/CaseClassSerializerTest.scala +++ b/src/test/scala/tools/jackson/module/scala/ser/CaseClassSerializerTest.scala @@ -3,7 +3,7 @@ package tools.jackson.module.scala.ser import com.fasterxml.jackson.annotation.JsonProperty.Access import com.fasterxml.jackson.annotation._ import tools.jackson.databind.cfg.MutableConfigOverride -import tools.jackson.databind.{ObjectMapper, PropertyNamingStrategies} +import tools.jackson.databind.{MapperFeature, ObjectMapper, PropertyNamingStrategies} import tools.jackson.module.scala.DefaultScalaModule import scala.beans.BeanProperty @@ -66,6 +66,7 @@ case class ClassWithOnlyUnitField(field: Unit) object CaseClassSerializerTest { case class BigDecimalHolder(bigDecimal: BigDecimal) + case class ClassWithUnorderedFields(f3: Int = 3, f2: Int = 2, f0: Int = 0, f1: Int = 1) } class CaseClassSerializerTest extends SerializerTest { @@ -229,4 +230,12 @@ class CaseClassSerializerTest extends SerializerTest { (c: MutableConfigOverride) => c.setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING))) serialize(BigDecimalHolder(BigDecimal("123.456")), builder.build()) shouldEqual """{"bigDecimal":"123.456"}""" } + + it should "sort properties of the case class" in { + val mapper = newBuilder + .enable(MapperFeature.SORT_PROPERTIES_ALPHABETICALLY) + .disable(MapperFeature.SORT_CREATOR_PROPERTIES_FIRST) + .build() + serialize(ClassWithUnorderedFields(), mapper) shouldEqual """{"f0":0,"f1":1,"f2":2,"f3":3}""" + } }