U 修复 ClassPathResourceProvider 读到资源为空的情况处理

This commit is contained in:
天爱有情
2021-12-16 16:57:03 +08:00
parent 551e354ec1
commit f43116ddd1
5 changed files with 35 additions and 7 deletions
+1 -1
View File
@@ -104,7 +104,7 @@
<execution> <execution>
<id>attach-sources</id> <id>attach-sources</id>
<goals> <goals>
<goal>jar-no-fork</goal> <goal>jar-no-fork</goal>6
</goals> </goals>
</execution> </execution>
</executions> </executions>
@@ -70,7 +70,12 @@ public class DefaultSliderCaptchaResourceManager implements SliderCaptchaResourc
public InputStream getResourceInputStream(Resource resource) { public InputStream getResourceInputStream(Resource resource) {
for (ResourceProvider resourceProvider : resourceProviderList) { for (ResourceProvider resourceProvider : resourceProviderList) {
if (resourceProvider.supported(resource.getType())) { 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() + "]对应的资源提供者"); throw new IllegalStateException("没有找到Resource [" + resource.getType() + "]对应的资源提供者");
@@ -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);
}
@@ -1,7 +1,6 @@
package cloud.tianai.captcha.template.slider.provider; package cloud.tianai.captcha.template.slider.provider;
import cloud.tianai.captcha.template.slider.Resource; import cloud.tianai.captcha.template.slider.Resource;
import cloud.tianai.captcha.template.slider.ResourceProvider;
import java.io.InputStream; import java.io.InputStream;
@@ -10,12 +9,12 @@ import java.io.InputStream;
* @date 2021/8/7 16:07 * @date 2021/8/7 16:07
* @Description classPath * @Description classPath
*/ */
public class ClassPathResourceProvider implements ResourceProvider { public class ClassPathResourceProvider extends AbstractResourceProvider {
public static final String NAME = "classpath"; public static final String NAME = "classpath";
@Override @Override
public InputStream getResourceInputStream(Resource data) { public InputStream doGetResourceInputStream(Resource data) {
return getClassLoader().getResourceAsStream(data.getData()); return getClassLoader().getResourceAsStream(data.getData());
} }
@@ -12,13 +12,13 @@ import java.net.URL;
* @date 2021/8/7 16:05 * @date 2021/8/7 16:05
* @Description url * @Description url
*/ */
public class URLResourceProvider implements ResourceProvider { public class URLResourceProvider implements AbstractResourceProvider {
public static final String NAME = "URL"; public static final String NAME = "URL";
@SneakyThrows @SneakyThrows
@Override @Override
public InputStream getResourceInputStream(Resource data) { public InputStream doGetResourceInputStream(Resource data) {
URL url = new URL(data.getData()); URL url = new URL(data.getData());
return url.openStream(); return url.openStream();
} }