From f43116ddd16fa49b328372a08f0e222da14af3bb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E7=88=B1=E6=9C=89=E6=83=85?= Date: Thu, 16 Dec 2021 16:57:03 +0800 Subject: [PATCH] =?UTF-8?q?U=20=E4=BF=AE=E5=A4=8D=20ClassPathResourceProvi?= =?UTF-8?q?der=20=E8=AF=BB=E5=88=B0=E8=B5=84=E6=BA=90=E4=B8=BA=E7=A9=BA?= =?UTF-8?q?=E7=9A=84=E6=83=85=E5=86=B5=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 2 +- .../DefaultSliderCaptchaResourceManager.java | 7 +++++- .../provider/AbstractResourceProvider.java | 24 +++++++++++++++++++ .../provider/ClassPathResourceProvider.java | 5 ++-- .../slider/provider/URLResourceProvider.java | 4 ++-- 5 files changed, 35 insertions(+), 7 deletions(-) create mode 100644 src/main/java/cloud/tianai/captcha/template/slider/provider/AbstractResourceProvider.java diff --git a/pom.xml b/pom.xml index 345aa3f..6d58751 100644 --- a/pom.xml +++ b/pom.xml @@ -104,7 +104,7 @@ attach-sources - jar-no-fork + jar-no-fork6 diff --git a/src/main/java/cloud/tianai/captcha/template/slider/DefaultSliderCaptchaResourceManager.java b/src/main/java/cloud/tianai/captcha/template/slider/DefaultSliderCaptchaResourceManager.java index 1cb4e11..ea61a48 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/DefaultSliderCaptchaResourceManager.java +++ b/src/main/java/cloud/tianai/captcha/template/slider/DefaultSliderCaptchaResourceManager.java @@ -70,7 +70,12 @@ public class DefaultSliderCaptchaResourceManager implements SliderCaptchaResourc public InputStream getResourceInputStream(Resource resource) { for (ResourceProvider resourceProvider : resourceProviderList) { if (resourceProvider.supported(resource.getType())) { - return resourceProvider.getResourceInputStream(resource); + InputStream resourceInputStream = resourceProvider.getResourceInputStream(resource); + if (resourceInputStream == null) { + throw new IllegalArgumentException("滑块验证码 ResourceProvider 读到的图片资源为空,providerName=[" + + resourceProvider.getName() + "], resource=[" + resource + "]"); + } + return resourceInputStream; } } throw new IllegalStateException("没有找到Resource [" + resource.getType() + "]对应的资源提供者"); diff --git a/src/main/java/cloud/tianai/captcha/template/slider/provider/AbstractResourceProvider.java b/src/main/java/cloud/tianai/captcha/template/slider/provider/AbstractResourceProvider.java new file mode 100644 index 0000000..0c3003c --- /dev/null +++ b/src/main/java/cloud/tianai/captcha/template/slider/provider/AbstractResourceProvider.java @@ -0,0 +1,24 @@ +package cloud.tianai.captcha.template.slider.provider; + +import cloud.tianai.captcha.template.slider.Resource; +import cloud.tianai.captcha.template.slider.ResourceProvider; + +import java.io.InputStream; + +/** + * @Author: 天爱有情 + * @date 2021/12/16 16:52 + * @Description 抽象的ResourceProvider + */ +public abstract class AbstractResourceProvider implements ResourceProvider{ + @Override + public InputStream getResourceInputStream(Resource data) { + InputStream resourceInputStream = doGetResourceInputStream(data); + if (resourceInputStream == null) { + throw new IllegalArgumentException("滑块验证码无法读到指定的资源[" + getName() + "]" + data); + } + return resourceInputStream; + } + + public abstract InputStream doGetResourceInputStream(Resource data); +} diff --git a/src/main/java/cloud/tianai/captcha/template/slider/provider/ClassPathResourceProvider.java b/src/main/java/cloud/tianai/captcha/template/slider/provider/ClassPathResourceProvider.java index 7b69f21..a36776c 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/provider/ClassPathResourceProvider.java +++ b/src/main/java/cloud/tianai/captcha/template/slider/provider/ClassPathResourceProvider.java @@ -1,7 +1,6 @@ package cloud.tianai.captcha.template.slider.provider; import cloud.tianai.captcha.template.slider.Resource; -import cloud.tianai.captcha.template.slider.ResourceProvider; import java.io.InputStream; @@ -10,12 +9,12 @@ import java.io.InputStream; * @date 2021/8/7 16:07 * @Description classPath */ -public class ClassPathResourceProvider implements ResourceProvider { +public class ClassPathResourceProvider extends AbstractResourceProvider { public static final String NAME = "classpath"; @Override - public InputStream getResourceInputStream(Resource data) { + public InputStream doGetResourceInputStream(Resource data) { return getClassLoader().getResourceAsStream(data.getData()); } diff --git a/src/main/java/cloud/tianai/captcha/template/slider/provider/URLResourceProvider.java b/src/main/java/cloud/tianai/captcha/template/slider/provider/URLResourceProvider.java index 702c277..2fbdaaf 100644 --- a/src/main/java/cloud/tianai/captcha/template/slider/provider/URLResourceProvider.java +++ b/src/main/java/cloud/tianai/captcha/template/slider/provider/URLResourceProvider.java @@ -12,13 +12,13 @@ import java.net.URL; * @date 2021/8/7 16:05 * @Description url */ -public class URLResourceProvider implements ResourceProvider { +public class URLResourceProvider implements AbstractResourceProvider { public static final String NAME = "URL"; @SneakyThrows @Override - public InputStream getResourceInputStream(Resource data) { + public InputStream doGetResourceInputStream(Resource data) { URL url = new URL(data.getData()); return url.openStream(); }