From 3350eeb7cff06ac498391d08de65477cc3cb0f53 Mon Sep 17 00:00:00 2001 From: sunhui <10151317@qq.com> Date: Mon, 9 Oct 2023 23:05:25 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=A2=9E=E5=8A=A0=E5=88=A4=E6=96=AD=E9=98=B2?= =?UTF-8?q?=E6=AD=A2=E5=87=BA=E7=8E=B0HttpClient=E5=87=BA=E7=8E=B0NullPoin?= =?UTF-8?q?tException=E3=80=822.=E9=98=B2=E6=AD=A2=E8=A6=86=E7=9B=96Config?= =?UTF-8?q?Storages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../wx/miniapp/api/impl/BaseWxMaServiceImpl.java | 13 +++++++++++-- .../weixin/mp/api/impl/BaseWxMpServiceImpl.java | 13 +++++++++++-- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java index 0c9aa9d623..37a25db14a 100644 --- a/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java +++ b/weixin-java-miniapp/src/main/java/cn/binarywang/wx/miniapp/api/impl/BaseWxMaServiceImpl.java @@ -377,7 +377,12 @@ public void setMultiConfigs(Map configs) { @Override @JsonDeserialize public void setMultiConfigs(Map configs, String defaultMiniappId) { - this.configMap = Maps.newHashMap(configs); + // 防止覆盖配置 + if(this.configMap != null) { + this.configMap.putAll(configs); + } else { + this.configMap = Maps.newHashMap(configs); + } WxMaConfigHolder.set(defaultMiniappId); this.initHttp(); } @@ -385,7 +390,11 @@ public void setMultiConfigs(Map configs, String defaultMinia @Override public void addConfig(String miniappId, WxMaConfig configStorages) { synchronized (this) { - if (this.configMap == null) { + /* + * 因为commit f74b00cf 默认初始化了configMap,导致使用此方法无法进入if从而触发initHttp(), + * 就会出现HttpClient报NullPointException + */ + if (this.configMap == null || this.configMap.isEmpty()) { this.setWxMaConfig(configStorages); } else { WxMaConfigHolder.set(miniappId); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java index cb2479c572..d7c0f53abe 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/BaseWxMpServiceImpl.java @@ -542,7 +542,12 @@ public void setMultiConfigStorages(Map configStorages @Override public void setMultiConfigStorages(Map configStorages, String defaultMpId) { - this.configStorageMap = Maps.newHashMap(configStorages); + // 防止覆盖配置 + if(this.configStorageMap != null) { + this.configStorageMap.putAll(configStorages); + } else { + this.configStorageMap = Maps.newHashMap(configStorages); + } WxMpConfigStorageHolder.set(defaultMpId); this.initHttp(); } @@ -550,7 +555,11 @@ public void setMultiConfigStorages(Map configStorages @Override public void addConfigStorage(String mpId, WxMpConfigStorage configStorages) { synchronized (this) { - if (this.configStorageMap == null) { + /* + * 因为commit 2aa27cf12d 默认初始化了configStorageMap,导致使用此方法无法进入if从而触发initHttp(), + * 就会出现HttpClient报NullPointException + */ + if (this.configStorageMap == null || this.configStorageMap.isEmpty()) { this.setWxMpConfigStorage(configStorages); } else { WxMpConfigStorageHolder.set(mpId);