From d470a690c8f968d32f92e75509e34efd230db72e Mon Sep 17 00:00:00 2001 From: mxd <838425805@qq.com> Date: Mon, 3 Jan 2022 19:57:36 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=96=B0=E5=8A=A0=E8=BD=BD=E8=B5=84?= =?UTF-8?q?=E6=BA=90=E3=80=81=E6=95=B0=E6=8D=AE=E6=BA=90=E5=8F=96=E6=B6=88?= =?UTF-8?q?=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../magicapi/controller/MagicWorkbenchController.java | 9 ++++++++- .../ssssssss/magicapi/interceptor/Authorization.java | 8 ++++++-- .../magicapi/service/AbstractMagicDynamicRegistry.java | 9 +++++---- .../service/impl/DataSourceMagicDynamicRegistry.java | 10 ++++------ 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/controller/MagicWorkbenchController.java b/magic-api/src/main/java/org/ssssssss/magicapi/controller/MagicWorkbenchController.java index 68886f32..4c80cca7 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/controller/MagicWorkbenchController.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/controller/MagicWorkbenchController.java @@ -149,9 +149,16 @@ public class MagicWorkbenchController extends MagicController implements MagicEx return new JsonBean<>(Stream.of(Options.values()).map(item -> Arrays.asList(item.getValue(), item.getName(), item.getDefaultValue())).collect(Collectors.toList())); } + @GetMapping("/reload") + @ResponseBody + public JsonBean reload(HttpServletRequest request) { + isTrue(allowVisit(request, Authorization.RELOAD), PERMISSION_INVALID); + MagicConfiguration.getMagicResourceService().refresh(); + return new JsonBean<>(true); + } + @GetMapping("/search") @ResponseBody - @Valid public JsonBean>> search(String keyword, HttpServletRequest request) { if (StringUtils.isBlank(keyword)) { return new JsonBean<>(Collections.emptyList()); diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/interceptor/Authorization.java b/magic-api/src/main/java/org/ssssssss/magicapi/interceptor/Authorization.java index ceb9a4a0..05e43287 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/interceptor/Authorization.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/interceptor/Authorization.java @@ -41,5 +41,9 @@ public enum Authorization { /** * 解锁动作 */ - UNLOCK -} \ No newline at end of file + UNLOCK, + /** + * 重新加载 + */ + RELOAD +} diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/service/AbstractMagicDynamicRegistry.java b/magic-api/src/main/java/org/ssssssss/magicapi/service/AbstractMagicDynamicRegistry.java index f1b11381..6b00ce77 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/service/AbstractMagicDynamicRegistry.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/service/AbstractMagicDynamicRegistry.java @@ -58,14 +58,15 @@ public abstract class AbstractMagicDynamicRegistry implem } @EventListener(condition = "#event.action == T(org.ssssssss.magicapi.event.EventAction).CLEAR") - public void clear(MagicEvent event){ + public void clear(MagicEvent event) { Iterator>> iterator = mappings.entrySet().iterator(); - while (iterator.hasNext()){ + while (iterator.hasNext()) { Map.Entry> entry = iterator.next(); - unregister(entry.getValue()); + if (Objects.equals(entry.getKey(), entry.getValue().getEntity().getId())) { + unregister(entry.getValue()); + } iterator.remove(); } - } protected void processEvent(FileEvent event) { diff --git a/magic-api/src/main/java/org/ssssssss/magicapi/service/impl/DataSourceMagicDynamicRegistry.java b/magic-api/src/main/java/org/ssssssss/magicapi/service/impl/DataSourceMagicDynamicRegistry.java index d6847a45..85fd7509 100644 --- a/magic-api/src/main/java/org/ssssssss/magicapi/service/impl/DataSourceMagicDynamicRegistry.java +++ b/magic-api/src/main/java/org/ssssssss/magicapi/service/impl/DataSourceMagicDynamicRegistry.java @@ -1,8 +1,6 @@ package org.ssssssss.magicapi.service.impl; import org.apache.commons.lang3.StringUtils; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.BeanUtils; import org.springframework.boot.context.properties.bind.Bindable; import org.springframework.boot.context.properties.bind.Binder; @@ -46,7 +44,8 @@ public class DataSourceMagicDynamicRegistry extends AbstractMagicDynamicRegistry } @Override - public boolean register(DataSourceInfo info) { + protected boolean register(MappingNode mappingNode) { + DataSourceInfo info = mappingNode.getEntity(); Map properties = new HashMap<>(info.getProperties()); properties.put("url", info.getUrl()); properties.put("username", info.getUsername()); @@ -62,10 +61,9 @@ public class DataSourceMagicDynamicRegistry extends AbstractMagicDynamicRegistry return true; } - @Override - public boolean unregister(DataSourceInfo info) { - return magicDynamicDataSource.delete(info.getKey()); + protected void unregister(MappingNode mappingNode) { + magicDynamicDataSource.delete(mappingNode.getMappingKey()); } // copy from DataSourceBuilder