[Git][java-team/msgpack-java][master] 5 commits: New upstream version 0.9.3
Andrius Merkys (@merkys)
gitlab at salsa.debian.org
Thu Jun 30 08:21:13 BST 2022
Andrius Merkys pushed to branch master at Debian Java Maintainers / msgpack-java
Commits:
d9320680 by Andrius Merkys at 2022-06-30T02:23:53-04:00
New upstream version 0.9.3
- - - - -
c29b74fa by Andrius Merkys at 2022-06-30T02:23:57-04:00
Update upstream source from tag 'upstream/0.9.3'
Update to upstream version '0.9.3'
with Debian dir 5cfc32c47a8852da7dccf3199be65656b1afbd0f
- - - - -
67a98bc4 by Andrius Merkys at 2022-06-30T02:25:45-04:00
Refresh patches.
- - - - -
a87299e5 by Andrius Merkys at 2022-06-30T02:41:22-04:00
Install NOTICE.
- - - - -
73bc8089 by Andrius Merkys at 2022-06-30T02:41:42-04:00
Update changelog for 0.9.3-1 release
- - - - -
12 changed files:
- .github/workflows/CI.yml
- NOTICE
- README.md
- RELEASE_NOTES.md
- build.sbt
- debian/changelog
- + debian/libmsgpack-java.docs
- debian/patches/compile.patch
- debian/patches/pom.xml
- msgpack-core/src/main/java/org/msgpack/core/buffer/DirectBufferAccess.java
- + msgpack-core/src/test/scala/org/msgpack/core/buffer/DirectBufferAccessTest.scala
- sonatype.sbt
Changes:
=====================================
.github/workflows/CI.yml
=====================================
@@ -26,14 +26,33 @@ jobs:
- uses: actions/checkout at v2
- name: jcheckstyle
run: ./sbt jcheckStyle
+ test_jdk17:
+ name: Test JDK17
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout at v2
+ - uses: actions/setup-java at v3
+ with:
+ distribution: 'zulu'
+ java-version: '17'
+ - uses: actions/cache at v2
+ with:
+ path: ~/.cache
+ key: ${{ runner.os }}-jdk11-${{ hashFiles('**/*.sbt') }}
+ restore-keys: ${{ runner.os }}-jdk17-
+ - name: Test
+ run: ./sbt test
+ - name: Universal Buffer Test
+ run: ./sbt test -J-Dmsgpack.universal-buffer=true
test_jdk11:
name: Test JDK11
runs-on: ubuntu-latest
steps:
- uses: actions/checkout at v2
- - uses: olafurpg/setup-scala at v10
+ - uses: actions/setup-java at v3
with:
- java-version: adopt at 1.11
+ distribution: 'zulu'
+ java-version: '11'
- uses: actions/cache at v2
with:
path: ~/.cache
@@ -48,9 +67,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout at v2
- - uses: olafurpg/setup-scala at v10
+ - uses: actions/setup-java at v3
with:
- java-version: adopt at 1.8
+ distribution: 'zulu'
+ java-version: '8'
- uses: actions/cache at v2
with:
path: ~/.cache
=====================================
NOTICE
=====================================
@@ -1,5 +1,5 @@
This product includes the software developed by third-party:
- * Google Guava https://code.google.com/p/guava-libraries/ (APL2)
+ * Google Guava https://code.google.com/p/guava-libraries/ (Apache-2.0)
* sbt-extras: https://github.com/paulp/sbt-extras (BSD) (LICENSE.sbt-extras.txt)
=====================================
README.md
=====================================
@@ -42,6 +42,15 @@ dependencies {
- [Usage examples](https://github.com/msgpack/msgpack-java/blob/develop/msgpack-core/src/test/java/org/msgpack/core/example/MessagePackExample.java)
+### Java 17 Support
+
+For using DirectByteBuffer (off-heap memory access methods) in JDK17, you need to specify two JVM options:
+```
+--add-opens=java.base/java.nio=ALL-UNNAMED
+--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
+```
+
+
### Integration with Jackson ObjectMapper (jackson-databind)
msgpack-java supports serialization and deserialization of Java objects through [jackson-databind](https://github.com/FasterXML/jackson-databind).
=====================================
RELEASE_NOTES.md
=====================================
@@ -1,5 +1,21 @@
# Release Notes
+## 0.9.3
+
+This version supports JDK17 [#660](http://github.com/msgpack/msgpack-java/pull/660).
+
+Important: If you need to use DirectByteBuffer (raw memory access) in JDK17 or later, specify two JVM options to allow accessing
+native memory:
+```
+--add-opens=java.base/java.nio=ALL-UNNAMED
+--add-opens=java.base/sun.nio.ch=ALL-UNNAMED
+```
+Internal updates:
+
+* Use SPDX-ID in license name [#653](http://github.com/msgpack/msgpack-java/pull/653)
+* Update airframe-json, airspec to 22.6.4 [#659](http://github.com/msgpack/msgpack-java/pull/659)
+* Update akka-actor to 2.6.19 [#647](http://github.com/msgpack/msgpack-java/pull/647)
+
## 0.9.2
Internal updates:
=====================================
build.sbt
=====================================
@@ -5,7 +5,7 @@ Global / concurrentRestrictions := Seq(
Tags.limit(Tags.Test, 1)
)
-val AIRFRAME_VERSION = "22.6.1"
+val AIRFRAME_VERSION = "22.6.4"
// Use dynamic snapshot version strings for non tagged versions
ThisBuild / dynverSonatypeSnapshots := true
@@ -74,6 +74,13 @@ lazy val msgpackCore = Project(id = "msgpack-core", base = file("msgpack-core"))
"org.msgpack.value.impl"
),
testFrameworks += new TestFramework("wvlet.airspec.Framework"),
+ Test / javaOptions ++= Seq(
+ // --add-opens is not available in JDK8
+ "-XX:+IgnoreUnrecognizedVMOptions",
+ "--add-opens=java.base/java.nio=ALL-UNNAMED",
+ "--add-opens=java.base/sun.nio.ch=ALL-UNNAMED"
+ ),
+ Test / fork := true,
libraryDependencies ++= Seq(
// msgpack-core should have no external dependencies
junitInterface,
=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+msgpack-java (0.9.3-1) unstable; urgency=medium
+
+ * New upstream version 0.9.3
+
+ -- Andrius Merkys <merkys at debian.org> Thu, 30 Jun 2022 02:41:37 -0400
+
msgpack-java (0.9.2-1) unstable; urgency=medium
* New upstream version 0.9.2
=====================================
debian/libmsgpack-java.docs
=====================================
@@ -0,0 +1 @@
+NOTICE
=====================================
debian/patches/compile.patch
=====================================
@@ -10,7 +10,7 @@ Author: Andrius Merkys <merkys at debian.org>
- <packaging>jar</packaging>
+ <packaging>pom</packaging>
<description>Jackson extension that adds support for MessagePack</description>
- <version>0.9.2</version>
+ <version>0.9.3</version>
<name>jackson-dataformat-msgpack</name>
@@ -77,4 +77,24 @@
<scope>test</scope>
=====================================
debian/patches/pom.xml
=====================================
@@ -11,7 +11,7 @@ Author: Andrius Merkys <merkys at debian.org>
+ <artifactId>msgpack-java</artifactId>
+ <packaging>jar</packaging>
+ <description>Jackson extension that adds support for MessagePack</description>
-+ <version>0.9.2</version>
++ <version>0.9.3</version>
+ <name>jackson-dataformat-msgpack</name>
+ <organization>
+ <name>MessagePack</name>
@@ -63,7 +63,7 @@ Author: Andrius Merkys <merkys at debian.org>
+ <dependency>
+ <groupId>org.msgpack</groupId>
+ <artifactId>msgpack-core</artifactId>
-+ <version>0.9.2</version>
++ <version>0.9.3</version>
+ </dependency>
+ <dependency>
+ <groupId>com.fasterxml.jackson.core</groupId>
@@ -94,7 +94,7 @@ Author: Andrius Merkys <merkys at debian.org>
+ <parent>
+ <groupId>org.msgpack</groupId>
+ <artifactId>msgpack-java</artifactId>
-+ <version>0.9.2</version>
++ <version>0.9.3</version>
+ </parent>
+ <artifactId>msgpack-core</artifactId>
+ <build>
@@ -114,7 +114,7 @@ Author: Andrius Merkys <merkys at debian.org>
+ <parent>
+ <groupId>org.msgpack</groupId>
+ <artifactId>msgpack-java</artifactId>
-+ <version>0.9.2</version>
++ <version>0.9.3</version>
+ </parent>
+ <artifactId>msgpack-jackson</artifactId>
+ <build>
=====================================
msgpack-core/src/main/java/org/msgpack/core/buffer/DirectBufferAccess.java
=====================================
@@ -18,11 +18,13 @@ package org.msgpack.core.buffer;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
+import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.security.AccessController;
import java.security.PrivilegedAction;
import sun.misc.Unsafe;
+import sun.nio.ch.DirectBuffer;
/**
* Wraps the difference of access methods to DirectBuffers between Android and others.
@@ -30,7 +32,8 @@ import sun.misc.Unsafe;
class DirectBufferAccess
{
private DirectBufferAccess()
- {}
+ {
+ }
enum DirectBufferConstructorType
{
@@ -40,7 +43,6 @@ class DirectBufferAccess
ARGS_MB_INT_INT
}
- static Method mGetAddress;
// For Java <=8, gets a sun.misc.Cleaner
static Method mCleaner;
static Method mClean;
@@ -95,10 +97,19 @@ class DirectBufferAccess
if (byteBufferConstructor == null) {
throw new RuntimeException("Constructor of DirectByteBuffer is not found");
}
- byteBufferConstructor.setAccessible(true);
- mGetAddress = directByteBufferClass.getDeclaredMethod("address");
- mGetAddress.setAccessible(true);
+ try {
+ byteBufferConstructor.setAccessible(true);
+ }
+ catch (RuntimeException e) {
+ // This is a Java9+ exception, so we need to detect it without importing it for Java8 support
+ if ("java.lang.reflect.InaccessibleObjectException".equals(e.getClass().getName())) {
+ byteBufferConstructor = null;
+ }
+ else {
+ throw e;
+ }
+ }
if (MessageBuffer.javaVersion <= 8) {
setupCleanerJava6(direct);
@@ -160,6 +171,7 @@ class DirectBufferAccess
/**
* Checks if we have a usable {@link DirectByteBuffer#cleaner}.
+ *
* @param direct a direct buffer
* @return the method or an error
*/
@@ -184,6 +196,7 @@ class DirectBufferAccess
/**
* Checks if we have a usable {@link sun.misc.Cleaner#clean}.
+ *
* @param direct a direct buffer
* @param mCleaner the {@link DirectByteBuffer#cleaner} method
* @return the method or null
@@ -210,6 +223,7 @@ class DirectBufferAccess
/**
* Checks if we have a usable {@link Unsafe#invokeCleaner}.
+ *
* @param direct a direct buffer
* @return the method or an error
*/
@@ -218,7 +232,7 @@ class DirectBufferAccess
try {
// See https://bugs.openjdk.java.net/browse/JDK-8171377
Method m = MessageBuffer.unsafe.getClass().getDeclaredMethod(
- "invokeCleaner", ByteBuffer.class);
+ "invokeCleaner", ByteBuffer.class);
m.invoke(MessageBuffer.unsafe, direct);
return m;
}
@@ -233,17 +247,9 @@ class DirectBufferAccess
}
}
- static long getAddress(Object base)
+ static long getAddress(Buffer buffer)
{
- try {
- return (Long) mGetAddress.invoke(base);
- }
- catch (IllegalAccessException e) {
- throw new RuntimeException(e);
- }
- catch (InvocationTargetException e) {
- throw new RuntimeException(e);
- }
+ return ((DirectBuffer) buffer).address();
}
static void clean(Object base)
@@ -253,7 +259,7 @@ class DirectBufferAccess
Object cleaner = mCleaner.invoke(base);
mClean.invoke(cleaner);
}
- else {
+ else {
mInvokeCleaner.invoke(MessageBuffer.unsafe, base);
}
}
@@ -269,6 +275,10 @@ class DirectBufferAccess
static ByteBuffer newByteBuffer(long address, int index, int length, ByteBuffer reference)
{
+ if (byteBufferConstructor == null) {
+ throw new IllegalStateException("Can't create a new DirectByteBuffer. In JDK17+, two JVM options needs to be set: " +
+ "--add-opens=java.base/java.nio=ALL-UNNAMED and --add-opens=java.base/sun.nio.ch=ALL-UNNAMED");
+ }
try {
switch (directBufferConstructorType) {
case ARGS_LONG_INT_REF:
=====================================
msgpack-core/src/test/scala/org/msgpack/core/buffer/DirectBufferAccessTest.scala
=====================================
@@ -0,0 +1,29 @@
+//
+// 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.core.buffer
+
+import wvlet.airspec.AirSpec
+
+import java.nio.ByteBuffer
+
+class DirectBufferAccessTest extends AirSpec {
+
+ test("instantiate DirectBufferAccess") {
+ val bb = ByteBuffer.allocateDirect(1)
+ val addr = DirectBufferAccess.getAddress(bb)
+
+ }
+}
=====================================
sonatype.sbt
=====================================
@@ -2,7 +2,7 @@ import xerial.sbt.Sonatype._
ThisBuild / sonatypeProfileName := "org.msgpack"
ThisBuild / homepage := Some(url("https://msgpack.org/"))
-ThisBuild / licenses := Seq("APL2" -> url("http://www.apache.org/licenses/LICENSE-2.0.txt"))
+ThisBuild / licenses := Seq("Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0.txt"))
ThisBuild / scmInfo := Some(
ScmInfo(
url("https://github.com/msgpack/msgpack-java"),
View it on GitLab: https://salsa.debian.org/java-team/msgpack-java/-/compare/7a4574374479240b0059ad51711d6aa34656fc1c...73bc808968f92809735da88465aad3095cb1cc04
--
View it on GitLab: https://salsa.debian.org/java-team/msgpack-java/-/compare/7a4574374479240b0059ad51711d6aa34656fc1c...73bc808968f92809735da88465aad3095cb1cc04
You're receiving this email because of your account on salsa.debian.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/pkg-java-commits/attachments/20220630/d393e6b4/attachment.htm>
More information about the pkg-java-commits
mailing list