From 68f4f6bd408fb263841d91907ab819c854c2cf6b Mon Sep 17 00:00:00 2001 From: md_5 Date: Sun, 25 May 2025 10:32:25 +1000 Subject: [PATCH] Add Java 25-ea to GitHub Actions --- .github/workflows/maven.yml | 4 +-- .../java/net/md_5/bungee/jni/NativeCode.java | 26 +++++++++++++++++++ .../main/java/net/md_5/bungee/BungeeCord.java | 22 +++------------- 3 files changed, 32 insertions(+), 20 deletions(-) diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index d1b8bab1..f340c667 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -4,12 +4,12 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-22.04 + runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: - java: [8, 11, 17, 21] + java: [8, 11, 17, 21, 25-ea] name: Java ${{ matrix.java }} diff --git a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java index 4426823c..3432aa2c 100644 --- a/native/src/main/java/net/md_5/bungee/jni/NativeCode.java +++ b/native/src/main/java/net/md_5/bungee/jni/NativeCode.java @@ -1,6 +1,8 @@ package net.md_5.bungee.jni; import com.google.common.io.ByteStreams; +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; @@ -93,7 +95,31 @@ public final class NativeCode return loaded; } + public static boolean hasDirectBuffers() + { + ByteBuf directBuffer = null; + boolean hasMemoryAddress = false; + try + { + directBuffer = Unpooled.directBuffer(); + hasMemoryAddress = directBuffer.hasMemoryAddress(); + } finally + { + if ( directBuffer != null ) + { + directBuffer.release(); + } + } + + return hasMemoryAddress; + } + public static boolean isSupported() + { + return isSupportedPlatformAndArch() && hasDirectBuffers(); + } + + private static boolean isSupportedPlatformAndArch() { return "Linux".equals( System.getProperty( "os.name" ) ) && ( isAmd64() || isAarch64() ); } diff --git a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java index fb92e1d4..ffa4588a 100644 --- a/proxy/src/main/java/net/md_5/bungee/BungeeCord.java +++ b/proxy/src/main/java/net/md_5/bungee/BungeeCord.java @@ -8,8 +8,6 @@ import com.google.common.collect.Sets; import com.google.common.util.concurrent.ThreadFactoryBuilder; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import io.netty.bootstrap.ServerBootstrap; -import io.netty.buffer.ByteBuf; -import io.netty.buffer.Unpooled; import io.netty.channel.Channel; import io.netty.channel.ChannelException; import io.netty.channel.ChannelFuture; @@ -74,6 +72,7 @@ import net.md_5.bungee.compress.CompressFactory; import net.md_5.bungee.conf.Configuration; import net.md_5.bungee.conf.YamlConfig; import net.md_5.bungee.forge.ForgeConstants; +import net.md_5.bungee.jni.NativeCode; import net.md_5.bungee.log.BungeeLogger; import net.md_5.bungee.log.LoggingForwardHandler; import net.md_5.bungee.log.LoggingOutputStream; @@ -232,32 +231,19 @@ public class BungeeCord extends ProxyServer if ( !Boolean.getBoolean( "net.md_5.bungee.native.disable" ) ) { - ByteBuf directBuffer = null; - boolean hasMemoryAddress = false; - try - { - directBuffer = Unpooled.directBuffer(); - hasMemoryAddress = directBuffer.hasMemoryAddress(); - } finally - { - if ( directBuffer != null ) - { - directBuffer.release(); - } - } - if ( !hasMemoryAddress ) + if ( !NativeCode.hasDirectBuffers() ) { logger.warning( "Memory addresses are not available in direct buffers" ); } - if ( hasMemoryAddress && EncryptionUtil.nativeFactory.load() ) + if ( EncryptionUtil.nativeFactory.load() ) { logger.info( "Using mbed TLS based native cipher." ); } else { logger.info( "Using standard Java JCE cipher." ); } - if ( hasMemoryAddress && CompressFactory.zlib.load() ) + if ( CompressFactory.zlib.load() ) { logger.info( "Using zlib based native compressor." ); } else