From 192457c6b731efc4bc61432aa0579fa66dd2b5fe Mon Sep 17 00:00:00 2001 From: xerial-bot Date: Sat, 9 Jul 2022 03:23:27 -0700 Subject: [PATCH 01/54] Update scala-collection-compat to 2.8.0 (#663) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 0154bf5a..95effdb3 100644 --- a/build.sbt +++ b/build.sbt @@ -92,7 +92,7 @@ lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core")) "org.msgpack" % "msgpack" % "0.6.12" % "test", // For integration test with Akka "com.typesafe.akka" %% "akka-actor" % "2.6.19" % "test", - "org.scala-lang.modules" %% "scala-collection-compat" % "2.7.0" % "test" + "org.scala-lang.modules" %% "scala-collection-compat" % "2.8.0" % "test" ) ) From 7108f4db3dfcb44e9315297ce0202d25a74d3200 Mon Sep 17 00:00:00 2001 From: xerial-bot Date: Sat, 9 Jul 2022 03:23:35 -0700 Subject: [PATCH 02/54] Update airframe-json, airspec to 22.7.1 (#662) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 95effdb3..05a104bf 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "22.6.4" +val AIRFRAME_VERSION = "22.7.1" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From 5ead37e9c558f3a12d729cfdb6086417c3e837f3 Mon Sep 17 00:00:00 2001 From: xerial-bot Date: Wed, 13 Jul 2022 17:13:08 -0700 Subject: [PATCH 03/54] Update sbt to 1.7.1 (#666) --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 022b635b..38c0109b 100755 --- a/project/build.properties +++ b/project/build.properties @@ -1,2 +1,2 @@ -sbt.version=1.6.2 +sbt.version=1.7.1 From ee40181bef0dd9dea9ab6d03054328167b2b4bd5 Mon Sep 17 00:00:00 2001 From: xerial-bot Date: Wed, 13 Jul 2022 17:13:22 -0700 Subject: [PATCH 04/54] Update airframe-json, airspec to 22.7.2 (#668) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 05a104bf..3dcd3bca 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "22.7.1" +val AIRFRAME_VERSION = "22.7.2" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From 64bf2e25bb6a6f72793a755e83539de98a1f7a3c Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Mon, 18 Jul 2022 08:16:54 +0200 Subject: [PATCH 05/54] Update sbt to 1.7.1 (#669) From bc0d03c3c7c77d67ef8e20ae99db1bb78f97d5fc Mon Sep 17 00:00:00 2001 From: Mitsunori Komatsu Date: Wed, 14 Sep 2022 20:16:21 +0900 Subject: [PATCH 06/54] Support timestamp extension in jackson-dataformat-msgpack (#677) * Support JDK8 to handle Instant * Add TimestampExtensionModule * Add TimestampExtensionModuleTest * Add a few more tests * Use msgpack-core's serde for timestamp internally * Add a test for 96-bit format * Revert "Support JDK8 to handle Instant" This reverts commit 33cdf2de163fa2a892a8dab904e1d6bed1f30c6f. * Take care of "No newline at end of file" * Fix format * Handle checkstyle error "Utility classes should not have a public or default constructor" * Clean up * Add some test for serializing * Add how to use TimestampExtensionModule in the doc --- msgpack-jackson/README.md | 20 +- .../dataformat/TimestampExtensionModule.java | 82 +++++++ .../TimestampExtensionModuleTest.java | 218 ++++++++++++++++++ 3 files changed, 319 insertions(+), 1 deletion(-) create mode 100755 msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/TimestampExtensionModule.java create mode 100755 msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/TimestampExtensionModuleTest.java diff --git a/msgpack-jackson/README.md b/msgpack-jackson/README.md index d3c77986..7e859781 100644 --- a/msgpack-jackson/README.md +++ b/msgpack-jackson/README.md @@ -240,9 +240,27 @@ When you want to use non-String value as a key of Map, use `MessagePackKeySerial System.out.println(mapper.readValue(converted, Pojo.class)); // => Pojo{value=1234567890.98765432100} ``` +### Serialize and deserialize Instant instances as MessagePack extension type + +`timestamp` extension type is defined in MessagePack as type:-1. Registering `TimestampExtensionModule.INSTANCE` module enables automatic serialization and deserialization of java.time.Instant to/from the MessagePack extension type. + +```java + ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()) + .registerModule(TimestampExtensionModule.INSTANCE); + Pojo pojo = new Pojo(); + // The type of `timestamp` variable is Instant + pojo.timestamp = Instant.now(); + byte[] bytes = objectMapper.writeValueAsBytes(pojo); + + // The Instant instance is serialized as MessagePack extension type (type: -1) + + Pojo deserialized = objectMapper.readValue(bytes, Pojo.class); + System.out.println(deserialized); // "2022-09-14T08:47:24.922Z" +``` + ### Deserialize extension types with ExtensionTypeCustomDeserializers -`ExtensionTypeCustomDeserializers` helps you to deserialize extension types easily. +`ExtensionTypeCustomDeserializers` helps you to deserialize your own custom extension types easily. #### Deserialize extension type value directly diff --git a/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/TimestampExtensionModule.java b/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/TimestampExtensionModule.java new file mode 100755 index 00000000..2216d276 --- /dev/null +++ b/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/TimestampExtensionModule.java @@ -0,0 +1,82 @@ +package org.msgpack.jackson.dataformat; + +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; +import com.fasterxml.jackson.databind.module.SimpleModule; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; +import org.msgpack.core.ExtensionTypeHeader; +import org.msgpack.core.MessagePack; +import org.msgpack.core.MessagePacker; +import org.msgpack.core.MessageUnpacker; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.time.Instant; + +public class TimestampExtensionModule +{ + public static final byte EXT_TYPE = -1; + public static final SimpleModule INSTANCE = new SimpleModule("msgpack-ext-timestamp"); + + static { + INSTANCE.addSerializer(Instant.class, new InstantSerializer(Instant.class)); + INSTANCE.addDeserializer(Instant.class, new InstantDeserializer(Instant.class)); + } + + private static class InstantSerializer extends StdSerializer + { + protected InstantSerializer(Class t) + { + super(t); + } + + @Override + public void serialize(Instant value, JsonGenerator gen, SerializerProvider provider) + throws IOException + { + ByteArrayOutputStream os = new ByteArrayOutputStream(); + // MEMO: Reusing these MessagePacker and MessageUnpacker instances would improve the performance + try (MessagePacker packer = MessagePack.newDefaultPacker(os)) { + packer.packTimestamp(value); + } + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(os.toByteArray())) { + ExtensionTypeHeader header = unpacker.unpackExtensionTypeHeader(); + byte[] bytes = unpacker.readPayload(header.getLength()); + + MessagePackExtensionType extensionType = new MessagePackExtensionType(EXT_TYPE, bytes); + gen.writeObject(extensionType); + } + } + } + + private static class InstantDeserializer extends StdDeserializer + { + protected InstantDeserializer(Class vc) + { + super(vc); + } + + @Override + public Instant deserialize(JsonParser p, DeserializationContext ctxt) + throws IOException + { + MessagePackExtensionType ext = p.readValueAs(MessagePackExtensionType.class); + if (ext.getType() != EXT_TYPE) { + throw new RuntimeException( + String.format("Unexpected extension type (0x%X) for Instant object", ext.getType())); + } + + // MEMO: Reusing this MessageUnpacker instance would improve the performance + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(ext.getData())) { + return unpacker.unpackTimestamp(new ExtensionTypeHeader(EXT_TYPE, ext.getData().length)); + } + } + } + + private TimestampExtensionModule() + { + } +} diff --git a/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/TimestampExtensionModuleTest.java b/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/TimestampExtensionModuleTest.java new file mode 100755 index 00000000..05851dbc --- /dev/null +++ b/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/TimestampExtensionModuleTest.java @@ -0,0 +1,218 @@ +// +// MessagePack for Java +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +package org.msgpack.jackson.dataformat; + +import com.fasterxml.jackson.databind.ObjectMapper; +import org.junit.Before; +import org.junit.Test; +import org.msgpack.core.MessagePack; +import org.msgpack.core.MessagePacker; +import org.msgpack.core.MessageUnpacker; + +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.time.Instant; + +import static org.junit.Assert.assertEquals; + +public class TimestampExtensionModuleTest +{ + private final ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); + private final SingleInstant singleInstant = new SingleInstant(); + private final TripleInstants tripleInstants = new TripleInstants(); + + private static class SingleInstant + { + public Instant instant; + } + + private static class TripleInstants + { + public Instant a; + public Instant b; + public Instant c; + } + + @Before + public void setUp() + throws Exception + { + objectMapper.registerModule(TimestampExtensionModule.INSTANCE); + } + + @Test + public void testSingleInstantPojo() + throws IOException + { + singleInstant.instant = Instant.now(); + byte[] bytes = objectMapper.writeValueAsBytes(singleInstant); + SingleInstant deserialized = objectMapper.readValue(bytes, SingleInstant.class); + assertEquals(singleInstant.instant, deserialized.instant); + } + + @Test + public void testTripleInstantsPojo() + throws IOException + { + Instant now = Instant.now(); + tripleInstants.a = now.minusSeconds(1); + tripleInstants.b = now; + tripleInstants.c = now.plusSeconds(1); + byte[] bytes = objectMapper.writeValueAsBytes(tripleInstants); + TripleInstants deserialized = objectMapper.readValue(bytes, TripleInstants.class); + assertEquals(now.minusSeconds(1), deserialized.a); + assertEquals(now, deserialized.b); + assertEquals(now.plusSeconds(1), deserialized.c); + } + + @Test + public void serialize32BitFormat() + throws IOException + { + singleInstant.instant = Instant.ofEpochSecond(Instant.now().getEpochSecond()); + + byte[] bytes = objectMapper.writeValueAsBytes(singleInstant); + + // Check the size of serialized data first + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + assertEquals("instant", unpacker.unpackString()); + assertEquals(4, unpacker.unpackExtensionTypeHeader().getLength()); + } + + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + unpacker.unpackString(); + assertEquals(singleInstant.instant, unpacker.unpackTimestamp()); + } + } + + @Test + public void serialize64BitFormat() + throws IOException + { + singleInstant.instant = Instant.ofEpochSecond(Instant.now().getEpochSecond(), 1234); + + byte[] bytes = objectMapper.writeValueAsBytes(singleInstant); + + // Check the size of serialized data first + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + assertEquals("instant", unpacker.unpackString()); + assertEquals(8, unpacker.unpackExtensionTypeHeader().getLength()); + } + + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + unpacker.unpackString(); + assertEquals(singleInstant.instant, unpacker.unpackTimestamp()); + } + } + + @Test + public void serialize96BitFormat() + throws IOException + { + singleInstant.instant = Instant.ofEpochSecond(19880866800L /* 2600-01-01 */, 1234); + + byte[] bytes = objectMapper.writeValueAsBytes(singleInstant); + + // Check the size of serialized data first + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + assertEquals("instant", unpacker.unpackString()); + assertEquals(12, unpacker.unpackExtensionTypeHeader().getLength()); + } + + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + unpacker.unpackString(); + assertEquals(singleInstant.instant, unpacker.unpackTimestamp()); + } + } + + @Test + public void deserialize32BitFormat() + throws IOException + { + Instant instant = Instant.ofEpochSecond(Instant.now().getEpochSecond()); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + try (MessagePacker packer = MessagePack.newDefaultPacker(os)) { + packer.packMapHeader(1) + .packString("instant") + .packTimestamp(instant); + } + + byte[] bytes = os.toByteArray(); + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + unpacker.unpackString(); + assertEquals(4, unpacker.unpackExtensionTypeHeader().getLength()); + } + + SingleInstant deserialized = objectMapper.readValue(bytes, SingleInstant.class); + assertEquals(instant, deserialized.instant); + } + + @Test + public void deserialize64BitFormat() + throws IOException + { + Instant instant = Instant.ofEpochSecond(Instant.now().getEpochSecond(), 1234); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + try (MessagePacker packer = MessagePack.newDefaultPacker(os)) { + packer.packMapHeader(1) + .packString("instant") + .packTimestamp(instant); + } + + byte[] bytes = os.toByteArray(); + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + unpacker.unpackString(); + assertEquals(8, unpacker.unpackExtensionTypeHeader().getLength()); + } + + SingleInstant deserialized = objectMapper.readValue(bytes, SingleInstant.class); + assertEquals(instant, deserialized.instant); + } + + @Test + public void deserialize96BitFormat() + throws IOException + { + Instant instant = Instant.ofEpochSecond(19880866800L /* 2600-01-01 */, 1234); + + ByteArrayOutputStream os = new ByteArrayOutputStream(); + try (MessagePacker packer = MessagePack.newDefaultPacker(os)) { + packer.packMapHeader(1) + .packString("instant") + .packTimestamp(instant); + } + + byte[] bytes = os.toByteArray(); + try (MessageUnpacker unpacker = MessagePack.newDefaultUnpacker(bytes)) { + unpacker.unpackMapHeader(); + unpacker.unpackString(); + assertEquals(12, unpacker.unpackExtensionTypeHeader().getLength()); + } + + SingleInstant deserialized = objectMapper.readValue(bytes, SingleInstant.class); + assertEquals(instant, deserialized.instant); + } +} From 48f67c6358953f67f6faf7f159f2dc488f1fc768 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 14 Sep 2022 18:43:45 +0200 Subject: [PATCH 07/54] Update airframe-json, airspec to 22.7.3 (#671) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 3dcd3bca..be91cf63 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "22.7.2" +val AIRFRAME_VERSION = "22.7.3" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From d9379269c4e2188bf6a82b21121cf305f28c1d5a Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 14 Sep 2022 18:43:55 +0200 Subject: [PATCH 08/54] Update scala-collection-compat to 2.8.1 (#673) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index be91cf63..52655492 100644 --- a/build.sbt +++ b/build.sbt @@ -92,7 +92,7 @@ lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core")) "org.msgpack" % "msgpack" % "0.6.12" % "test", // For integration test with Akka "com.typesafe.akka" %% "akka-actor" % "2.6.19" % "test", - "org.scala-lang.modules" %% "scala-collection-compat" % "2.8.0" % "test" + "org.scala-lang.modules" %% "scala-collection-compat" % "2.8.1" % "test" ) ) From 112962c0a5a91b8c20b9ff0640a6b42c97b4db46 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 17 Sep 2022 02:05:57 +0200 Subject: [PATCH 09/54] Update airframe-json, airspec to 22.9.0 (#678) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 52655492..7ae88df5 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "22.7.3" +val AIRFRAME_VERSION = "22.9.0" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From 965564dc4548151f9572ab8d3fe4f477f8294a26 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 17 Sep 2022 02:06:09 +0200 Subject: [PATCH 10/54] Update akka-actor to 2.6.20 (#676) * Update akka-actor to 2.6.20 * Revert commit(s) 7d76a574 * Update akka-actor to 2.6.20 --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 7ae88df5..b4992f3f 100644 --- a/build.sbt +++ b/build.sbt @@ -91,7 +91,7 @@ lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core")) // For performance comparison with msgpack v6 "org.msgpack" % "msgpack" % "0.6.12" % "test", // For integration test with Akka - "com.typesafe.akka" %% "akka-actor" % "2.6.19" % "test", + "com.typesafe.akka" %% "akka-actor" % "2.6.20" % "test", "org.scala-lang.modules" %% "scala-collection-compat" % "2.8.1" % "test" ) ) From 44c939b9403cfcc88ce83143e025f6d256189944 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 17 Sep 2022 02:06:27 +0200 Subject: [PATCH 11/54] Update jackson-databind to 2.13.4 (#675) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index b4992f3f..ce3ab0a7 100644 --- a/build.sbt +++ b/build.sbt @@ -109,7 +109,7 @@ lazy val msgpackJackson = "org.msgpack.jackson.dataformat" ), libraryDependencies ++= Seq( - "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.3", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.4", junitInterface, "org.apache.commons" % "commons-math3" % "3.6.1" % "test" ), From 3c7ab6fb7dfc2ace9d53fb98e8018397f43a57fb Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 2 Nov 2022 07:27:15 +0100 Subject: [PATCH 12/54] Update airframe-json, airspec to 22.9.2 (#680) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index ce3ab0a7..0a14f8e3 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "22.9.0" +val AIRFRAME_VERSION = "22.9.2" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From e05285cf03a8d74b1c8db0cea7722b0d16826365 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 12 Nov 2022 00:16:38 +0100 Subject: [PATCH 13/54] Update sbt-sonatype to 3.9.14 (#686) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 4b437b7c..1c9c463f 100755 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.13") +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.14") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.1.2") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter From 5aabe40da9ad368de0dd4a56c79d1f05ea929ee2 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 12 Nov 2022 00:17:01 +0100 Subject: [PATCH 14/54] Update airframe-json, airspec to 22.9.3 (#685) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 0a14f8e3..570baaae 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "22.9.2" +val AIRFRAME_VERSION = "22.9.3" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From e5763b2985a03c8468d94ca74458facdab5d69e1 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Mon, 14 Nov 2022 01:46:14 +0100 Subject: [PATCH 15/54] Update sbt-pgp to 2.2.0 (#683) * Update sbt-pgp to 2.2.0 * Revert commit(s) d0535a53 * Update sbt-pgp to 2.2.0 --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 1c9c463f..862592e6 100755 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,5 +1,5 @@ addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.14") -addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.1.2") +addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.0") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter //addSbtPlugin("com.github.sbt" % "sbt-jacoco" % "3.3.0") From f1ac3dd322a03516e3dcdc6cbec7686e14b1c8f2 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Mon, 14 Nov 2022 01:46:23 +0100 Subject: [PATCH 16/54] Update scalacheck to 1.17.0 (#679) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 570baaae..4a41598c 100644 --- a/build.sbt +++ b/build.sbt @@ -87,7 +87,7 @@ lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core")) "org.wvlet.airframe" %% "airframe-json" % AIRFRAME_VERSION % "test", "org.wvlet.airframe" %% "airspec" % AIRFRAME_VERSION % "test", // Add property testing support with forAll methods - "org.scalacheck" %% "scalacheck" % "1.16.0" % "test", + "org.scalacheck" %% "scalacheck" % "1.17.0" % "test", // For performance comparison with msgpack v6 "org.msgpack" % "msgpack" % "0.6.12" % "test", // For integration test with Akka From a846ca11726cb7f688671fe4682e9bf87ae280f1 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 21 Jan 2023 07:47:06 +0100 Subject: [PATCH 17/54] Update sbt-sonatype to 3.9.15 (#696) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 862592e6..91d167e0 100755 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.14") +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.15") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.0") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter From 5235a8304efb12c7d39ec97329474687be192edc Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 21 Jan 2023 07:47:23 +0100 Subject: [PATCH 18/54] Update scala-collection-compat to 2.9.0 (#697) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 4a41598c..3919448a 100644 --- a/build.sbt +++ b/build.sbt @@ -92,7 +92,7 @@ lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core")) "org.msgpack" % "msgpack" % "0.6.12" % "test", // For integration test with Akka "com.typesafe.akka" %% "akka-actor" % "2.6.20" % "test", - "org.scala-lang.modules" %% "scala-collection-compat" % "2.8.1" % "test" + "org.scala-lang.modules" %% "scala-collection-compat" % "2.9.0" % "test" ) ) From b45c90e37e1701f9be800f98b0eab08e30249bb1 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 21 Jan 2023 07:47:32 +0100 Subject: [PATCH 19/54] Update sbt to 1.7.3 (#684) --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 38c0109b..b986067e 100755 --- a/project/build.properties +++ b/project/build.properties @@ -1,2 +1,2 @@ -sbt.version=1.7.1 +sbt.version=1.7.3 From d066051af1c47b58a3cf87cb52712d9a22e50ba7 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 21 Jan 2023 08:26:36 +0100 Subject: [PATCH 20/54] Update sbt-scalafmt to 2.5.0 (#689) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 91d167e0..7cb596d4 100755 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -5,7 +5,7 @@ addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.0") //addSbtPlugin("com.github.sbt" % "sbt-jacoco" % "3.3.0") addSbtPlugin("org.xerial.sbt" % "sbt-jcheckstyle" % "0.2.1") addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.9.6") -addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.6") +addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0") addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") scalacOptions ++= Seq("-deprecation", "-feature") From 00fc660637b811669a1e266c45cd2eda92bdade0 Mon Sep 17 00:00:00 2001 From: Mitsunori Komatsu Date: Sun, 22 Jan 2023 01:31:38 +0900 Subject: [PATCH 21/54] Small improvement of msgpack-jackson bench (#705) Small improvment of msgpack-jackson bench --- .github/workflows/CI.yml | 1 + .../benchmark/MessagePackDataformatHugeDataBenchmarkTest.java | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index f845825e..d53a68bf 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -17,6 +17,7 @@ on: - '**.java' - '**.sbt' - '.github/workflows/**.yml' + workflow_dispatch: jobs: code_format: diff --git a/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/benchmark/MessagePackDataformatHugeDataBenchmarkTest.java b/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/benchmark/MessagePackDataformatHugeDataBenchmarkTest.java index b3a15911..fea34fd8 100644 --- a/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/benchmark/MessagePackDataformatHugeDataBenchmarkTest.java +++ b/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/benchmark/MessagePackDataformatHugeDataBenchmarkTest.java @@ -30,7 +30,7 @@ public class MessagePackDataformatHugeDataBenchmarkTest { - private static final int ELM_NUM = 100000; + private static final int ELM_NUM = 1000000; private static final int COUNT = 6; private static final int WARMUP_COUNT = 4; private final ObjectMapper origObjectMapper = new ObjectMapper(); From ef8ad71af83b4241db30fcee9f12425c38d0f5ab Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 25 Jan 2023 09:56:15 +0100 Subject: [PATCH 22/54] Update sbt to 1.8.2 (#706) --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index b986067e..6cd347fa 100755 --- a/project/build.properties +++ b/project/build.properties @@ -1,2 +1,2 @@ -sbt.version=1.7.3 +sbt.version=1.8.2 From 41cee04c2fe7558d985113756f0ab33da701add3 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 25 Jan 2023 09:56:27 +0100 Subject: [PATCH 23/54] Update airframe-json, airspec to 22.12.6 (#703) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 3919448a..c4f5ab2b 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "22.9.3" +val AIRFRAME_VERSION = "22.12.6" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From 45f287e5d4deefa604c253f68f75fc54390bb2d0 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 4 Feb 2023 01:22:49 +0100 Subject: [PATCH 24/54] Update sbt-sonatype to 3.9.17 (#710) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 7cb596d4..6caa6bcb 100755 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.15") +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.17") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.0") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter From c83aa6ab83c3cf6a36c5c8af10e5756c02c7f39d Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 4 Feb 2023 01:22:57 +0100 Subject: [PATCH 25/54] Update airframe-json, airspec to 23.1.4 (#708) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index c4f5ab2b..c67f7482 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "22.12.6" +val AIRFRAME_VERSION = "23.1.4" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From c796b29b5b0df7a1e2abebc0b80002273c25909e Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 4 Feb 2023 01:23:09 +0100 Subject: [PATCH 26/54] Update jackson-databind to 2.13.5 (#707) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index c67f7482..462e8acf 100644 --- a/build.sbt +++ b/build.sbt @@ -109,7 +109,7 @@ lazy val msgpackJackson = "org.msgpack.jackson.dataformat" ), libraryDependencies ++= Seq( - "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.4", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.5", junitInterface, "org.apache.commons" % "commons-math3" % "3.6.1" % "test" ), From 04d03d883ffbb6c7a277bf2552de5aa93465da11 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 4 Feb 2023 19:41:55 +0100 Subject: [PATCH 27/54] Update airframe-json, airspec to 23.2.0 (#712) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 462e8acf..30c56e35 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "23.1.4" +val AIRFRAME_VERSION = "23.2.0" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From 211d349c7db614b7f1a011bc86dbce035bc82f24 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 4 Feb 2023 19:42:03 +0100 Subject: [PATCH 28/54] Update sbt-pgp to 2.2.1 (#698) * Update sbt-pgp to 2.2.1 * Revert commit(s) bae49c71 * Update sbt-pgp to 2.2.1 --------- Co-authored-by: Taro L. Saito --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) mode change 100755 => 100644 project/plugins.sbt diff --git a/project/plugins.sbt b/project/plugins.sbt old mode 100755 new mode 100644 index 6caa6bcb..b2de1be9 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,5 +1,5 @@ addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.17") -addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.0") +addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter //addSbtPlugin("com.github.sbt" % "sbt-jacoco" % "3.3.0") From 6ba76dd3cf16c54540c3e24071ea6d72c8105d85 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 4 Feb 2023 19:44:20 +0100 Subject: [PATCH 29/54] Update jackson-databind to 2.14.2 (#711) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 30c56e35..c5c7ac78 100644 --- a/build.sbt +++ b/build.sbt @@ -109,7 +109,7 @@ lazy val msgpackJackson = "org.msgpack.jackson.dataformat" ), libraryDependencies ++= Seq( - "com.fasterxml.jackson.core" % "jackson-databind" % "2.13.5", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.14.2", junitInterface, "org.apache.commons" % "commons-math3" % "3.6.1" % "test" ), From 8e3bc5117a00e851bac457e828102739742d3df7 Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Mon, 6 Feb 2023 20:01:57 -0800 Subject: [PATCH 30/54] Introduce release drafter (#713) * Introduce release drafter * Target develop/main branches * Update README.md * Update README.md --- .github/release-drafter.yml | 55 +++++++++++++++++++++++++++ .github/workflows/release-drafter.yml | 32 ++++++++++++++++ README.md | 9 +---- 3 files changed, 89 insertions(+), 7 deletions(-) create mode 100644 .github/release-drafter.yml create mode 100644 .github/workflows/release-drafter.yml diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 00000000..86a39768 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,55 @@ +name-template: 'v$RESOLVED_VERSION' +tag-template: 'v$RESOLVED_VERSION' +categories: + - title: '🔥 Breaking Changes' + labels: + - 'breaking' + - title: '🚀 Features' + labels: + - 'feature' + - 'enhancement' + - title: '🐛 Bug Fixes' + labels: + - 'bug' + - title: '👋 Deprecated' + labels: + - 'deprecation' + - title: '🔗 Dependency Updates' + labels: + - 'library-update' + - 'dependencies' + - title: '🛠 Internal Updates' + labels: + - 'internal' + - 'kaizen' + - 'test-library-update' + - 'sbt-plugin-update' + - title: '📚 Docs' + labels: + - 'doc' +change-template: '- $TITLE @$AUTHOR (#$NUMBER)' + +template: | + ## What's Changed + + $CHANGES + + **Full Changelog**: https://github.com/$OWNER/$REPOSITORY/compare/$PREVIOUS_TAG...v$RESOLVED_VERSION + + +autolabeler: + - label: 'doc' + files: + - '*.md' + - label: 'feature' + title: + - '/(support|add)/i' + - label: 'bug' + title: + - '/fix/i' + - label: 'internal' + title: + - '/internal/i' + - label: 'deprecation' + title: + - '/deprecate/i' diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml new file mode 100644 index 00000000..6a48ed0a --- /dev/null +++ b/.github/workflows/release-drafter.yml @@ -0,0 +1,32 @@ +name: Release Drafter + +on: + push: + branches: + - develop + - main + # pull_request event is required only for autolabeler + pull_request: + # Only following types are handled by the action, but one can default to all as well + types: [opened, reopened, synchronize] + # pull_request_target event is required for autolabeler to support PRs from forks + pull_request_target: + types: [opened, reopened, synchronize] + +permissions: + contents: read + +jobs: + update_release_draft: + permissions: + # write permission is required to create a github release + contents: write + # write permission is required for autolabeler + # otherwise, read permission is required at least + pull-requests: write + runs-on: ubuntu-latest + steps: + # Drafts your next Release notes as Pull Requests are merged into "master" + - uses: release-drafter/release-drafter@v5 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 7723eb6e..8cad43c6 100644 --- a/README.md +++ b/README.md @@ -82,10 +82,8 @@ Here is a list of sbt commands for daily development: > ~testOnly *MessagePackTest -- (pattern) # Run tests matching the pattern > project msgpack-core # Focus on a specific project > package # Create a jar file in the target folder of each project -> findbugs # Produce findbugs report in target/findbugs -> jacoco:cover # Report the code coverage of tests to target/jacoco folder > jcheckStyle # Run check style -> ;scalafmt;test:scalafmt;scalafmtSbt # Reformat Scala codes +> scalafmtAll # Reformat code ``` ### Publishing @@ -105,10 +103,7 @@ $ git tag v0.x.y $ git push origin v0.x.y ``` -To generate a release notes, you can use this command line: -``` -$ git log v(last version).. --oneline | cut -f 2- -d ' ' | perl -npe 's/(.*)\(\#([0-9]+)\)/* \1\[\#\2\]\(http:\/\/github.com\/msgpack\/msgpack-java\/pull\/\2\)/g' -``` +A draft of the next release note will be updated automatically at the [GitHub Releases](https://github.com/msgpack/msgpack-java/releases) page. For each PR merged, [release-drafter](https://github.com/release-drafter/release-drafter) will modify the release note draft. When you create a new release tag, edit and publish the draft of the release note. If necessary, adjust the version number and target tag. #### Publishing to Sonatype from Local Machine From 85c5392b6c49c2b71064e5fb2cd2cd448c01908b Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Mon, 6 Feb 2023 21:51:08 -0800 Subject: [PATCH 31/54] Update RELEASE_NOTES.md --- RELEASE_NOTES.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 367ab917..3f8d8d9d 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,5 +1,7 @@ # Release Notes +The latest release notes will be available from the [GitHub release page](https://github.com/msgpack/msgpack-java/releases) + ## 0.9.3 This version supports JDK17 [#660](http://github.com/msgpack/msgpack-java/pull/660). From e7418c69e4899eaca8b5397b96c09ab18301bfef Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Mon, 6 Feb 2023 23:03:58 -0800 Subject: [PATCH 32/54] Classify PRs based on Scala-Steward PR body message --- .github/release-drafter.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 86a39768..79b084d7 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -53,3 +53,9 @@ autolabeler: - label: 'deprecation' title: - '/deprecate/i' + - label: 'library-update' + body: + - '/library-update/' + - label: 'test-library-update' + body: + - '/test-library-update/' From 7779615cf1b36486ab2f9cf4b05557ed8e8484ad Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Mon, 6 Feb 2023 23:07:14 -0800 Subject: [PATCH 33/54] Mark test library/sbt plugin updates as internal --- .github/release-drafter.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml index 79b084d7..2e6420f9 100644 --- a/.github/release-drafter.yml +++ b/.github/release-drafter.yml @@ -56,6 +56,7 @@ autolabeler: - label: 'library-update' body: - '/library-update/' - - label: 'test-library-update' + - label: 'internal' body: - '/test-library-update/' + - '/sbt-plugin-update/' From 3381322f6c163154e927207509be11adfb755de0 Mon Sep 17 00:00:00 2001 From: "Taro L. Saito" Date: Mon, 6 Feb 2023 23:21:47 -0800 Subject: [PATCH 34/54] update sbt script (#714) --- sbt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/sbt b/sbt index 18c6b112..0c5112ba 100755 --- a/sbt +++ b/sbt @@ -34,11 +34,11 @@ set -o pipefail -declare -r sbt_release_version="1.5.5" -declare -r sbt_unreleased_version="1.6.0-M1" +declare -r sbt_release_version="1.8.2" +declare -r sbt_unreleased_version="1.8.2" -declare -r latest_213="2.13.7" -declare -r latest_212="2.12.15" +declare -r latest_213="2.13.10" +declare -r latest_212="2.12.17" declare -r latest_211="2.11.12" declare -r latest_210="2.10.7" declare -r latest_29="2.9.3" From 78080d18ffa29ff06d8d6160a3e7bf360d7bb859 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Mon, 27 Feb 2023 02:50:28 +0100 Subject: [PATCH 35/54] Update airframe-json, airspec to 23.2.5 (#717) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index c5c7ac78..28671003 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "23.2.0" +val AIRFRAME_VERSION = "23.2.5" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From e423757f3b7d7e1c2853e6624bf0fc410beb4ae1 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Fri, 10 Mar 2023 18:37:51 +0100 Subject: [PATCH 36/54] Update sbt-sonatype to 3.9.18 (#719) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index b2de1be9..1bcb3851 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.17") +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.18") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter From 93d4bc0e1e6d375a5c2fb949c3a329d092ecf1e8 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Fri, 10 Mar 2023 18:38:03 +0100 Subject: [PATCH 37/54] Update airframe-json, airspec to 23.3.0 (#718) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 28671003..8dc03cad 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "23.2.5" +val AIRFRAME_VERSION = "23.3.0" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From 4bb8a03b00795ae74397261d53abeca9d02c3e30 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 29 Apr 2023 18:46:23 +0200 Subject: [PATCH 38/54] Update airframe-json, airspec to 23.3.4 (#723) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 8dc03cad..e992a4d6 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "23.3.0" +val AIRFRAME_VERSION = "23.3.4" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From 4853f0459b310e2520dcdffb93487368ee1d577f Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 29 Apr 2023 18:46:41 +0200 Subject: [PATCH 39/54] Update scala-collection-compat to 2.10.0 (#726) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index e992a4d6..fd414fac 100644 --- a/build.sbt +++ b/build.sbt @@ -92,7 +92,7 @@ lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core")) "org.msgpack" % "msgpack" % "0.6.12" % "test", // For integration test with Akka "com.typesafe.akka" %% "akka-actor" % "2.6.20" % "test", - "org.scala-lang.modules" %% "scala-collection-compat" % "2.9.0" % "test" + "org.scala-lang.modules" %% "scala-collection-compat" % "2.10.0" % "test" ) ) From 6512662dbe15645bbb3567a9d115a82af73486ae Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Fri, 5 May 2023 18:24:36 +0200 Subject: [PATCH 40/54] Update airframe-json, airspec to 23.5.0 (#728) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index fd414fac..9029b82e 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "23.3.4" +val AIRFRAME_VERSION = "23.5.0" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From ce92979ec2be89a49969a89904884c399c18b67d Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Fri, 5 May 2023 18:24:45 +0200 Subject: [PATCH 41/54] Update sbt-sonatype to 3.9.19 (#729) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index 1bcb3851..fa10c664 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.18") +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.19") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter From 4d24d82b044f2f9506cf9b2a1bde0a571253ed64 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Thu, 11 May 2023 11:43:31 +0200 Subject: [PATCH 42/54] Update sbt-sonatype to 3.9.20 (#732) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index fa10c664..f79c91e8 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.19") +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.20") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter From f351e3fb934883f50002592b5f1a44e15df232df Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Thu, 11 May 2023 11:43:40 +0200 Subject: [PATCH 43/54] Update airframe-json, airspec to 23.5.2 (#731) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 9029b82e..b35f90be 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "23.5.0" +val AIRFRAME_VERSION = "23.5.2" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From 1e5483ffd7e7e791229e9956a36d797bbb01de4d Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Mon, 22 May 2023 19:05:48 +0200 Subject: [PATCH 44/54] Update jackson-databind to 2.14.3 (#730) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index b35f90be..7df0944b 100644 --- a/build.sbt +++ b/build.sbt @@ -109,7 +109,7 @@ lazy val msgpackJackson = "org.msgpack.jackson.dataformat" ), libraryDependencies ++= Seq( - "com.fasterxml.jackson.core" % "jackson-databind" % "2.14.2", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.14.3", junitInterface, "org.apache.commons" % "commons-math3" % "3.6.1" % "test" ), From 727bdf9b84fcdc6d02545439c2a596ef15ea44be Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 31 May 2023 23:36:11 +0200 Subject: [PATCH 45/54] Update sbt-sonatype to 3.9.21 (#737) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index f79c91e8..af845560 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -1,4 +1,4 @@ -addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.20") +addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.21") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1") // TODO: Fixes jacoco error: // java.lang.NoClassDefFoundError: Could not initialize class org.jacoco.core.internal.flow.ClassProbesAdapter From dd6accbbf98708a557926223a7ed38e44856e345 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 31 May 2023 23:36:19 +0200 Subject: [PATCH 46/54] Update sbt to 1.8.3 (#735) --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 6cd347fa..5041518d 100755 --- a/project/build.properties +++ b/project/build.properties @@ -1,2 +1,2 @@ -sbt.version=1.8.2 +sbt.version=1.8.3 From 24a89ca2d919707ed92ef8fcdc35facd912f3a80 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 31 May 2023 23:36:27 +0200 Subject: [PATCH 47/54] Update sbt-dynver to 5.0.1 (#733) --- project/plugins.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/plugins.sbt b/project/plugins.sbt index af845560..2e2e4806 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -6,6 +6,6 @@ addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.2.1") addSbtPlugin("org.xerial.sbt" % "sbt-jcheckstyle" % "0.2.1") addSbtPlugin("com.typesafe.sbt" % "sbt-osgi" % "0.9.6") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.5.0") -addSbtPlugin("com.dwijnand" % "sbt-dynver" % "4.1.1") +addSbtPlugin("com.github.sbt" % "sbt-dynver" % "5.0.1") scalacOptions ++= Seq("-deprecation", "-feature") From 2ffd012ed28e78d394d38896bee73171f7ed9505 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 31 May 2023 23:36:37 +0200 Subject: [PATCH 48/54] Update airframe-json, airspec to 23.5.6 (#736) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 7df0944b..19c1a11f 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "23.5.2" +val AIRFRAME_VERSION = "23.5.6" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From a40cfd11279f4d466ba6500e6c72e83a7a9ecd86 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Sat, 3 Jun 2023 00:18:49 +0200 Subject: [PATCH 49/54] Update sbt to 1.9.0 (#738) * Update sbt to 1.9.0 * Run CI on sbt upgrade --------- Co-authored-by: Taro L. Saito --- .github/workflows/CI.yml | 2 ++ project/build.properties | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index d53a68bf..3c8d09e6 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -7,6 +7,7 @@ on: - '**.java' - '**.sbt' - '.github/workflows/**.yml' + - 'project/build.properties' push: branches: - master @@ -17,6 +18,7 @@ on: - '**.java' - '**.sbt' - '.github/workflows/**.yml' + - 'project/build.properties' workflow_dispatch: jobs: diff --git a/project/build.properties b/project/build.properties index 5041518d..01892960 100755 --- a/project/build.properties +++ b/project/build.properties @@ -1,2 +1,2 @@ -sbt.version=1.8.3 +sbt.version=1.9.0 From caba23895f08df87afe6f63f4d9d0909a516e3b0 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 28 Jun 2023 00:14:38 +0200 Subject: [PATCH 50/54] Update airframe-json, airspec to 23.5.7 (#739) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 19c1a11f..d5260290 100644 --- a/build.sbt +++ b/build.sbt @@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq( Tags.limit(Tags.Test, 1) ) -val AIRFRAME_VERSION = "23.5.6" +val AIRFRAME_VERSION = "23.5.7" // Use dynamic snapshot version strings for non tagged versions ThisBuild / dynverSonatypeSnapshots := true From b2181d8eba51f6534adb91d73cef8fdc8a16e97d Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 28 Jun 2023 00:14:47 +0200 Subject: [PATCH 51/54] Update scala-collection-compat to 2.11.0 (#740) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index d5260290..73d64eda 100644 --- a/build.sbt +++ b/build.sbt @@ -92,7 +92,7 @@ lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core")) "org.msgpack" % "msgpack" % "0.6.12" % "test", // For integration test with Akka "com.typesafe.akka" %% "akka-actor" % "2.6.20" % "test", - "org.scala-lang.modules" %% "scala-collection-compat" % "2.10.0" % "test" + "org.scala-lang.modules" %% "scala-collection-compat" % "2.11.0" % "test" ) ) From 4b3895488c1263bf91489748bdceac0069bca85e Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Wed, 28 Jun 2023 00:18:37 +0200 Subject: [PATCH 52/54] Update jackson-databind to 2.15.2 (#734) --- build.sbt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sbt b/build.sbt index 73d64eda..ca8f9cf6 100644 --- a/build.sbt +++ b/build.sbt @@ -109,7 +109,7 @@ lazy val msgpackJackson = "org.msgpack.jackson.dataformat" ), libraryDependencies ++= Seq( - "com.fasterxml.jackson.core" % "jackson-databind" % "2.14.3", + "com.fasterxml.jackson.core" % "jackson-databind" % "2.15.2", junitInterface, "org.apache.commons" % "commons-math3" % "3.6.1" % "test" ), From 95863661a5d48052a9c8ffbeae70dcd286c09941 Mon Sep 17 00:00:00 2001 From: Mitsunori Komatsu Date: Mon, 10 Jul 2023 22:24:59 +0900 Subject: [PATCH 53/54] Add `MessagePackMapper#handleBigDecimalAsString` (#745) --- msgpack-jackson/README.md | 32 +++++++++----- .../jackson/dataformat/MessagePackMapper.java | 9 ++++ .../dataformat/MessagePackMapperTest.java | 44 +++++++++++++++++++ 3 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackMapperTest.java diff --git a/msgpack-jackson/README.md b/msgpack-jackson/README.md index 7e859781..e91c6f8b 100644 --- a/msgpack-jackson/README.md +++ b/msgpack-jackson/README.md @@ -61,7 +61,13 @@ Only thing you need to do is to instantiate `MessagePackFactory` and pass it to Or more easily: ```java -ObjectMapper objectMapper = new MessagePackMapper(); + ObjectMapper objectMapper = new MessagePackMapper(); +``` + +We strongly recommend to call `MessagePackMapper#handleBigDecimalAsString()` if you serialize and/or deserialize BigDecimal values. See [Serialize and deserialize BigDecimal as str type internally in MessagePack format](#serialize-and-deserialize-bigdecimal-as-str-type-internally-in-messagepack-format) for details. + +```java + ObjectMapper objectMapper = new MessagePackMapper().handleBigDecimalAsString(); ``` ### Serialization/Deserialization of List @@ -226,26 +232,33 @@ When you want to use non-String value as a key of Map, use `MessagePackKeySerial ### Serialize and deserialize BigDecimal as str type internally in MessagePack format -`jackson-dataformat-msgpack` represents BigDecimal values as float type in MessagePack format by default. When you want to handle BigDeciaml values as str type with arbitrary precision in MessagePack format, you can use `com.fasterxml.jackson.databind.cfg.MutableConfigOverride#setFormat` like this: +`jackson-dataformat-msgpack` represents BigDecimal values as float type in MessagePack format by default for backward compatibility. But the default behavior could fail when handling too large value for `double` type. So we strongly recommend to call `MessagePackMapper#handleBigDecimalAsString()` to internally handle BigDecimal values as String. ```java - ObjectMapper mapper = new ObjectMapper(new MessagePackFactory()); - mapper.configOverride(BigDecimal.class).setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING)); + ObjectMapper objectMapper = new MessagePackMapper().handleBigDecimalAsString(); Pojo obj = new Pojo(); + // This value is too large to be serialized as double obj.value = new BigDecimal("1234567890.98765432100"); - byte[] converted = mapper.writeValueAsBytes(obj); + byte[] converted = objectMapper.writeValueAsBytes(obj); + + System.out.println(objectMapper.readValue(converted, Pojo.class)); // => Pojo{value=1234567890.98765432100} +``` +`MessagePackMapper#handleBigDecimalAsString()` is equivalent to the following configuration. - System.out.println(mapper.readValue(converted, Pojo.class)); // => Pojo{value=1234567890.98765432100} +```java + ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()); + objectMapper.configOverride(BigDecimal.class).setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING)); ``` + ### Serialize and deserialize Instant instances as MessagePack extension type `timestamp` extension type is defined in MessagePack as type:-1. Registering `TimestampExtensionModule.INSTANCE` module enables automatic serialization and deserialization of java.time.Instant to/from the MessagePack extension type. ```java - ObjectMapper objectMapper = new ObjectMapper(new MessagePackFactory()) + ObjectMapper objectMapper = new MessagePackMapper() .registerModule(TimestampExtensionModule.INSTANCE); Pojo pojo = new Pojo(); // The type of `timestamp` variable is Instant @@ -287,8 +300,8 @@ When you want to use non-String value as a key of Map, use `MessagePackKeySerial return "Java"; } return "Not Java"; - } - ); + }); + ObjectMapper objectMapper = new ObjectMapper( new MessagePackFactory().setExtTypeCustomDesers(extTypeCustomDesers)); @@ -476,4 +489,3 @@ There are a few options to fix this issue, but they introduce performance degred ObjectMapper objectMapper = new ObjectMapper( new MessagePackFactory().setReuseResourceInGenerator(false)); ``` - diff --git a/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackMapper.java b/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackMapper.java index 3c3d228b..52af0372 100644 --- a/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackMapper.java +++ b/msgpack-jackson/src/main/java/org/msgpack/jackson/dataformat/MessagePackMapper.java @@ -15,9 +15,12 @@ // package org.msgpack.jackson.dataformat; +import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.cfg.MapperBuilder; +import java.math.BigDecimal; + public class MessagePackMapper extends ObjectMapper { private static final long serialVersionUID = 3L; @@ -40,6 +43,12 @@ public MessagePackMapper(MessagePackFactory f) super(f); } + public MessagePackMapper handleBigDecimalAsString() + { + configOverride(BigDecimal.class).setFormat(JsonFormat.Value.forShape(JsonFormat.Shape.STRING)); + return this; + } + public static Builder builder() { return new Builder(new MessagePackMapper()); diff --git a/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackMapperTest.java b/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackMapperTest.java new file mode 100644 index 00000000..6dfd41cf --- /dev/null +++ b/msgpack-jackson/src/test/java/org/msgpack/jackson/dataformat/MessagePackMapperTest.java @@ -0,0 +1,44 @@ +// +// MessagePack for Java +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +package org.msgpack.jackson.dataformat; + +import org.junit.Test; + +import java.io.IOException; +import java.math.BigDecimal; + +import static org.junit.Assert.assertEquals; + +public class MessagePackMapperTest +{ + static class Pojo + { + public BigDecimal value; + } + + @Test + public void handleBigDecimalAsString() throws IOException + { + MessagePackMapper mapper = new MessagePackMapper().handleBigDecimalAsString(); + Pojo obj = new Pojo(); + obj.value = new BigDecimal("1234567890.98765432100"); + + byte[] converted = mapper.writeValueAsBytes(obj); + + Pojo deserialized = mapper.readValue(converted, Pojo.class); + assertEquals(obj.value, deserialized.value); + } +} From 60f5aa62ea3e22b1c7964b0221c26e601d956537 Mon Sep 17 00:00:00 2001 From: Scala Steward <43047562+scala-steward@users.noreply.github.com> Date: Mon, 10 Jul 2023 19:01:01 +0200 Subject: [PATCH 54/54] Update sbt to 1.9.1 (#741) --- project/build.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/project/build.properties b/project/build.properties index 01892960..ffd11bcc 100755 --- a/project/build.properties +++ b/project/build.properties @@ -1,2 +1,2 @@ -sbt.version=1.9.0 +sbt.version=1.9.1