From 4b9cb57443fd6c8aae143055a7413ffe6be2fa51 Mon Sep 17 00:00:00 2001 From: "mike.wq" Date: Fri, 15 Mar 2024 17:01:53 +0800 Subject: [PATCH] feat(#lambda): support jdk21 --- app-stream-api/pom.xml | 2 +- .../open/app/api/common/LambdaUtils.java | 14 ++++++++++---- .../open/app/api/util/JavaVersionUtil.java | 19 +++++++++++++++++++ app-stream-client/pom.xml | 4 ++-- .../app-stream-network-api/pom.xml | 4 ++-- .../app-stream-network-core/pom.xml | 2 +- .../app-stream-network-rsocket/pom.xml | 2 +- .../app-stream-network-ws/pom.xml | 2 +- app-stream-network/pom.xml | 2 +- app-stream-protocol/pom.xml | 2 +- dingtalk-stream/pom.xml | 4 ++-- pom.xml | 2 +- version.sh | 2 +- 13 files changed, 43 insertions(+), 18 deletions(-) create mode 100644 app-stream-api/src/main/java/com/dingtalk/open/app/api/util/JavaVersionUtil.java diff --git a/app-stream-api/pom.xml b/app-stream-api/pom.xml index 91997c5..57edab0 100644 --- a/app-stream-api/pom.xml +++ b/app-stream-api/pom.xml @@ -5,7 +5,7 @@ open-app-stream-client com.dingtalk.open - 1.3.0 + 1.3.1 ../pom.xml 4.0.0 diff --git a/app-stream-api/src/main/java/com/dingtalk/open/app/api/common/LambdaUtils.java b/app-stream-api/src/main/java/com/dingtalk/open/app/api/common/LambdaUtils.java index d86e92f..4d565ef 100644 --- a/app-stream-api/src/main/java/com/dingtalk/open/app/api/common/LambdaUtils.java +++ b/app-stream-api/src/main/java/com/dingtalk/open/app/api/common/LambdaUtils.java @@ -2,6 +2,7 @@ import com.dingtalk.open.app.api.DingTalkAppError; import com.dingtalk.open.app.api.OpenDingTalkAppException; +import com.dingtalk.open.app.api.util.JavaVersionUtil; import java.lang.invoke.SerializedLambda; import java.lang.reflect.Method; @@ -18,7 +19,9 @@ * @date 2023/3/19 */ public class LambdaUtils { - private static final Pattern LAMBDA_PATTERN = Pattern.compile(".*\\$\\$Lambda\\$[0-9]+/.*"); + private static final Pattern LAMBDA_PATTERN_JDK8_20 = Pattern.compile(".*\\$\\$Lambda\\$[0-9]+/.*"); + + private static final Pattern LAMBDA_PATTERN_JDK_21 = Pattern.compile(".*\\$\\$Lambda/.*"); private static final Pattern PARAMETER_TYPE_PATTERN = Pattern.compile("\\((.*)\\).*"); @@ -28,9 +31,12 @@ public static boolean isLambda(Object obj) { if (obj == null) { return false; } - - if (obj.getClass().isSynthetic() && LAMBDA_PATTERN.matcher(obj.getClass().getSimpleName()).matches()) { - return true; + if (obj.getClass().isSynthetic()) { + if (JavaVersionUtil.getMainVersion() < 21) { + return LAMBDA_PATTERN_JDK8_20.matcher(obj.getClass().getSimpleName()).matches(); + } else { + return LAMBDA_PATTERN_JDK_21.matcher(obj.getClass().getSimpleName()).matches(); + } } return false; } diff --git a/app-stream-api/src/main/java/com/dingtalk/open/app/api/util/JavaVersionUtil.java b/app-stream-api/src/main/java/com/dingtalk/open/app/api/util/JavaVersionUtil.java new file mode 100644 index 0000000..55e7c98 --- /dev/null +++ b/app-stream-api/src/main/java/com/dingtalk/open/app/api/util/JavaVersionUtil.java @@ -0,0 +1,19 @@ +package com.dingtalk.open.app.api.util; + +/** + * @author feiyin + * @date 2024/3/15 + */ +public class JavaVersionUtil { + + + public static Integer getMainVersion() { + String getVersion = System.getProperty("java.version"); + String[] version = getVersion.split("\\."); + if (version[0].equalsIgnoreCase("1")) { + return Integer.parseInt(version[1]); + } else { + return Integer.parseInt(version[0]); + } + } +} diff --git a/app-stream-client/pom.xml b/app-stream-client/pom.xml index db10d8f..2e879e8 100644 --- a/app-stream-client/pom.xml +++ b/app-stream-client/pom.xml @@ -4,13 +4,13 @@ com.dingtalk.open open-app-stream-client - 1.3.0 + 1.3.1 ../pom.xml app-stream-client jar - 1.3.0 + 1.3.1 app-stream-client diff --git a/app-stream-network/app-stream-network-api/pom.xml b/app-stream-network/app-stream-network-api/pom.xml index e9bf61f..8fca8e9 100644 --- a/app-stream-network/app-stream-network-api/pom.xml +++ b/app-stream-network/app-stream-network-api/pom.xml @@ -4,12 +4,12 @@ com.dingtalk.open app-stream-network - 1.3.0 + 1.3.1 ../pom.xml app-stream-network-api - 1.3.0 + 1.3.1 jar app-stream-network-api diff --git a/app-stream-network/app-stream-network-core/pom.xml b/app-stream-network/app-stream-network-core/pom.xml index 41db47f..b29e6f8 100644 --- a/app-stream-network/app-stream-network-core/pom.xml +++ b/app-stream-network/app-stream-network-core/pom.xml @@ -4,7 +4,7 @@ com.dingtalk.open app-stream-network - 1.3.0 + 1.3.1 ../pom.xml diff --git a/app-stream-network/app-stream-network-rsocket/pom.xml b/app-stream-network/app-stream-network-rsocket/pom.xml index 4e58bd9..cad4dae 100644 --- a/app-stream-network/app-stream-network-rsocket/pom.xml +++ b/app-stream-network/app-stream-network-rsocket/pom.xml @@ -4,7 +4,7 @@ com.dingtalk.open app-stream-network - 1.3.0 + 1.3.1 ../pom.xml diff --git a/app-stream-network/app-stream-network-ws/pom.xml b/app-stream-network/app-stream-network-ws/pom.xml index bca6ed3..2c1ab0f 100644 --- a/app-stream-network/app-stream-network-ws/pom.xml +++ b/app-stream-network/app-stream-network-ws/pom.xml @@ -4,7 +4,7 @@ com.dingtalk.open app-stream-network - 1.3.0 + 1.3.1 ../pom.xml diff --git a/app-stream-network/pom.xml b/app-stream-network/pom.xml index 15a6a48..56a0d4a 100644 --- a/app-stream-network/pom.xml +++ b/app-stream-network/pom.xml @@ -5,7 +5,7 @@ open-app-stream-client com.dingtalk.open - 1.3.0 + 1.3.1 ../pom.xml pom diff --git a/app-stream-protocol/pom.xml b/app-stream-protocol/pom.xml index 41e0893..ce990e7 100644 --- a/app-stream-protocol/pom.xml +++ b/app-stream-protocol/pom.xml @@ -6,7 +6,7 @@ com.dingtalk.open open-app-stream-client - 1.3.0 + 1.3.1 app-stream-protocol diff --git a/dingtalk-stream/pom.xml b/dingtalk-stream/pom.xml index 77b73ec..53ee7f7 100644 --- a/dingtalk-stream/pom.xml +++ b/dingtalk-stream/pom.xml @@ -4,13 +4,13 @@ com.dingtalk.open open-app-stream-client - 1.3.0 + 1.3.1 ../pom.xml dingtalk-stream jar - 1.3.0 + 1.3.1 app-stream-client diff --git a/pom.xml b/pom.xml index 191d939..e97d2ac 100644 --- a/pom.xml +++ b/pom.xml @@ -5,7 +5,7 @@ com.dingtalk.open open-app-stream-client pom - 1.3.0 + 1.3.1 app-stream-client app-stream-api diff --git a/version.sh b/version.sh index 4d699a6..234448f 100755 --- a/version.sh +++ b/version.sh @@ -1,3 +1,3 @@ #!/usr/bin/env bash -mvn versions:set -DnewVersion=1.3.0 +mvn versions:set -DnewVersion=1.3.1