From 866db7c43bb9da5bea6768e5597c58f31a3fa1d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E7=88=B1=E6=9C=89=E6=83=85?= Date: Wed, 23 Aug 2023 11:12:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=20ResourceMap.java=20json?= =?UTF-8?q?=E5=BA=8F=E5=88=97=E5=8C=96=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../AbstractImageCaptchaGenerator.java | 10 +++--- .../common/model/dto/ResourceMap.java | 33 ++++++++++++++++--- 3 files changed, 34 insertions(+), 11 deletions(-) diff --git a/pom.xml b/pom.xml index 682c3bc..44efdcd 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ 4.0.0 cloud.tianai.captcha tianai-captcha - 1.4.1 + 1.4.2 tianai-captcha 行为验证码 diff --git a/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java b/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java index 5092920..6c37b2e 100644 --- a/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java +++ b/src/main/java/cloud/tianai/captcha/generator/AbstractImageCaptchaGenerator.java @@ -122,7 +122,7 @@ public abstract class AbstractImageCaptchaGenerator implements ImageCaptchaGener protected ResourceMap requiredRandomGetTemplate(String type, String tag) { ResourceMap templateMap = imageCaptchaResourceManager.randomGetTemplate(type, tag); - if (CollectionUtils.isEmpty(templateMap)) { + if (templateMap == null || CollectionUtils.isEmpty(templateMap.getResourceMap())) { throw new ImageCaptchaException("随机获取模板资源失败, 获取到的资源为空, type=" + type + ",tag=" + tag); } return templateMap; @@ -137,7 +137,7 @@ public abstract class AbstractImageCaptchaGenerator implements ImageCaptchaGener } - protected InputStream getTemplateFile(Map templateImages, String imageName) { + protected InputStream getTemplateFile(ResourceMap templateImages, String imageName) { Resource resource = templateImages.get(imageName); if (resource == null) { throw new IllegalArgumentException("查找模板异常, 该模板下未找到 ".concat(imageName)); @@ -145,7 +145,7 @@ public abstract class AbstractImageCaptchaGenerator implements ImageCaptchaGener return getResourceInputStream(resource, null); } - protected BufferedImage getTemplateImage(Map templateImages, String imageName) { + protected BufferedImage getTemplateImage(ResourceMap templateImages, String imageName) { InputStream stream = getTemplateFile(templateImages, imageName); BufferedImage bufferedImage = CaptchaImageUtils.wrapFile2BufferedImage(stream); closeStream(stream); @@ -190,7 +190,7 @@ public abstract class AbstractImageCaptchaGenerator implements ImageCaptchaGener return stream; } - protected Optional getTemplateImageOfOptional(Map templateImages, String imageName) { + protected Optional getTemplateImageOfOptional(ResourceMap templateImages, String imageName) { Optional optional = getTemplateFileOfOptional(templateImages, imageName); if (optional.isPresent()) { InputStream inputStream = optional.get(); @@ -201,7 +201,7 @@ public abstract class AbstractImageCaptchaGenerator implements ImageCaptchaGener return Optional.empty(); } - protected Optional getTemplateFileOfOptional(Map templateImages, String imageName) { + protected Optional getTemplateFileOfOptional(ResourceMap templateImages, String imageName) { Resource resource = templateImages.get(imageName); if (resource == null) { return Optional.empty(); diff --git a/src/main/java/cloud/tianai/captcha/resource/common/model/dto/ResourceMap.java b/src/main/java/cloud/tianai/captcha/resource/common/model/dto/ResourceMap.java index cb03db4..31a74ff 100644 --- a/src/main/java/cloud/tianai/captcha/resource/common/model/dto/ResourceMap.java +++ b/src/main/java/cloud/tianai/captcha/resource/common/model/dto/ResourceMap.java @@ -1,10 +1,10 @@ package cloud.tianai.captcha.resource.common.model.dto; -import cloud.tianai.captcha.resource.common.model.dto.Resource; import lombok.Data; import lombok.EqualsAndHashCode; import java.util.HashMap; +import java.util.Map; /** * @Author: 天爱有情 @@ -12,24 +12,47 @@ import java.util.HashMap; * @Description 存储一组Resource的Map, 增加tag标记 */ @Data -@EqualsAndHashCode(callSuper = true) -public class ResourceMap extends HashMap { +@EqualsAndHashCode +public class ResourceMap { + private Map resourceMap; private String tag; public ResourceMap(String tag) { this.tag = tag; + this.resourceMap = new HashMap<>(); } public ResourceMap(String tag, int initialCapacity) { - super(initialCapacity); this.tag = tag; + this.resourceMap = new HashMap<>(initialCapacity); } public ResourceMap(int initialCapacity) { - super(initialCapacity); + this.resourceMap = new HashMap<>(initialCapacity); } public ResourceMap() { } + + private Map getResourceMapOfCreate() { + if (resourceMap == null) { + resourceMap = new HashMap<>(2); + } + return resourceMap; + } + + // ================== Map ================== + + public Resource put(String key, Resource value) { + return getResourceMapOfCreate().put(key, value); + } + + public Resource get(Object key) { + return getResourceMapOfCreate().get(key); + } + public Resource remove(Object key) { + return getResourceMapOfCreate().remove(key); + } + }