mirror of
				https://gitee.com/binary/weixin-java-tools.git
				synced 2025-10-31 18:46:10 +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
	 Binary Wang
					Binary Wang