mirror of
https://gitee.com/binary/weixin-java-tools.git
synced 2025-10-29 09:38:19 +08:00
🎨 优化代码,去掉jodd相关接口引用
This commit is contained in:
@ -1,14 +1,11 @@
|
|||||||
package com.github.binarywang.wxpay.config;
|
package com.github.binarywang.wxpay.config;
|
||||||
|
|
||||||
import com.github.binarywang.wxpay.exception.WxPayException;
|
import com.github.binarywang.wxpay.exception.WxPayException;
|
||||||
|
import com.github.binarywang.wxpay.util.ResourcesUtils;
|
||||||
import com.github.binarywang.wxpay.v3.WxPayV3HttpClientBuilder;
|
import com.github.binarywang.wxpay.v3.WxPayV3HttpClientBuilder;
|
||||||
import com.github.binarywang.wxpay.v3.auth.*;
|
import com.github.binarywang.wxpay.v3.auth.*;
|
||||||
import com.github.binarywang.wxpay.v3.util.PemUtils;
|
import com.github.binarywang.wxpay.v3.util.PemUtils;
|
||||||
import jodd.util.ResourcesUtil;
|
import lombok.*;
|
||||||
import lombok.Data;
|
|
||||||
import lombok.EqualsAndHashCode;
|
|
||||||
import lombok.SneakyThrows;
|
|
||||||
import lombok.ToString;
|
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.commons.lang3.RegExUtils;
|
import org.apache.commons.lang3.RegExUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
@ -239,10 +236,10 @@ public class WxPayConfig {
|
|||||||
* @author doger.wang
|
* @author doger.wang
|
||||||
**/
|
**/
|
||||||
public CloseableHttpClient initApiV3HttpClient() throws WxPayException {
|
public CloseableHttpClient initApiV3HttpClient() throws WxPayException {
|
||||||
String privateKeyPath = this.getPrivateKeyPath();
|
val privateKeyPath = this.getPrivateKeyPath();
|
||||||
String privateCertPath = this.getPrivateCertPath();
|
val privateCertPath = this.getPrivateCertPath();
|
||||||
String serialNo = this.getCertSerialNo();
|
val serialNo = this.getCertSerialNo();
|
||||||
String apiV3Key = this.getApiV3Key();
|
val apiV3Key = this.getApiV3Key();
|
||||||
if (StringUtils.isBlank(privateKeyPath)) {
|
if (StringUtils.isBlank(privateKeyPath)) {
|
||||||
throw new WxPayException("请确保privateKeyPath已设置");
|
throw new WxPayException("请确保privateKeyPath已设置");
|
||||||
}
|
}
|
||||||
@ -301,7 +298,7 @@ public class WxPayConfig {
|
|||||||
path = "/" + path;
|
path = "/" + path;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
inputStream = ResourcesUtil.getResourceAsStream(path);
|
inputStream = ResourcesUtils.getResourceAsStream(path);
|
||||||
if (inputStream == null) {
|
if (inputStream == null) {
|
||||||
throw new WxPayException(fileNotFoundMsg);
|
throw new WxPayException(fileNotFoundMsg);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,120 @@
|
|||||||
|
package com.github.binarywang.wxpay.util;
|
||||||
|
|
||||||
|
import jodd.io.IOUtil;
|
||||||
|
import jodd.util.ClassUtil;
|
||||||
|
import lombok.val;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.net.URLConnection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 基于jodd.util.ResourcesUtil改造实现
|
||||||
|
* @author jodd
|
||||||
|
*/
|
||||||
|
public class ResourcesUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves given resource as URL.
|
||||||
|
* @see #getResourceUrl(String, ClassLoader)
|
||||||
|
*/
|
||||||
|
public static URL getResourceUrl(final String resourceName) {
|
||||||
|
return getResourceUrl(resourceName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Retrieves given resource as URL. Resource is always absolute and may
|
||||||
|
* starts with a slash character.
|
||||||
|
* <p>
|
||||||
|
* Resource will be loaded using class loaders in the following order:
|
||||||
|
* <ul>
|
||||||
|
* <li>{@link Thread#getContextClassLoader() Thread.currentThread().getContextClassLoader()}</li>
|
||||||
|
* <li>{@link Class#getClassLoader() ClassLoaderUtil.class.getClassLoader()}</li>
|
||||||
|
* <li>if <code>callingClass</code> is provided: {@link Class#getClassLoader() callingClass.getClassLoader()}</li>
|
||||||
|
* </ul>
|
||||||
|
*/
|
||||||
|
public static URL getResourceUrl(String resourceName, final ClassLoader classLoader) {
|
||||||
|
|
||||||
|
if (resourceName.startsWith("/")) {
|
||||||
|
resourceName = resourceName.substring(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
URL resourceUrl;
|
||||||
|
|
||||||
|
// try #1 - using provided class loader
|
||||||
|
if (classLoader != null) {
|
||||||
|
resourceUrl = classLoader.getResource(resourceName);
|
||||||
|
if (resourceUrl != null) {
|
||||||
|
return resourceUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// try #2 - using thread class loader
|
||||||
|
final ClassLoader currentThreadClassLoader = Thread.currentThread().getContextClassLoader();
|
||||||
|
if ((currentThreadClassLoader != null) && (currentThreadClassLoader != classLoader)) {
|
||||||
|
resourceUrl = currentThreadClassLoader.getResource(resourceName);
|
||||||
|
if (resourceUrl != null) {
|
||||||
|
return resourceUrl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// try #3 - using caller classloader, similar as Class.forName()
|
||||||
|
val callerClass = ClassUtil.getCallerClass(2);
|
||||||
|
val callerClassLoader = callerClass.getClassLoader();
|
||||||
|
|
||||||
|
if ((callerClassLoader != classLoader) && (callerClassLoader != currentThreadClassLoader)) {
|
||||||
|
resourceUrl = callerClassLoader.getResource(resourceName);
|
||||||
|
return resourceUrl;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getResourceAsString(final String resourceName) throws IOException {
|
||||||
|
final InputStream inputStream = getResourceAsStream(resourceName);
|
||||||
|
try {
|
||||||
|
final char[] data = IOUtil.readChars(inputStream);
|
||||||
|
return new String(data);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
IOUtil.close(inputStream);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens a resource of the specified name for reading.
|
||||||
|
* @see #getResourceAsStream(String, ClassLoader)
|
||||||
|
*/
|
||||||
|
public static InputStream getResourceAsStream(final String resourceName) throws IOException {
|
||||||
|
return getResourceAsStream(resourceName, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens a resource of the specified name for reading.
|
||||||
|
* @see #getResourceUrl(String, ClassLoader)
|
||||||
|
*/
|
||||||
|
public static InputStream getResourceAsStream(final String resourceName, final ClassLoader callingClass) throws IOException {
|
||||||
|
final URL url = getResourceUrl(resourceName, callingClass);
|
||||||
|
if (url != null) {
|
||||||
|
return url.openStream();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Opens a resource of the specified name for reading. Controls caching,
|
||||||
|
* that is important when the same jar is reloaded using custom classloader.
|
||||||
|
*/
|
||||||
|
public static InputStream getResourceAsStream(final String resourceName, final ClassLoader callingClass,
|
||||||
|
final boolean useCache) throws IOException {
|
||||||
|
final URL url = getResourceUrl(resourceName, callingClass);
|
||||||
|
if (url != null) {
|
||||||
|
final URLConnection urlConnection = url.openConnection();
|
||||||
|
urlConnection.setUseCaches(useCache);
|
||||||
|
return urlConnection.getInputStream();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user