From 8ecf08d5df4b80cb77fdd5f67b83132dd9bf4231 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A2=9C=E6=B4=AA=E6=AF=85?= Date: Mon, 17 Oct 2022 23:48:33 +0800 Subject: [PATCH] upgrade --- ext.gradle | 8 +-- .../build.gradle | 4 +- .../build.gradle | 8 +-- pigeon-spring-boot-starter/build.gradle | 22 +++---- .../starter/annotation/EnablePigeon.java | 12 ++-- .../spring/starter/annotation/Pigeon.java | 9 +-- .../PigeonStarterAutoConfiguration.java | 63 +++++++++++++++++++ pigeon-spring-starter-abstract/build.gradle | 34 +++++----- .../starter/register/PigeonFactoryBean.java | 5 +- pigeon-spring/build.gradle | 27 ++++---- pigeon/build.gradle | 34 +++++----- .../java/com/yhy/http/pigeon/utils/Utils.java | 2 +- 12 files changed, 142 insertions(+), 86 deletions(-) create mode 100644 pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/config/PigeonStarterAutoConfiguration.java diff --git a/ext.gradle b/ext.gradle index c88215d..7ebb4ee 100644 --- a/ext.gradle +++ b/ext.gradle @@ -8,22 +8,22 @@ ext { ] as LinkedHashMap pigeon = [ artifact : 'pigeon', - version : '1.5.7', + version : '1.5.8', description: 'Java http client with OkHttp3.' ] as LinkedHashMap spring = [ artifact : 'pigeon-spring', - version : '1.0.3', + version : '1.0.4', description: 'Spring supported.' ] as LinkedHashMap starterAbstract = [ artifact : 'pigeon-spring-starter-abstract', - version : '1.0.3', + version : '1.0.4', description: 'Spring boot supported abstractly.' ] as LinkedHashMap starter = [ artifact : 'pigeon-spring-boot-starter', - version : '1.2.4', + version : '1.2.5', description: 'Spring boot starter.' ] as LinkedHashMap starterSimple = [ diff --git a/pigeon-spring-boot-starter-simple-api/build.gradle b/pigeon-spring-boot-starter-simple-api/build.gradle index f81d371..10fd1ef 100644 --- a/pigeon-spring-boot-starter-simple-api/build.gradle +++ b/pigeon-spring-boot-starter-simple-api/build.gradle @@ -25,8 +25,8 @@ dependencies { compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0' } test { diff --git a/pigeon-spring-boot-starter-simple/build.gradle b/pigeon-spring-boot-starter-simple/build.gradle index 4f4fa63..01cefb1 100644 --- a/pigeon-spring-boot-starter-simple/build.gradle +++ b/pigeon-spring-boot-starter-simple/build.gradle @@ -22,14 +22,14 @@ dependencies { implementation 'org.springframework.boot:spring-boot-autoconfigure' implementation 'com.tengyun.saas:lib-util:1.0.0-SNAPSHOT' -// implementation project(':pigeon-spring-boot-starter') - implementation "${rootConfig.group}:${rootConfig.starter.artifact}:${rootConfig.starter.version}" + implementation project(':pigeon-spring-boot-starter') +// implementation "${rootConfig.group}:${rootConfig.starter.artifact}:${rootConfig.starter.version}" compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.7.0' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.7.0' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0' } test { diff --git a/pigeon-spring-boot-starter/build.gradle b/pigeon-spring-boot-starter/build.gradle index 654062c..e44c7a8 100644 --- a/pigeon-spring-boot-starter/build.gradle +++ b/pigeon-spring-boot-starter/build.gradle @@ -28,11 +28,11 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-autoconfigure' -// api project(':pigeon-spring-starter-abstract') - api "${rootConfig.group}:${rootConfig.starterAbstract.artifact}:${rootConfig.starterAbstract.version}" + api project(':pigeon-spring-starter-abstract') +// api "${rootConfig.group}:${rootConfig.starterAbstract.artifact}:${rootConfig.starterAbstract.version}" - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0' } test { @@ -165,14 +165,14 @@ publishing { def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/" url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl -// credentials { -// username = ossrhUsername -// password = ossrhPassword -// } + credentials { + username = ossrhUsername + password = ossrhPassword + } } } } -//signing { -// sign publishing.publications.mavenJava -//} \ No newline at end of file +signing { + sign publishing.publications.mavenJava +} \ No newline at end of file diff --git a/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/annotation/EnablePigeon.java b/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/annotation/EnablePigeon.java index bbfa308..cdcf86d 100644 --- a/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/annotation/EnablePigeon.java +++ b/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/annotation/EnablePigeon.java @@ -1,10 +1,8 @@ package com.yhy.http.pigeon.spring.starter.annotation; -import com.yhy.http.pigeon.internal.ssl.VoidSSLHostnameVerifier; -import com.yhy.http.pigeon.internal.ssl.VoidSSLSocketFactory; -import com.yhy.http.pigeon.internal.ssl.VoidSSLX509TrustManager; import com.yhy.http.pigeon.spring.delegate.SpringHeaderDelegate; import com.yhy.http.pigeon.spring.delegate.SpringInterceptorDelegate; +import com.yhy.http.pigeon.spring.starter.config.PigeonStarterAutoConfiguration; import com.yhy.http.pigeon.spring.starter.register.PigeonAutoRegister; import org.springframework.context.annotation.Import; import org.springframework.core.annotation.AliasFor; @@ -27,7 +25,7 @@ @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited -@Import({PigeonAutoRegister.class, SpringHeaderDelegate.class, SpringInterceptorDelegate.class}) +@Import({PigeonAutoRegister.class, SpringHeaderDelegate.class, SpringInterceptorDelegate.class, PigeonStarterAutoConfiguration.class}) public @interface EnablePigeon { @AliasFor("basePackages") @@ -52,9 +50,9 @@ String shouldInterceptorDelegate() default "true"; - Class sslSocketFactory() default VoidSSLSocketFactory.class; + Class sslSocketFactory() default SSLSocketFactory.class; - Class sslTrustManager() default VoidSSLX509TrustManager.class; + Class sslTrustManager() default X509TrustManager.class; - Class sslHostnameVerifier() default VoidSSLHostnameVerifier.class; + Class sslHostnameVerifier() default HostnameVerifier.class; } diff --git a/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/annotation/Pigeon.java b/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/annotation/Pigeon.java index 5478c4d..485e3fa 100644 --- a/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/annotation/Pigeon.java +++ b/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/annotation/Pigeon.java @@ -1,8 +1,5 @@ package com.yhy.http.pigeon.spring.starter.annotation; -import com.yhy.http.pigeon.internal.ssl.VoidSSLHostnameVerifier; -import com.yhy.http.pigeon.internal.ssl.VoidSSLSocketFactory; -import com.yhy.http.pigeon.internal.ssl.VoidSSLX509TrustManager; import org.springframework.core.annotation.AliasFor; import org.springframework.stereotype.Component; @@ -51,9 +48,9 @@ String shouldInterceptorDelegate() default "true"; - Class sslSocketFactory() default VoidSSLSocketFactory.class; + Class sslSocketFactory() default SSLSocketFactory.class; - Class sslTrustManager() default VoidSSLX509TrustManager.class; + Class sslTrustManager() default X509TrustManager.class; - Class sslHostnameVerifier() default VoidSSLHostnameVerifier.class; + Class sslHostnameVerifier() default HostnameVerifier.class; } diff --git a/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/config/PigeonStarterAutoConfiguration.java b/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/config/PigeonStarterAutoConfiguration.java new file mode 100644 index 0000000..f133ce8 --- /dev/null +++ b/pigeon-spring-boot-starter/src/main/java/com/yhy/http/pigeon/spring/starter/config/PigeonStarterAutoConfiguration.java @@ -0,0 +1,63 @@ +package com.yhy.http.pigeon.spring.starter.config; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import javax.net.ssl.*; +import java.security.KeyManagementException; +import java.security.NoSuchAlgorithmException; +import java.security.SecureRandom; +import java.security.cert.CertificateException; +import java.security.cert.X509Certificate; + +/** + * Created on 2022-10-17 23:32 + * + * @author 颜洪毅 + * @version 1.0.0 + * @since 1.0.0 + */ +@Configuration +@SuppressWarnings("SpringFacetCodeInspection") +public class PigeonStarterAutoConfiguration { + + @Bean + @ConditionalOnMissingBean + public SSLSocketFactory sslSocketFactory(TrustManager manager) { + SSLSocketFactory socketFactory = null; + try { + SSLContext sslContext = SSLContext.getInstance("SSL"); + sslContext.init(null, new TrustManager[]{manager}, new SecureRandom()); + socketFactory = sslContext.getSocketFactory(); + } catch (NoSuchAlgorithmException | KeyManagementException e) { + e.printStackTrace(); + } + return socketFactory; + } + + @Bean + @ConditionalOnMissingBean + public X509TrustManager x509TrustManager() { + return new X509TrustManager() { + @Override + public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException { + } + + @Override + public X509Certificate[] getAcceptedIssuers() { + return new X509Certificate[0]; + } + }; + } + + @Bean + @ConditionalOnMissingBean + public HostnameVerifier getHostnameVerifier() { + return (s, sslSession) -> true; + } +} diff --git a/pigeon-spring-starter-abstract/build.gradle b/pigeon-spring-starter-abstract/build.gradle index 2262ea6..3f1cadd 100644 --- a/pigeon-spring-starter-abstract/build.gradle +++ b/pigeon-spring-starter-abstract/build.gradle @@ -23,19 +23,19 @@ sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 dependencies { - implementation 'org.springframework:spring-core:5.3.13' - implementation 'org.springframework:spring-context:5.3.13' - implementation 'org.springframework:spring-beans:5.3.13' + implementation 'org.springframework:spring-core:5.3.23' + implementation 'org.springframework:spring-context:5.3.23' + implementation 'org.springframework:spring-beans:5.3.23' -// api project(':pigeon') -// api project(':pigeon-spring') - api "${rootConfig.group}:${rootConfig.pigeon.artifact}:${rootConfig.pigeon.version}" - api "${rootConfig.group}:${rootConfig.spring.artifact}:${rootConfig.spring.version}" + api project(':pigeon') + api project(':pigeon-spring') +// api "${rootConfig.group}:${rootConfig.pigeon.artifact}:${rootConfig.pigeon.version}" +// api "${rootConfig.group}:${rootConfig.spring.artifact}:${rootConfig.spring.version}" - implementation 'org.slf4j:slf4j-api:2.0.0-alpha1' + implementation 'org.slf4j:slf4j-api:2.0.3' - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0' } test { @@ -168,14 +168,14 @@ publishing { def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/" url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl -// credentials { -// username = ossrhUsername -// password = ossrhPassword -// } + credentials { + username = ossrhUsername + password = ossrhPassword + } } } } -//signing { -// sign publishing.publications.mavenJava -//} \ No newline at end of file +signing { + sign publishing.publications.mavenJava +} \ No newline at end of file diff --git a/pigeon-spring-starter-abstract/src/main/java/com/yhy/http/pigeon/spring/starter/register/PigeonFactoryBean.java b/pigeon-spring-starter-abstract/src/main/java/com/yhy/http/pigeon/spring/starter/register/PigeonFactoryBean.java index 828cfaa..155f467 100644 --- a/pigeon-spring-starter-abstract/src/main/java/com/yhy/http/pigeon/spring/starter/register/PigeonFactoryBean.java +++ b/pigeon-spring-starter-abstract/src/main/java/com/yhy/http/pigeon/spring/starter/register/PigeonFactoryBean.java @@ -2,9 +2,6 @@ import com.yhy.http.pigeon.Pigeon; import com.yhy.http.pigeon.annotation.Header; -import com.yhy.http.pigeon.internal.ssl.VoidSSLHostnameVerifier; -import com.yhy.http.pigeon.internal.ssl.VoidSSLSocketFactory; -import com.yhy.http.pigeon.internal.ssl.VoidSSLX509TrustManager; import com.yhy.http.pigeon.spring.converter.SpringConverter; import com.yhy.http.pigeon.spring.delegate.SpringHeaderDelegate; import com.yhy.http.pigeon.spring.delegate.SpringInterceptorDelegate; @@ -139,7 +136,7 @@ T getTarget() { if (timeout > 0) { builder.timeout(timeout); } - if (sslSocketFactory != null && sslSocketFactory != VoidSSLSocketFactory.class && sslTrustManager != null && sslTrustManager != VoidSSLX509TrustManager.class && sslHostnameVerifier != null && sslHostnameVerifier != VoidSSLHostnameVerifier.class) { + if (sslSocketFactory != null && sslTrustManager != null && sslHostnameVerifier != null) { builder.https(getInstance(sslSocketFactory), getInstance(sslTrustManager), getInstance(sslHostnameVerifier)); } diff --git a/pigeon-spring/build.gradle b/pigeon-spring/build.gradle index 5fb001a..ca55716 100644 --- a/pigeon-spring/build.gradle +++ b/pigeon-spring/build.gradle @@ -23,14 +23,15 @@ sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 dependencies { - implementation 'org.springframework:spring-core:5.3.13' - implementation 'org.springframework:spring-context:5.3.13' - implementation 'org.springframework:spring-beans:5.3.13' + implementation 'org.springframework:spring-core:5.3.23' + implementation 'org.springframework:spring-context:5.3.23' + implementation 'org.springframework:spring-beans:5.3.23' - api "${rootConfig.group}:${rootConfig.pigeon.artifact}:${rootConfig.pigeon.version}" + api project(':pigeon') +// api "${rootConfig.group}:${rootConfig.pigeon.artifact}:${rootConfig.pigeon.version}" - testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1' - testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1' + testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.0' + testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.9.0' } test { @@ -163,14 +164,14 @@ publishing { def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/" url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl -// credentials { -// username = ossrhUsername -// password = ossrhPassword -// } + credentials { + username = ossrhUsername + password = ossrhPassword + } } } } -//signing { -// sign publishing.publications.mavenJava -//} \ No newline at end of file +signing { + sign publishing.publications.mavenJava +} \ No newline at end of file diff --git a/pigeon/build.gradle b/pigeon/build.gradle index 54ae68c..4d90a84 100644 --- a/pigeon/build.gradle +++ b/pigeon/build.gradle @@ -23,17 +23,17 @@ sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 dependencies { - testImplementation group: 'junit', name: 'junit', version: '4.12' - api 'com.squareup.okhttp3:okhttp:5.0.0-alpha.2' - api 'com.fasterxml.jackson.core:jackson-core:2.13.0' - api 'com.fasterxml.jackson.core:jackson-databind:2.13.0' - api 'com.google.code.gson:gson:2.8.9' - api 'com.google.guava:guava:31.0.1-jre' - api 'org.jetbrains:annotations:22.0.0' - implementation 'org.slf4j:slf4j-api:2.0.0-alpha1' - compileOnly 'org.jetbrains:annotations:22.0.0' - testImplementation 'org.slf4j:slf4j-simple:2.0.0-alpha1' + api 'com.fasterxml.jackson.core:jackson-core:2.13.4' + api 'com.fasterxml.jackson.core:jackson-databind:2.14.0-rc1' + api 'com.google.code.gson:gson:2.9.0' + api 'com.google.guava:guava:31.1-jre' + api 'org.jetbrains:annotations:23.0.0' + + implementation 'org.slf4j:slf4j-api:2.0.3' + + testImplementation 'junit:junit:4.13.2' + testImplementation 'org.slf4j:slf4j-simple:2.0.3' } tasks.withType(JavaCompile) { @@ -174,14 +174,14 @@ publishing { def releasesRepoUrl = "https://oss.sonatype.org/service/local/staging/deploy/maven2/" def snapshotsRepoUrl = "https://oss.sonatype.org/content/repositories/snapshots/" url = version.endsWith('SNAPSHOT') ? snapshotsRepoUrl : releasesRepoUrl -// credentials { -// username = ossrhUsername -// password = ossrhPassword -// } + credentials { + username = ossrhUsername + password = ossrhPassword + } } } } -//signing { -// sign publishing.publications.mavenJava -//} \ No newline at end of file +signing { + sign publishing.publications.mavenJava +} \ No newline at end of file diff --git a/pigeon/src/main/java/com/yhy/http/pigeon/utils/Utils.java b/pigeon/src/main/java/com/yhy/http/pigeon/utils/Utils.java index 230a6e7..3987fc1 100644 --- a/pigeon/src/main/java/com/yhy/http/pigeon/utils/Utils.java +++ b/pigeon/src/main/java/com/yhy/http/pigeon/utils/Utils.java @@ -18,7 +18,7 @@ */ public class Utils { private static final Type[] EMPTY_TYPE_ARRAY = new Type[0]; - public final static String VERSION = "1.5.7"; + public final static String VERSION = "1.5.8"; public static boolean isEmpty(Object object) { if (null == object) return true;