From e7f4419131a398489382a942e150685c4dfd687e Mon Sep 17 00:00:00 2001 From: guqing <38999863+guqing@users.noreply.github.com> Date: Mon, 1 Jul 2024 14:59:17 +0800 Subject: [PATCH] chore: compatibility support for null for sort parameter of listAll (#6230) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit #### What type of PR is this? /area core /milestone 2.17.x #### What this PR does / why we need it: 由于2.17.0 修改了 listAll 的实现导致出现了不兼容 Sort 参数为 null 的情况,考虑到给开发者适应的时间因此先兼容并给出警告日志 see also #6219 #### Which issue(s) this PR fixes: Fixes #6219 #### Does this PR introduce a user-facing change? ```release-note None ``` --- .../app/extension/ReactiveExtensionClientImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/run/halo/app/extension/ReactiveExtensionClientImpl.java b/application/src/main/java/run/halo/app/extension/ReactiveExtensionClientImpl.java index 822a13847..8c655ac0a 100644 --- a/application/src/main/java/run/halo/app/extension/ReactiveExtensionClientImpl.java +++ b/application/src/main/java/run/halo/app/extension/ReactiveExtensionClientImpl.java @@ -11,6 +11,7 @@ import java.util.Comparator; import java.util.HashSet; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.atomic.AtomicBoolean; @@ -112,9 +113,17 @@ public class ReactiveExtensionClientImpl implements ReactiveExtensionClient { @Override public <E extends Extension> Flux<E> listAll(Class<E> type, ListOptions options, Sort sort) { + var nullSafeSort = Optional.ofNullable(sort) + .orElseGet(() -> { + log.warn("The sort parameter is null, it is recommended to use Sort.unsorted() " + + "instead and the compatibility support for null will be removed in the " + + "subsequent version."); + return Sort.unsorted(); + }); var scheme = schemeManager.get(type); return Mono.fromSupplier( - () -> indexedQueryEngine.retrieveAll(scheme.groupVersionKind(), options, sort)) + () -> indexedQueryEngine.retrieveAll(scheme.groupVersionKind(), options, + nullSafeSort)) .doOnSuccess(objectKeys -> { if (log.isDebugEnabled()) { if (objectKeys.size() > 500) {