mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-11-01 00:46:54 +08:00 
			
		
		
		
	🎨 优化代码,去掉jodd相关接口引用
This commit is contained in:
		| @@ -1,14 +1,11 @@ | ||||
| package com.github.binarywang.wxpay.config; | ||||
|  | ||||
| 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.auth.*; | ||||
| import com.github.binarywang.wxpay.v3.util.PemUtils; | ||||
| import jodd.util.ResourcesUtil; | ||||
| import lombok.Data; | ||||
| import lombok.EqualsAndHashCode; | ||||
| import lombok.SneakyThrows; | ||||
| import lombok.ToString; | ||||
| import lombok.*; | ||||
| import org.apache.commons.io.IOUtils; | ||||
| import org.apache.commons.lang3.RegExUtils; | ||||
| import org.apache.commons.lang3.StringUtils; | ||||
| @@ -239,10 +236,10 @@ public class WxPayConfig { | ||||
|    * @author doger.wang | ||||
|    **/ | ||||
|   public CloseableHttpClient initApiV3HttpClient() throws WxPayException { | ||||
|     String privateKeyPath = this.getPrivateKeyPath(); | ||||
|     String privateCertPath = this.getPrivateCertPath(); | ||||
|     String serialNo = this.getCertSerialNo(); | ||||
|     String apiV3Key = this.getApiV3Key(); | ||||
|     val privateKeyPath = this.getPrivateKeyPath(); | ||||
|     val privateCertPath = this.getPrivateCertPath(); | ||||
|     val serialNo = this.getCertSerialNo(); | ||||
|     val apiV3Key = this.getApiV3Key(); | ||||
|     if (StringUtils.isBlank(privateKeyPath)) { | ||||
|       throw new WxPayException("请确保privateKeyPath已设置"); | ||||
|     } | ||||
| @@ -301,7 +298,7 @@ public class WxPayConfig { | ||||
|         path = "/" + path; | ||||
|       } | ||||
|       try { | ||||
|         inputStream = ResourcesUtil.getResourceAsStream(path); | ||||
|         inputStream = ResourcesUtils.getResourceAsStream(path); | ||||
|         if (inputStream == null) { | ||||
|           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
	 Binary Wang
					Binary Wang