From b565ce0658c9196f46487e0b824bd85a402bfe54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8F=8D=E7=BC=96=E8=AF=91=E5=B7=A5=E4=BD=9C=E5=8C=BA?= Date: Sat, 25 Apr 2026 00:12:06 +0800 Subject: [PATCH] =?UTF-8?q?fix(v0.11):=20=E7=AC=AC=E4=BA=94=E8=BD=AE?= =?UTF-8?q?=E8=B5=B0=E6=9F=A5=E2=80=94=E2=80=94=E4=BA=8B=E4=BB=B6=E8=B7=AF?= =?UTF-8?q?=E7=94=B1=20Class=20=E6=AF=94=E8=BE=83=E3=80=81=E6=98=A0?= =?UTF-8?q?=E5=B0=84=E5=8F=AA=E8=AF=BB=E8=A7=86=E5=9B=BE=E3=80=81=E7=9B=91?= =?UTF-8?q?=E5=90=AC=E5=99=A8=E6=97=A5=E5=BF=97=E4=B8=8E=E6=96=87=E4=BB=B6?= =?UTF-8?q?=E5=90=8D=E5=9B=9E=E9=80=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - EventHandlerMapping / CloudwalkEventInitializing:用 Objects.equals 比较事件原型与入参 Class,避免反编译式链式比较隐患。 - EventHandlerMapping:getHandlerMap 等对外返回 Collections.unmodifiableMap,防止误改内部注册表。 - GroupEventListener:改为实例级 logger(getClass()),子类日志可区分。 - AbstractCloudwalkController:URLEncoder 失败时回退原始文件名,避免 Content-Disposition 收到 null。 Made-with: Cursor --- .../cn/cloudwalk/event/CloudwalkEventInitializing.java | 3 ++- .../cloudwalk/event/handler/EventHandlerMapping.java | 10 ++++++---- .../cloudwalk/event/listener/GroupEventListener.java | 8 ++++---- .../elevator/common/AbstractCloudwalkController.java | 2 +- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/CloudwalkEventInitializing.java b/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/CloudwalkEventInitializing.java index 56e650c0..7cebf44e 100644 --- a/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/CloudwalkEventInitializing.java +++ b/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/CloudwalkEventInitializing.java @@ -26,6 +26,7 @@ import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Set; import java.util.concurrent.SynchronousQueue; import java.util.concurrent.ThreadFactory; @@ -176,7 +177,7 @@ public class CloudwalkEventInitializing implements CommandLineRunner { private EventType getEventType(Class eventClass) { for (EventType eventType : EventType.values()) { BaseEvent prototype = eventType.getEventClass(); - if (prototype != null && prototype.getClass().equals(eventClass)) { + if (prototype != null && Objects.equals(eventClass, prototype.getClass())) { return eventType; } } diff --git a/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/handler/EventHandlerMapping.java b/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/handler/EventHandlerMapping.java index 1ac9c2b6..c6bf5960 100644 --- a/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/handler/EventHandlerMapping.java +++ b/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/handler/EventHandlerMapping.java @@ -3,9 +3,11 @@ package cn.cloudwalk.event.handler; import cn.cloudwalk.cwos.client.event.event.BaseEvent; import cn.cloudwalk.cwos.client.event.event.EventType; import cn.cloudwalk.cwos.client.event.handler.EventListener; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; public class EventHandlerMapping { private final Map>>> handlerMap = new HashMap<>(); @@ -27,7 +29,7 @@ public class EventHandlerMapping { Class eventClass) { for (EventType eventType : EventType.values()) { BaseEvent prototype = eventType.getEventClass(); - if (prototype != null && prototype.getClass().equals(eventClass)) { + if (prototype != null && Objects.equals(eventClass, prototype.getClass())) { return getServiceCodeHandlerListMap(groupId, eventType); } } @@ -62,14 +64,14 @@ public class EventHandlerMapping { } public Map>>> getHandlerMap() { - return this.handlerMap; + return Collections.unmodifiableMap(this.handlerMap); } public Map>>> getCustomHandlerMap() { - return this.customHandlerMap; + return Collections.unmodifiableMap(this.customHandlerMap); } public Map, String> getListenerClassGroupMap() { - return this.listenerClassGroupMap; + return Collections.unmodifiableMap(this.listenerClassGroupMap); } } diff --git a/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/listener/GroupEventListener.java b/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/listener/GroupEventListener.java index c109c28b..e6d46944 100644 --- a/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/listener/GroupEventListener.java +++ b/maven-cloudwalk-cloud/cloudwalk-common-event/src/main/java/cn/cloudwalk/event/listener/GroupEventListener.java @@ -10,7 +10,7 @@ import org.springframework.context.ApplicationContext; public abstract class GroupEventListener implements EventListener { public static ApplicationContext applicationContext; - private static final Logger LOGGER = LoggerFactory.getLogger(GroupEventListener.class); + protected final Logger logger = LoggerFactory.getLogger(getClass()); public void messageListener(BaseEvent baseEvent) throws RuntimeException { try { @@ -18,13 +18,13 @@ public abstract class GroupEventListener implements EventListener { (CloudwalkEventManager)applicationContext.getBean(CloudwalkEventManager.class); cloudwalkEventManager.handle(getClass(), baseEvent); } catch (BeansException e) { - LOGGER.error("事件处理出现异常(容器 Bean 解析失败),原因:", e); + this.logger.error("事件处理出现异常(容器 Bean 解析失败),原因:", e); throw new RuntimeException(e); } catch (RuntimeException e) { - LOGGER.error("事件处理出现异常,原因:", e); + this.logger.error("事件处理出现异常,原因:", e); throw e; } catch (Exception e) { - LOGGER.error("事件处理出现异常,原因:", e); + this.logger.error("事件处理出现异常,原因:", e); throw new RuntimeException(e); } } diff --git a/maven-cw-elevator-application/cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/common/AbstractCloudwalkController.java b/maven-cw-elevator-application/cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/common/AbstractCloudwalkController.java index 888b556d..0480e6ac 100644 --- a/maven-cw-elevator-application/cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/common/AbstractCloudwalkController.java +++ b/maven-cw-elevator-application/cw-elevator-application-web/src/main/java/cn/cloudwalk/elevator/common/AbstractCloudwalkController.java @@ -76,6 +76,6 @@ public abstract class AbstractCloudwalkController { } catch (Exception e) { this.LOGGER.error("转换文件名字符类型失败,原因:", e); } - return codedFilename; + return codedFilename != null ? codedFilename : fileNames; } }