Skip to content

Commit 9b818d3

Browse files
committed
Add msgpack-jackson3 module for Jackson 3.x support
1 parent 76aeb33 commit 9b818d3

42 files changed

Lines changed: 8799 additions & 6 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/CI.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ jobs:
2828
- 'project/build.properties'
2929
- 'msgpack-core/**'
3030
- 'msgpack-jackson/**'
31+
- 'msgpack-jackson3/**'
3132
docs:
3233
- '**.md'
3334
- '**.txt'
@@ -65,6 +66,16 @@ jobs:
6566
key: ${{ runner.os }}-jdk${{ matrix.java }}-${{ hashFiles('**/*.sbt') }}
6667
restore-keys: ${{ runner.os }}-jdk${{ matrix.java }}-
6768
- name: Test
68-
run: ./sbt test
69+
run: |
70+
if [[ ${{ matrix.java }} -lt 17 ]]; then
71+
./sbt msgpack-core/test msgpack-jackson/test
72+
else
73+
./sbt test
74+
fi
6975
- name: Universal Buffer Test
70-
run: ./sbt test -J-Dmsgpack.universal-buffer=true
76+
run: |
77+
if [[ ${{ matrix.java }} -lt 17 ]]; then
78+
./sbt msgpack-core/test msgpack-jackson/test -J-Dmsgpack.universal-buffer=true
79+
else
80+
./sbt test -J-Dmsgpack.universal-buffer=true
81+
fi

.github/workflows/release.yml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,17 @@ jobs:
3030
env:
3131
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
3232
run: |
33-
./sbt publishSigned
33+
./sbt msgpack-core/publishSigned msgpack-jackson/publishSigned
34+
# msgpack-jackson3 requires JDK 17+
35+
- uses: actions/setup-java@v5
36+
with:
37+
java-version: 17
38+
distribution: temurin
39+
- name: Build bundle for msgpack-jackson3
40+
env:
41+
PGP_PASSPHRASE: ${{ secrets.PGP_PASSPHRASE }}
42+
run: |
43+
./sbt msgpack-jackson3/publishSigned
3444
- name: Release to Sonatype
3545
env:
3646
SONATYPE_USERNAME: '${{ secrets.SONATYPE_USERNAME }}'

build.sbt

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -96,10 +96,18 @@ val buildSettings = Seq[Setting[?]](
9696
Test / compile := ((Test / compile) dependsOn (Test / jcheckStyle)).value
9797
)
9898

99-
val junitJupiter = "org.junit.jupiter" % "junit-jupiter" % "5.14.4" % "test"
100-
val junitVintage = "org.junit.vintage" % "junit-vintage-engine" % "5.14.4" % "test"
99+
val junitJupiter = "org.junit.jupiter" % "junit-jupiter" % "5.14.4" % "test"
100+
val junitVintage = "org.junit.vintage" % "junit-vintage-engine" % "5.14.4" % "test"
101+
val junitInterface = "com.github.sbt" % "junit-interface" % "0.13.3" % "test"
101102

102103
// Project settings
104+
val isJava17Plus: Boolean = {
105+
val v = sys.props.getOrElse("java.specification.version", "1.8")
106+
// getOrElse(false): non-numeric versions (e.g. early-access "17-ea") fail safe
107+
// by not compiling the jackson3 module rather than making an optimistic guess.
108+
if (v.startsWith("1.")) false else scala.util.Try(v.toInt >= 17).getOrElse(false)
109+
}
110+
103111
lazy val root = Project(id = "msgpack-java", base = file("."))
104112
.settings(
105113
buildSettings,
@@ -108,7 +116,10 @@ lazy val root = Project(id = "msgpack-java", base = file("."))
108116
publish := {},
109117
publishLocal := {}
110118
)
111-
.aggregate(msgpackCore, msgpackJackson)
119+
.aggregate(
120+
Seq[ProjectReference](msgpackCore, msgpackJackson) ++
121+
(if (isJava17Plus) Seq[ProjectReference](msgpackJackson3) else Nil): _*
122+
)
112123

113124
lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core"))
114125
.enablePlugins(SbtOsgi)
@@ -170,3 +181,28 @@ lazy val msgpackJackson = Project(id = "msgpack-jackson", base = file("msgpack-j
170181
testOptions += Tests.Argument(TestFrameworks.JUnit, "-v")
171182
)
172183
.dependsOn(msgpackCore)
184+
185+
lazy val msgpackJackson3 = Project(id = "msgpack-jackson3", base = file("msgpack-jackson3"))
186+
.enablePlugins(SbtOsgi, JmhPlugin)
187+
.settings(
188+
buildSettings,
189+
name := "jackson-dataformat-msgpack-jackson3",
190+
description := "Jackson 3.x extension that adds support for MessagePack",
191+
OsgiKeys.bundleSymbolicName := "org.msgpack.msgpack-jackson3",
192+
OsgiKeys.exportPackage := Seq("org.msgpack.jackson", "org.msgpack.jackson.dataformat"),
193+
OsgiKeys.importPackage := Seq("!android.os", "!sun.*"),
194+
Test / fork := true,
195+
javacOptions := Seq("--release", "17"),
196+
doc / javacOptions := Seq("--release", "17", "-Xdoclint:none"),
197+
libraryDependencies ++=
198+
Seq(
199+
"tools.jackson.core" % "jackson-databind" % "3.1.2",
200+
junitInterface
201+
),
202+
testOptions += Tests.Argument(TestFrameworks.JUnit, "-v"),
203+
Jmh / javaOptions ++= Seq(
204+
"--add-opens=java.base/java.nio=ALL-UNNAMED",
205+
"--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"
206+
)
207+
)
208+
.dependsOn(msgpackCore)

0 commit comments

Comments
 (0)