diff --git a/README.md b/README.md index 5149ee4..7d19ecf 100644 --- a/README.md +++ b/README.md @@ -17,5 +17,4 @@ axzo-framework-commons是常用基础类库和框架实践。包含子模块如 - axzo-framework-math: 封装科学计算相关工具 - axzo-framework-web: 封装spring-web - axzo-framework-webmvc: 封装spring-webmvc -- axzo-framework-dependencies: 管理所有依赖 - . ... diff --git a/axzo-common-autoconfigure/pom.xml b/axzo-common-autoconfigure/pom.xml index 1649ad3..20704d6 100644 --- a/axzo-common-autoconfigure/pom.xml +++ b/axzo-common-autoconfigure/pom.xml @@ -95,5 +95,4 @@ spring-security-web - \ No newline at end of file diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/data/IdAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/data/IdAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/data/IdAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/data/IdAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java similarity index 92% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java index 462c833..aede591 100644 --- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java +++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/ApplicationReadyInfoAutoConfiguration.java @@ -84,6 +84,11 @@ public class ApplicationReadyInfoAutoConfiguration { s.append("\tSwaggerUI:\t\t").append(protocol).append("://").append(ip) .append(":").append(port).append("/swagger-ui.html\n"); } + String knife4jPageLocation = "classpath:META-INF/resources/doc.html"; + if (Seq.of(activeProfiles).contains("swagger") && Resources.exists(knife4jPageLocation)) { + s.append("\tSwaggerUI:\t\t").append(protocol).append("://").append(ip) + .append(":").append(port).append("/doc.html\n"); + } } s.append("\tProfile(s):\t\t").append(Arrays.toString(activeProfiles)).append("\n"); s.append("----------------------------------------------------------------"); diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/BuildInConfigOverridePostProcessor.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/BuildInConfigOverridePostProcessor.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/env/BuildInConfigOverridePostProcessor.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/env/BuildInConfigOverridePostProcessor.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonCustomer.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonCustomer.java similarity index 81% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonCustomer.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonCustomer.java index b37f6b7..d6945f7 100644 --- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonCustomer.java +++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonCustomer.java @@ -1,17 +1,18 @@ package cn.axzo.framework.autoconfigure.jackson; +import static com.fasterxml.jackson.annotation.JsonInclude.Include.USE_DEFAULTS; +import static com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER; +import static com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_FLOAT_AS_INT; +import static com.fasterxml.jackson.databind.DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY; +import static com.fasterxml.jackson.databind.DeserializationFeature.READ_DATE_TIMESTAMPS_AS_NANOSECONDS; +import static com.fasterxml.jackson.databind.MapperFeature.PROPAGATE_TRANSIENT_MARKER; +import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS; + +import java.util.TimeZone; import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer; import org.springframework.core.Ordered; import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; -import java.util.TimeZone; - -import static com.fasterxml.jackson.annotation.JsonInclude.Include.NON_ABSENT; -import static com.fasterxml.jackson.core.JsonParser.Feature.ALLOW_BACKSLASH_ESCAPING_ANY_CHARACTER; -import static com.fasterxml.jackson.databind.DeserializationFeature.*; -import static com.fasterxml.jackson.databind.MapperFeature.PROPAGATE_TRANSIENT_MARKER; -import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATE_TIMESTAMPS_AS_NANOSECONDS; - /** * @Description * @Author liyong.tian @@ -22,7 +23,7 @@ public class JacksonCustomer implements Jackson2ObjectMapperBuilderCustomizer, O @Override public void customize(Jackson2ObjectMapperBuilder builder) { - builder.serializationInclusion(NON_ABSENT); + builder.serializationInclusion(USE_DEFAULTS); builder.timeZone(TimeZone.getDefault()); // disable diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonModuleAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonModuleAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/jackson/JacksonModuleAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/jackson/JacksonModuleAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/package-info.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/package-info.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/package-info.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/package-info.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/MethodValidationAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/MethodValidationAutoConfiguration.java similarity index 73% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/MethodValidationAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/MethodValidationAutoConfiguration.java index 8259292..7886fe9 100644 --- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/MethodValidationAutoConfiguration.java +++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/MethodValidationAutoConfiguration.java @@ -1,11 +1,13 @@ package cn.axzo.framework.autoconfigure.validation; import lombok.val; +import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnResource; import org.springframework.boot.autoconfigure.validation.ValidationAutoConfiguration; +import org.springframework.boot.validation.beanvalidation.MethodValidationExcludeFilter; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; @@ -28,7 +30,10 @@ public class MethodValidationAutoConfiguration { @Bean @ConditionalOnMissingBean public MethodValidationPostProcessor methodValidationPostProcessor(Environment environment, Validator validator) { - val processor = ValidationAutoConfiguration.methodValidationPostProcessor(environment, validator, null); + MethodValidationPostProcessor processor = new MethodValidationPostProcessor(); + boolean proxyTargetClass = (Boolean)environment.getProperty("spring.aop.proxy-target-class", Boolean.class, true); + processor.setProxyTargetClass(proxyTargetClass); + processor.setValidator(validator); processor.setBeforeExistingAdvisors(true); return processor; } diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/SpringValidatorAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/SpringValidatorAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/validation/SpringValidatorAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/validation/SpringValidatorAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/FilterAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/FilterAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/FilterAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/FilterAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/PageWebAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/PageWebAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/PageWebAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/PageWebAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/ApiResultDynamicBodyExtractor.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/ApiResultDynamicBodyExtractor.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/ApiResultDynamicBodyExtractor.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/ApiResultDynamicBodyExtractor.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/BodyAdviceAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/BodyAdviceAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/BodyAdviceAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/BodyAdviceAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/DynamicBodyExtractor.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/DynamicBodyExtractor.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/DynamicBodyExtractor.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/DynamicBodyExtractor.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/DynamicResponseBodyAdvice.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/DynamicResponseBodyAdvice.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/DynamicResponseBodyAdvice.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/DynamicResponseBodyAdvice.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/VerboseResultAdvice.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/VerboseResultAdvice.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/advice/VerboseResultAdvice.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/advice/VerboseResultAdvice.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/context/WebMvcAwareAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/context/WebMvcAwareAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/context/WebMvcAwareAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/context/WebMvcAwareAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/cors/CorsAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/cors/CorsAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/cors/CorsAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/cors/CorsAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/cors/CorsProperties.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/cors/CorsProperties.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/cors/CorsProperties.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/cors/CorsProperties.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/ExceptionHandlerAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/ExceptionHandlerAutoConfiguration.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/ExceptionHandlerAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/ExceptionHandlerAutoConfiguration.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/RespErrorCodeMappingProperties.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/RespErrorCodeMappingProperties.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/RespErrorCodeMappingProperties.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/RespErrorCodeMappingProperties.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/AbstractExceptionApiResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/AbstractExceptionApiResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/AbstractExceptionApiResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/AbstractExceptionApiResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/ExceptionApiResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/ExceptionApiResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/ExceptionApiResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/ExceptionApiResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/ExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/ExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/ExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/ExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/AccessDeniedExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/AccessDeniedExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/AccessDeniedExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/AccessDeniedExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ClientRegistrationExceptionReturnHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ClientRegistrationExceptionReturnHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ClientRegistrationExceptionReturnHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ClientRegistrationExceptionReturnHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ConcurrencyFailureExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ConcurrencyFailureExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ConcurrencyFailureExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ConcurrencyFailureExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/HttpClientErrorExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/HttpClientErrorExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/HttpClientErrorExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/HttpClientErrorExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/OAuth2ExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/OAuth2ExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/OAuth2ExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/OAuth2ExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/PageRequestExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/PageRequestExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/PageRequestExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/PageRequestExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/RequestRejectedExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/RequestRejectedExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/RequestRejectedExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/RequestRejectedExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/SpringValidatorExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/SpringValidatorExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/SpringValidatorExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/SpringValidatorExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/StandardExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/StandardExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/StandardExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/StandardExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ValidationExceptionResultHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ValidationExceptionResultHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/handler/internal/ValidationExceptionResultHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/handler/internal/ValidationExceptionResultHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/HttpStatusResolver.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/HttpStatusResolver.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/HttpStatusResolver.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/HttpStatusResolver.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/internal/FileTooLargeExceptionHttpStatusResolver.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/internal/FileTooLargeExceptionHttpStatusResolver.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/internal/FileTooLargeExceptionHttpStatusResolver.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/internal/FileTooLargeExceptionHttpStatusResolver.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/internal/RequestRejectedExceptionHttpStatusResolver.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/internal/RequestRejectedExceptionHttpStatusResolver.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/resolver/internal/RequestRejectedExceptionHttpStatusResolver.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/resolver/internal/RequestRejectedExceptionHttpStatusResolver.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/GlobalErrorController.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/GlobalErrorController.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/GlobalErrorController.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/GlobalErrorController.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/GlobalExceptionHandler.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/GlobalExceptionHandler.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/GlobalExceptionHandler.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/GlobalExceptionHandler.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/Requests.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/Requests.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/exception/support/Requests.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/exception/support/Requests.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/AxzoProperties.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/AxzoProperties.java similarity index 60% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/AxzoProperties.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/AxzoProperties.java index 52d9b66..7e31f5a 100644 --- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/AxzoProperties.java +++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/AxzoProperties.java @@ -16,8 +16,6 @@ public class AxzoProperties { private Swagger swagger; - private YApi yApi; - @Data public static class Swagger { private boolean enabled = false; @@ -35,32 +33,4 @@ public class AxzoProperties { private String host = null; private String[] protocols = new String[0]; } - - @Data - public static class YApi { - /** - * 是否同步YApi - */ - public boolean enabled = false; - - /** - * 数据同步方式 normal"(普通模式) , "good"(智能合并), "merge"(完全覆盖) 三种模式 - */ - private String merge = "normal"; - - /** - * 对应文件夹的 token - */ - private String token; - - /** - * json 数据来源(代替 json 字符串)。 - */ - private String url; - - /** - * 组名称,一般 默认 default - */ - private String groupName = "default"; - } } diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/SwaggerAutoConfiguration.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/SwaggerAutoConfiguration.java similarity index 87% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/SwaggerAutoConfiguration.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/SwaggerAutoConfiguration.java index 054860c..e6cf128 100644 --- a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/SwaggerAutoConfiguration.java +++ b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/SwaggerAutoConfiguration.java @@ -7,9 +7,9 @@ import cn.axzo.framework.domain.web.result.ApiListResult; import cn.axzo.framework.domain.web.result.ApiPageResult; import cn.axzo.framework.domain.web.result.ApiResult; import cn.axzo.framework.context.Placeholders; -import cn.axzo.framework.web.http.ApiEntity; -import cn.axzo.framework.web.http.ApiListEntity; -import cn.axzo.framework.web.http.ApiPageEntity; +import cn.axzo.framework.web.http.ApiResponse; +import cn.axzo.framework.web.http.ApiListResponse; +import cn.axzo.framework.web.http.ApiPageResponse; import com.fasterxml.classmate.TypeResolver; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -124,35 +124,35 @@ public class SwaggerAutoConfiguration { ); } - @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiEntity") + @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiResponse") @Bean - public AlternateTypeRule apiEntityAlternateTypeRule(TypeResolver typeResolver) { + public AlternateTypeRule apiResponseAlternateTypeRule(TypeResolver typeResolver) { return AlternateTypeRules.newRule( - typeResolver.resolve(ApiEntity.class, WildcardType.class), + typeResolver.resolve(ApiResponse.class, WildcardType.class), typeResolver.resolve(ApiResult.class, WildcardType.class) ); } - @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiEntity") + @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiResponse") @Bean - public AlternateTypeRule callableApiEntityAlternateTypeRule(TypeResolver typeResolver) { + public AlternateTypeRule callableApiResponseAlternateTypeRule(TypeResolver typeResolver) { return newRule( - typeResolver.resolve(Callable.class, typeResolver.resolve(ApiEntity.class, WildcardType.class)), + typeResolver.resolve(Callable.class, typeResolver.resolve(ApiResponse.class, WildcardType.class)), typeResolver.resolve(ApiResult.class, WildcardType.class) ); } - @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiListEntity") + @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiListResponse") @Bean - public AlternateTypeRule apiListEntityAlternateTypeRule(TypeResolver typeResolver) { - return newRule(typeResolver.resolve(ApiListEntity.class, WildcardType.class), + public AlternateTypeRule apiListResponseAlternateTypeRule(TypeResolver typeResolver) { + return newRule(typeResolver.resolve(ApiListResponse.class, WildcardType.class), typeResolver.resolve(ApiListResult.class, WildcardType.class)); } - @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiPageEntity") + @ConditionalOnClass(name = "cn.axzo.framework.web.http.ApiPageResponse") @Bean - public AlternateTypeRule apiPageEntityAlternateTypeRule(TypeResolver typeResolver) { - return newRule(typeResolver.resolve(ApiPageEntity.class, WildcardType.class), + public AlternateTypeRule apiPageResponseAlternateTypeRule(TypeResolver typeResolver) { + return newRule(typeResolver.resolve(ApiPageResponse.class, WildcardType.class), typeResolver.resolve(ApiPageResult.class, WildcardType.class)); } diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/BuildInSwaggerCustomizer.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/BuildInSwaggerCustomizer.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/BuildInSwaggerCustomizer.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/BuildInSwaggerCustomizer.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/SecuritySwaggerCustomizer.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/SecuritySwaggerCustomizer.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/SecuritySwaggerCustomizer.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/SecuritySwaggerCustomizer.java diff --git a/axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/SwaggerCustomizer.java b/axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/SwaggerCustomizer.java similarity index 100% rename from axzo-common-autoconfigure/src/main/java/cn.axzo.framework.autoconfigure/web/swagger/customizer/SwaggerCustomizer.java rename to axzo-common-autoconfigure/src/main/java/cn/axzo/framework/autoconfigure/web/swagger/customizer/SwaggerCustomizer.java diff --git a/axzo-common-autoconfigure/src/main/resources/META-INF/spring.factories b/axzo-common-autoconfigure/src/main/resources/META-INF/spring.factories index ba1b083..8f9a464 100644 --- a/axzo-common-autoconfigure/src/main/resources/META-INF/spring.factories +++ b/axzo-common-autoconfigure/src/main/resources/META-INF/spring.factories @@ -11,8 +11,8 @@ cn.axzo.framework.autoconfigure.data.IdAutoConfiguration,\ cn.axzo.framework.autoconfigure.web.cors.CorsAutoConfiguration,\ cn.axzo.framework.autoconfigure.web.PageWebAutoConfiguration,\ cn.axzo.framework.autoconfigure.web.exception.ExceptionHandlerAutoConfiguration,\ -# cn.axzo.framework.autoconfigure.web.swagger.SwaggerAutoConfiguration,\ cn.axzo.framework.autoconfigure.validation.SpringValidatorAutoConfiguration,\ cn.axzo.framework.autoconfigure.web.advice.BodyAdviceAutoConfiguration,\ cn.axzo.framework.autoconfigure.web.FilterAutoConfiguration,\ cn.axzo.framework.autoconfigure.web.context.WebMvcAwareAutoConfiguration +# cn.axzo.framework.autoconfigure.web.swagger.SwaggerAutoConfiguration,\ diff --git a/axzo-common-clients/feign-starter/pom.xml b/axzo-common-clients/feign-starter/pom.xml new file mode 100644 index 0000000..8062c81 --- /dev/null +++ b/axzo-common-clients/feign-starter/pom.xml @@ -0,0 +1,65 @@ + + + 4.0.0 + + + axzo-common-clients + cn.axzo.framework.client + 1.0.0-SNAPSHOT + + + feign-starter + Axzo Common Client Feign Starter + + + + + cn.axzo.framework + axzo-common-domain + + + cn.axzo.framework.jackson + jackson-starter + + + io.github.openfeign + feign-core + + + io.github.openfeign + feign-slf4j + + + io.github.openfeign + feign-hystrix + + + io.github.openfeign + feign-okhttp + + + com.squareup.okhttp3 + okhttp + + + + + com.squareup.okhttp3 + okhttp + + + io.github.openfeign.form + feign-form + + + + + io.github.openfeign.form + feign-form-spring + true + + + + \ No newline at end of file diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/FeignFallback.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/FeignFallback.java new file mode 100644 index 0000000..28ea106 --- /dev/null +++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/FeignFallback.java @@ -0,0 +1,64 @@ +package cn.axzo.framework.client.feign; + +import cn.axzo.framework.domain.web.ApiException; +import cn.axzo.framework.domain.web.code.IRespCode; +import cn.axzo.framework.domain.web.result.ApiListResult; +import cn.axzo.framework.domain.web.result.ApiPageResult; +import cn.axzo.framework.domain.web.result.ApiResult; +import lombok.Getter; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; + +import javax.annotation.Nullable; + +/** + * @author liyong.tian + * @since 2022/11/3 + */ +@RequiredArgsConstructor +@Getter +@Slf4j +public class FeignFallback { + + @Nullable + private final Throwable cause; + + private final IRespCode respCode; + + public ApiResult resp() { + if (cause != null) { + log.error("Enter feign fallback", cause); + if (cause instanceof ApiException) { + return ApiResult.err(((ApiException) cause).getCode(), cause.getMessage()); + } + return ApiResult.err(respCode, cause.getMessage()); + } + log.error("Enter feign fallback,no cause catch"); + return ApiResult.err(respCode); + } + + public ApiPageResult pageResp() { + if (cause != null) { + log.error("Enter feign fallback", cause); + if (cause instanceof ApiException) { + return ApiPageResult.err(((ApiException) cause).getCode(), cause.getMessage()); + } + return ApiPageResult.err(respCode, cause.getMessage()); + } + log.error("Enter feign fallback,no cause catch"); + + return ApiPageResult.err(respCode); + } + + public ApiListResult listResp() { + if (cause != null) { + log.error("Enter feign fallback", cause); + if (cause instanceof ApiException) { + return ApiListResult.err(((ApiException) cause).getCode(), cause.getMessage()); + } + return ApiListResult.err(respCode, cause.getMessage()); + } + log.error("Enter feign fallback,no cause catch"); + return ApiListResult.err(respCode); + } +} diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/decoder/ApiResultErrorDecoder.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/decoder/ApiResultErrorDecoder.java new file mode 100644 index 0000000..7cf339a --- /dev/null +++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/decoder/ApiResultErrorDecoder.java @@ -0,0 +1,64 @@ +package cn.axzo.framework.client.feign.decoder; + +import cn.axzo.framework.core.util.ClassUtil; +import cn.axzo.framework.domain.ServiceException; +import cn.axzo.framework.domain.web.ApiException; +import cn.axzo.framework.domain.web.ClientException; +import cn.axzo.framework.domain.web.code.IRespCode; +import cn.axzo.framework.domain.web.code.RespCode; +import cn.axzo.framework.domain.web.http.HttpStatus; +import cn.axzo.framework.domain.web.result.ApiResult; +import cn.axzo.framework.jackson.utility.JSON; +import feign.Response; +import feign.codec.ErrorDecoder; +import lombok.extern.slf4j.Slf4j; + +import static cn.axzo.framework.core.Constants.CLIENT_MARKER; +import static cn.axzo.framework.domain.web.code.BaseCode.NOT_FOUND; +import static java.lang.String.format; + +/** + * @author liyong.tian + * @since 2022/11/3 + */ +@Slf4j +public class ApiResultErrorDecoder implements ErrorDecoder { + + private static final boolean isHystrixPresent; + + static { + isHystrixPresent = ClassUtil.isPresent( + "com.netflix.hystrix.exception.HystrixBadRequestException", + ApiResultErrorDecoder.class.getClassLoader() + ); + } + + public ApiResultErrorDecoder() { + log.info(format("Add Feign ErrorDecoder: %s, isHystrixPresent: %s", "ApiResultErrorDecoder", isHystrixPresent)); + } + + @Override + public Exception decode(String methodKey, Response response) { + try { + HttpStatus status = HttpStatus.valueOf(response.status()); + if (status == HttpStatus.NOT_FOUND) { + return new ApiException("url[" + response.request().url() + "] not found", NOT_FOUND); + } + + ApiResult apiResult = JSON.parseObject(response.body().asInputStream(), ApiResult.class); + String code = apiResult.getCode(); + if (code == null) { + return new ServiceException("ApiResult code is null"); + } + + IRespCode respCode = new RespCode(code, apiResult.getMsg()); + if (isHystrixPresent && status.is4xxClientError()) { + return new ClientException(respCode); // 不熔断 + } + return new ApiException(respCode); + } catch (Exception e) { + log.error(CLIENT_MARKER, format("%s reading %s ", e.getMessage(), methodKey), e); + return e; + } + } +} diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/ClientDecorator.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/ClientDecorator.java new file mode 100644 index 0000000..2e84488 --- /dev/null +++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/ClientDecorator.java @@ -0,0 +1,29 @@ +package cn.axzo.framework.client.feign.logger; + +import feign.Client; +import feign.Request; +import feign.Response; + +import java.io.IOException; + +/** + * @author liyong.tian + * @since 2022/11/3 + */ +public class ClientDecorator implements Client { + + private final Client delegate; + + public ClientDecorator(Client delegate) { + this.delegate = delegate; + } + + @Override + public Response execute(Request request, Request.Options options) throws RequestIOException { + try { + return delegate.execute(request, options); + } catch (IOException e) { + throw new RequestIOException(request, e); + } + } +} diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/FeignLogger.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/FeignLogger.java new file mode 100644 index 0000000..c3b70d1 --- /dev/null +++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/FeignLogger.java @@ -0,0 +1,179 @@ +package cn.axzo.framework.client.feign.logger; + +import com.google.common.base.Joiner; +import cn.axzo.framework.domain.http.*; +import cn.axzo.framework.domain.web.http.HttpStatus; +import feign.Request; +import feign.Response; +import feign.Util; +import feign.slf4j.Slf4jLogger; +import lombok.val; +import org.javatuples.Pair; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.io.IOException; +import java.util.List; +import java.util.Objects; + +import static cn.axzo.framework.core.Constants.CLIENT_MARKER; +import static java.nio.charset.Charset.defaultCharset; +import static java.util.stream.Collectors.toList; +import static jodd.util.StringPool.*; + +/** + * @author liyong.tian + * @since 2022/11/2 + */ +@SuppressWarnings("WeakerAccess") +public class FeignLogger extends Slf4jLogger { + + private final Logger log; + + private final HttpLogFormatter formatter; + + public FeignLogger(Class clazz) { + this(clazz, JsonHttpLogFormatter.INSTANCE); + } + + public FeignLogger(Class clazz, HttpLogFormatter formatter) { + super(clazz); + this.log = LoggerFactory.getLogger(clazz); + if (formatter == null) { + this.formatter = JsonHttpLogFormatter.INSTANCE; + } else { + this.formatter = formatter; + } + } + + @Override + protected void log(String configKey, String format, Object... args) { + IllegalStateException exception = new IllegalStateException("this method may not be invoked"); + log.error("will not happen", exception); + throw exception; + } + + @Override + protected void logRequest(String configKey, Level logLevel, Request request) { + // do nothing + } + + @Override + protected IOException logIOException(String configKey, Level logLevel, IOException ioe, long elapsedTime) { + if (logLevel == Level.NONE || !(ioe instanceof RequestIOException)) { + //响应日志 + HttpResponseLog responseLog = _responseLog(configKey, ioe, elapsedTime); + + //打印响应日志 + log.error(CLIENT_MARKER, formatter.format(responseLog), ioe); + return ioe; + } + + Request request = ((RequestIOException) ioe).getRequest(); + + //请求日志 + HttpRequestLog requestLog = _requestLog(request); + + //响应日志 + HttpResponseLog responseLog = _responseLog(request.url(), ioe, elapsedTime); + + //打印完整的请求响应日志 + log.error(CLIENT_MARKER, formatter.format(requestLog, responseLog), ioe); + return ioe; + } + + @Override + protected void logRetry(String configKey, Level logLevel) { + log.info(CLIENT_MARKER, methodTag(configKey) + "---> RETRYING"); + } + + @Override + protected Response logAndRebufferResponse(String configKey, Level logLevel, Response response, long elapsedTime) + throws IOException { + if (logLevel == Level.NONE) { + return response; + } + + //请求日志 + val requestLog = _requestLog(response.request()); + + //响应日志 + val responsePair = _responseLog(response, elapsedTime); + + //打印完整的请求响应日志 + log.info(CLIENT_MARKER, formatter.format(requestLog, responsePair.getValue0())); + return responsePair.getValue1(); + } + + private HttpRequestLog _requestLog(Request request) { + Objects.requireNonNull(request, "request cannot be null"); + + val logBuilder = HttpRequestLog.builder(); + + //protocol + logBuilder.protocol("HTTP/1.1"); + + //method + logBuilder.method(request.method()); + + //url + logBuilder.url(request.url()); + + //headers + List requestHeaders = request.headers().entrySet().stream() + .map(entry -> entry.getKey() + COLON + SPACE + Joiner.on(COMMA + SPACE).join(entry.getValue())) + .collect(toList()); + logBuilder.headers(requestHeaders); + + //body + if (!HttpHeaderUtil.isMultipartRequest(requestHeaders)) { + logBuilder.body(request.body() == null ? null : new String(request.body())); + } + + return logBuilder.build(); + } + + private Pair _responseLog(Response response, long elapsedTime) throws IOException { + val logBuilder = HttpResponseLog.builder(); + + HttpStatus status = HttpStatus.valueOf(response.status()); + List responseHeaders = response.headers().entrySet().stream() + .map(entry -> entry.getKey() + COLON + SPACE + Joiner.on(COMMA + SPACE).join(entry.getValue())) + .collect(toList()); + //url + logBuilder.url(response.request().url()); + + //status + logBuilder.status(status.value()); + + //msg + logBuilder.msg(status.getReasonPhrase()); + + //headers + logBuilder.headers(responseHeaders); + + //tookMs + logBuilder.tookMs(elapsedTime); + + //body + boolean canReadBody = response.body() != null && !HttpHeaderUtil.isDownloadResponse(responseHeaders); + if (canReadBody) { + byte[] bodyBytes = Util.toByteArray(response.body().asInputStream()); + logBuilder.body(new String(bodyBytes, defaultCharset())); + //流只能读一次,需要把响应重新构造一次 + response = response.toBuilder().body(bodyBytes).build(); + } else { + logBuilder.body(EMPTY); + } + + return Pair.with(logBuilder.build(), response); + } + + private HttpResponseLog _responseLog(String url, IOException ioe, long elapsedTime) { + return HttpResponseLog.builder() + .url(url) + .tookMs(elapsedTime) + .errorMsg(ioe.getClass().getSimpleName() + ": " + ioe.getMessage()) + .build(); + } +} diff --git a/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/RequestIOException.java b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/RequestIOException.java new file mode 100644 index 0000000..38e96a6 --- /dev/null +++ b/axzo-common-clients/feign-starter/src/main/java/cn.axzo.framework.client.feign/logger/RequestIOException.java @@ -0,0 +1,24 @@ +package cn.axzo.framework.client.feign.logger; + +import feign.Request; +import lombok.Getter; + +import java.io.IOException; + +/** + * @author liyong.tian + * @since 2022/11/2 + */ +public class RequestIOException extends IOException { + + @Getter + private final Request request; + + private final IOException exception; + + public RequestIOException(Request request, IOException cause) { + super(cause instanceof RequestIOException ? ((RequestIOException) cause).exception : cause); + this.request = request; + this.exception = cause; + } +} diff --git a/axzo-common-clients/pom.xml b/axzo-common-clients/pom.xml index be6b81a..4ee445d 100644 --- a/axzo-common-clients/pom.xml +++ b/axzo-common-clients/pom.xml @@ -17,5 +17,6 @@ retrofit-starter + feign-starter \ No newline at end of file diff --git a/axzo-common-clients/retrofit-starter/src/main/java/cn/axzo/framework/client/retrofit/HttpLogInterceptor.java b/axzo-common-clients/retrofit-starter/src/main/java/cn/axzo/framework/client/retrofit/HttpLogInterceptor.java index 4de9a36..d2f0331 100644 --- a/axzo-common-clients/retrofit-starter/src/main/java/cn/axzo/framework/client/retrofit/HttpLogInterceptor.java +++ b/axzo-common-clients/retrofit-starter/src/main/java/cn/axzo/framework/client/retrofit/HttpLogInterceptor.java @@ -1,5 +1,6 @@ package cn.axzo.framework.client.retrofit; +import cn.axzo.framework.core.net.FilterUtil; import cn.axzo.framework.domain.http.*; import lombok.NonNull; import lombok.extern.slf4j.Slf4j; @@ -11,6 +12,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Objects; +import static cn.axzo.framework.core.Constants.CLIENT_MARKER; +import static java.lang.System.nanoTime; +import static java.util.concurrent.TimeUnit.NANOSECONDS; import static okhttp3.Protocol.HTTP_1_1; /** @@ -46,7 +50,33 @@ public class HttpLogInterceptor implements Interceptor { @Override @ParametersAreNonnullByDefault public Response intercept(Chain chain) throws IOException { - return null; + //0.判断该请求是否要打日志 + Request request = chain.request(); + if (FilterUtil.matchFiltersURL(request.url().encodedPath(), ignoreUrlPatterns)) { + return chain.proceed(request); + } + + // 1.请求日志 + HttpRequestLog requestLog = _requestLog(chain.connection(), request); + + // 2.发送请求, 接收响应 + long startNs = nanoTime(); + Response response; + try { + response = chain.proceed(request); + } catch (Exception e) { + // 3.异常响应日志 + long tookMs = NANOSECONDS.toMillis(nanoTime() - startNs); + HttpResponseLog responseLog = _responseLog(request, tookMs, e); + log.error(CLIENT_MARKER, formatter.format(requestLog, responseLog), e); + throw e; + } + + // 3.正常响应日志 + long tookMs = NANOSECONDS.toMillis(nanoTime() - startNs); + HttpResponseLog responseLog = _responseLog(response, tookMs); + log.info(CLIENT_MARKER, formatter.format(requestLog, responseLog)); + return response; } /** diff --git a/axzo-common-datas/axzo-data-mybatis-plus/pom.xml b/axzo-common-datas/axzo-data-mybatis-plus/pom.xml new file mode 100644 index 0000000..0aff5f7 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/pom.xml @@ -0,0 +1,49 @@ + + + 4.0.0 + + + axzo-common-datas + cn.axzo.framework.data + 1.0.0-SNAPSHOT + + + axzo-data-mybatis-plus + Axzo Common Data Mybatis Plus + + + + + org.springframework.boot + spring-boot-autoconfigure + + + + org.springframework + spring-context + + + org.springframework + spring-tx + + + + + com.baomidou + mybatis-plus-core + + + com.baomidou + mybatis-plus-extension + + + + + org.springframework.boot + spring-boot-configuration-processor + true + + + \ No newline at end of file diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java new file mode 100644 index 0000000..22ab002 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/EntityMetaObjectHandler.java @@ -0,0 +1,56 @@ +package cn.axzo.framework.data.mybatisplus.config; + +import cn.axzo.framework.data.mybatisplus.model.BaseEntity; +import cn.axzo.framework.data.mybatisplus.model.BaseOwnEntity; +import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; +import org.apache.ibatis.reflection.MetaObject; + +import java.util.Date; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 11:34 + * @Description: + */ +public class EntityMetaObjectHandler implements MetaObjectHandler { + + @Override + public void insertFill(MetaObject metaObject) { + Object entity = metaObject.getOriginalObject(); + if (entity instanceof BaseEntity) { + //默认有值不覆盖 + this.fillStrategy(metaObject, "createAt", new Date()); + this.fillStrategy(metaObject, "updateAt", new Date()); + } + + if (entity instanceof BaseOwnEntity) { + //默认有值不覆盖 + this.fillStrategy(metaObject, "createBy", getAcctId()); + this.fillStrategy(metaObject, "updateBy", getAcctId()); + } + } + + @Override + public void updateFill(MetaObject metaObject) { + Object entity = metaObject.getOriginalObject(); + if (entity instanceof BaseEntity) { + //强制覆盖 + this.setFieldValByName("updateAt", new Date(), metaObject); + } + + if (entity instanceof BaseOwnEntity) { + //强制覆盖 + this.setFieldValByName("updateBy", getAcctId(), metaObject); + } + } + + /** + * 获取当前用户账户id + * + * @return + */ + private Long getAcctId() { + return 1L; + } + +} diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java new file mode 100644 index 0000000..f364bee --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/config/MybatisPlusAutoConfiguration.java @@ -0,0 +1,30 @@ +package cn.axzo.framework.data.mybatisplus.config; + +import com.baomidou.mybatisplus.annotation.DbType; +import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; +import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 10:40 + * @Description: + */ +@EnableTransactionManagement +@Configuration +public class MybatisPlusAutoConfiguration { + + @Bean + public MybatisPlusInterceptor mybatisPlusInterceptor() { + MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); + interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); + return interceptor; + } + + @Bean + public EntityMetaObjectHandler EntityMetaObjectHandler () { + return new EntityMetaObjectHandler(); + } +} diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java new file mode 100644 index 0000000..c538d6b --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseDataEntity.java @@ -0,0 +1,12 @@ +package cn.axzo.framework.data.mybatisplus.model; + +import com.baomidou.mybatisplus.extension.activerecord.Model; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 10:29 + * @Description: 支持类 + */ +public abstract class BaseDataEntity > extends BaseEntity{ + +} diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java new file mode 100644 index 0000000..61e6653 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseEntity.java @@ -0,0 +1,41 @@ +package cn.axzo.framework.data.mybatisplus.model; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +import java.util.Date; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 10:26 + * @Description: 实体基础类 + */ +@Data +public abstract class BaseEntity> extends Model { + + @TableId(value = "id", type = IdType.AUTO) + private Long id; + + /** + * 是否删除:0否 1是 + */ + @TableField(value = "is_delete", fill = FieldFill.INSERT) + private Integer isDelete = 0; + + /** + * 创建时间 + */ + @TableField(value = "create_at", fill = FieldFill.INSERT) + private Date createAt; + + /** + * 修改时间 + */ + @TableField(value = "update_at", fill = FieldFill.INSERT_UPDATE) + private Date updateAt; +} + diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java new file mode 100644 index 0000000..9198296 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/model/BaseOwnEntity.java @@ -0,0 +1,27 @@ +package cn.axzo.framework.data.mybatisplus.model; + +import com.baomidou.mybatisplus.annotation.FieldFill; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.extension.activerecord.Model; +import lombok.Data; + +/** + * @Author: liyong.tian + * @Date: 2022/11/4 10:30 + * @Description: 支持类 + */ +@Data +public abstract class BaseOwnEntity> extends BaseDataEntity { + + /** + * 创建人 + */ + @TableField(fill = FieldFill.INSERT) + protected Long createBy; + + /** + * 修改人 + */ + @TableField(fill = FieldFill.UPDATE) + protected Long updateBy; +} diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java new file mode 100644 index 0000000..e8ecbca --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/java/cn/axzo/framework/data/mybatisplus/package-info.java @@ -0,0 +1 @@ +package cn.axzo.framework.data.mybatisplus; \ No newline at end of file diff --git a/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories b/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories new file mode 100644 index 0000000..19e86e6 --- /dev/null +++ b/axzo-common-datas/axzo-data-mybatis-plus/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +cn.axzo.framework.data.mybatisplus.config.MybatisPlusAutoConfiguration \ No newline at end of file diff --git a/axzo-common-datas/pom.xml b/axzo-common-datas/pom.xml new file mode 100644 index 0000000..79cf886 --- /dev/null +++ b/axzo-common-datas/pom.xml @@ -0,0 +1,21 @@ + + + 4.0.0 + + + axzo-framework-commons + cn.axzo.framework + 1.0.0-SNAPSHOT + + + cn.axzo.framework.data + axzo-common-datas + pom + Axzo Common Data Parent + + + axzo-data-mybatis-plus + + \ No newline at end of file diff --git a/axzo-common-dependencies/pom.xml b/axzo-common-dependencies/pom.xml deleted file mode 100644 index ff78714..0000000 --- a/axzo-common-dependencies/pom.xml +++ /dev/null @@ -1,120 +0,0 @@ - - - 4.0.0 - - - cn.axzo.infra - axzo-dependencies - 2.0.0-SNAPSHOT - - - - axzo-common-dependencies - 1.0.0-SNAPSHOT - pom - Axzo Common Dependencies - - - 1.0.0-SNAPSHOT - - - - - - - cn.axzo.framework - axzo-common-core - ${axzo.commons.version} - - - cn.axzo.framework - axzo-common-math - ${axzo.commons.version} - - - cn.axzo.framework - axzo-common-validator - ${axzo.commons.version} - - - cn.axzo.framework - axzo-common-domain - ${axzo.commons.version} - - - - cn.axzo.framework.framework - axzo-common-context - ${axzo.commons.version} - - - cn.axzo.framework - axzo-common-boot - ${axzo.commons.version} - - - cn.axzo.framework - axzo-common-web - ${axzo.commons.version} - - - cn.axzo.framework - axzo-common-webmvc - ${axzo.commons.version} - - - - - cn.axzo.framework.logging - log4j2-starter - ${axzo.commons.version} - - - cn.axzo.framework.logging - logback-starter - ${axzo.commons.version} - - - - - cn.axzo.framework.client - retrofit-starter - ${axzo.commons.version} - - - - - cn.axzo.framework.jackson - jackson-datatype-enumstd - ${axzo.commons.version} - - - cn.axzo.framework.jackson - jackson-datatype-fraction - ${axzo.commons.version} - - - cn.axzo.framework.jackson - jackson-datatype-period - ${axzo.commons.version} - - - cn.axzo.framework.jackson - jackson-datatype-string-trim - ${axzo.commons.version} - - - cn.axzo.framework.jackson - jackson-utility - ${axzo.commons.version} - - - cn.axzo.framework.jackson - jackson-starter - ${axzo.commons.version} - - - - \ No newline at end of file diff --git a/axzo-common-domain/pom.xml b/axzo-common-domain/pom.xml index b818aa2..cdda956 100644 --- a/axzo-common-domain/pom.xml +++ b/axzo-common-domain/pom.xml @@ -97,5 +97,10 @@ mybatis-plus-core provided + + com.baomidou + mybatis-plus-extension + provided + \ No newline at end of file diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/Page.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/Page.java index aae6f97..018fb70 100644 --- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/Page.java +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/Page.java @@ -1,6 +1,5 @@ package cn.axzo.framework.domain.page; - import javax.annotation.Nonnull; import javax.annotation.Nullable; import java.util.ArrayList; diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageImpl.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageImpl.java index d253ba6..0514b5c 100644 --- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageImpl.java +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageImpl.java @@ -49,7 +49,6 @@ public class PageImpl implements Page { } return new PageImpl<>(result, current, total); } - @Nonnull @Override public Page mapAll(Function, List> mapper) { diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageQO.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageQO.java new file mode 100644 index 0000000..9301eb4 --- /dev/null +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageQO.java @@ -0,0 +1,49 @@ +package cn.axzo.framework.domain.page; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * @Author: liyong.tian + * @Date: 2022/10/28 + * @Description: 基于mybatis-plus封装分页请求类 + */ +@Data +public class PageQO { + + @ApiModelProperty("当前页") + private Long page = 1L; + + @ApiModelProperty("每页大小") + private Long pageSize = 10L; + + //排序字段 + private String sortType; + //排序类型,(desc 降序,asc 升序) + private String sortDirection; + + //是否查询详情 + private boolean needDetail = true; + + public PageQO() { + } + + public Page toPage() { + if (this.page != null && this.page == -1L) { + this.page = 1L; + this.pageSize = 9999L; + return new Page(this.page, this.pageSize); + } else { + if (this.page == null || this.page == 0L) { + this.page = 1L; + } + + if (this.pageSize == null || this.pageSize == 0L) { + this.pageSize = 20L; + } + + return new Page(this.page, this.pageSize); + } + } +} diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageResp.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageResp.java new file mode 100644 index 0000000..9ebfe75 --- /dev/null +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/page/PageResp.java @@ -0,0 +1,67 @@ +package cn.axzo.framework.domain.page; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import java.util.ArrayList; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; +import org.springframework.util.CollectionUtils; + +/** + * @Author: liyong.tian + * @Date: 2022/10/28 + * @Description: 基于mybatis-plus封装分页返回类 + */ +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +@Builder +public class PageResp { + + /** + * 页码(从第1页开始) + */ + private Long page; + + /** + * 每页条数 + */ + private Long pageSize; + + /** + * 总记录数 + */ + private Long totalCount; + + private List list; + + public static PageResp zero(Long pageNum, Long pageSize) { + return new PageResp(pageNum, pageSize, 0L, new ArrayList<>()); + } + + public static PageResp list(Long pageNum, Long pageSize, Long totalCount, List data) { + if (CollectionUtils.isEmpty(data)) { + return zero(pageNum, pageSize); + } + return new PageResp(pageNum, pageSize, totalCount, data); + } + + public static PageResp list(IPage page, List data) { + if (CollectionUtils.isEmpty(data)) { + return zero(page.getCurrent(), page.getSize()); + } + return new PageResp(page.getCurrent(), page.getSize(), page.getTotal(), data); + } + + public static PageResp list(PageQO page, Long totalCount, List data) { + if (CollectionUtils.isEmpty(data)) { + return zero(page.getPage(), page.getPageSize()); + } + return new PageResp(page.getPage(), page.getPageSize(), totalCount, data); + + } +} \ No newline at end of file diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/code/BaseCode.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/code/BaseCode.java index 39915e8..f9c42ea 100644 --- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/code/BaseCode.java +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/code/BaseCode.java @@ -16,10 +16,10 @@ import java.util.stream.Stream; @Description("基础错误码") public enum BaseCode implements IModuleRespCode{ - SUCCESS("000", "成功", 200) { + SUCCESS("000", "success", 200) { @Override public String getRespCode() { - return "0"; + return "200"; } }, BAD_REQUEST("400", "请求参数错误", 400), diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiCoreResult.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiCoreResult.java index 75874e5..d906334 100644 --- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiCoreResult.java +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiCoreResult.java @@ -10,7 +10,7 @@ import lombok.Data; import lombok.NoArgsConstructor; import java.beans.Transient; -import java.util.LinkedHashMap; +import java.util.HashMap; import java.util.Map; import java.util.Objects; @@ -23,8 +23,8 @@ import static jodd.util.StringUtil.isNotBlank; * @Date 2020/9/7 20:28 **/ @Data -@AllArgsConstructor @NoArgsConstructor +@AllArgsConstructor @JsonPropertyOrder({"code", "msg", "data"}) public abstract class ApiCoreResult implements Result { @@ -74,7 +74,7 @@ public abstract class ApiCoreResult implements Result { @Override public Map toMap() { - Map map = new LinkedHashMap<>(); + Map map = new HashMap<>(); map.put("code", code); map.put("msg", msg); map.put("data", data); diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiListResult.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiListResult.java index f1598d6..69afa73 100644 --- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiListResult.java +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiListResult.java @@ -60,7 +60,7 @@ public class ApiListResult extends ApiCoreResult> { return new ApiListResult<>(code, message, data); } - @ConstructorProperties({"code", "message", "data"}) + @ConstructorProperties({"code", "msg", "data"}) public ApiListResult(String code, String message, List data) { super(code, message, data); } diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiPageResult.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiPageResult.java index 02d756f..45037d9 100644 --- a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiPageResult.java +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/ApiPageResult.java @@ -1,17 +1,12 @@ package cn.axzo.framework.domain.web.result; -import cn.axzo.framework.domain.page.Page; -import cn.axzo.framework.domain.page.PageImpl; -import cn.axzo.framework.domain.page.PageVerbose; -import cn.axzo.framework.domain.page.Pageable; +import cn.axzo.framework.domain.page.*; import cn.axzo.framework.domain.web.code.IRespCode; import com.baomidou.mybatisplus.core.metadata.IPage; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import com.github.pagehelper.PageInfo; import com.google.common.collect.Lists; -import io.swagger.annotations.ApiModelProperty; import lombok.Data; -import lombok.EqualsAndHashCode; import lombok.ToString; import java.beans.ConstructorProperties; @@ -28,22 +23,9 @@ import static com.google.common.collect.Lists.newArrayList; * @Date 2020/9/7 20:32 **/ @Data -@EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -@JsonPropertyOrder({"total", "code", "msg", "data", "pageNum", "pageSize", "verbose"}) -public class ApiPageResult extends ApiCoreResult> { - - @ApiModelProperty(value = "总记录数", position = 101, required = true) - private final Long total; - - @ApiModelProperty(value = "当前页", position = 102) - private final Integer pageNum; - - @ApiModelProperty(value = "每页显示数量", position = 103) - private final Integer pageSize; - - @ApiModelProperty(value = "分页冗余信息", position = 104) - private final PageVerbose verbose; +@JsonPropertyOrder({"code", "msg", "data"}) +public class ApiPageResult extends ApiCoreResult>{ public static ApiPageResult empty() { return ok(newArrayList(), 0L); @@ -83,9 +65,13 @@ public class ApiPageResult extends ApiCoreResult> { return ok(page.getRecords(), page.getTotal(), (int)page.getCurrent(), (int)page.getSize()); } + public static ApiPageResult ok(PageResp page) { + return ok(page.getList(), page.getTotalCount(), page.getPage().intValue(), page.getPageSize().intValue()); + } + public static ApiPageResult ok(List data, Long total) { return build(total, SUCCESS.getRespCode(), SUCCESS.getMessage(), data, - null, null, null); + null, null, null); } public static ApiPageResult ok(List data, Long total, Integer pageNumber, Integer pageSize) { @@ -93,7 +79,7 @@ public class ApiPageResult extends ApiCoreResult> { } public static ApiPageResult ok(List data, Long total, Integer pageNumber, Integer pageSize, - PageVerbose verbose) { + PageVerbose verbose) { return build(total, SUCCESS.getRespCode(), SUCCESS.getMessage(), data, pageNumber, pageSize, verbose); } @@ -114,28 +100,31 @@ public class ApiPageResult extends ApiCoreResult> { } public static ApiPageResult build(Long total, IRespCode code, List data, - Integer pageNum, Integer pageSize) { + Integer pageNum, Integer pageSize) { return build(total, code.getRespCode(), code.getMessage(), data, pageNum, pageSize, null); } public static ApiPageResult build(Long total, String code, String message, List data, - Integer pageNum, Integer pageSize) { + Integer pageNum, Integer pageSize) { return new ApiPageResult<>(total, code, message, data, pageNum, pageSize, null); } public static ApiPageResult build(Long total, String code, String message, List data, - Integer pageNum, Integer pageSize, PageVerbose verbose) { + Integer pageNum, Integer pageSize, PageVerbose verbose) { return new ApiPageResult<>(total, code, message, data, pageNum, pageSize, verbose); } - @ConstructorProperties({"total", "code", "message", "data", "pageNum", "pageSize", "verbose"}) - public ApiPageResult(Long total, String code, String message, List data, Integer pageNum, Integer pageSize, + @ConstructorProperties({"code", "msg", "data"}) + public ApiPageResult(Long total, String code, String message, List list, Integer pageNum, Integer pageSize, PageVerbose verbose) { - super(code, message, data); - this.total = total; - this.pageNum = pageNum; - this.pageSize = pageSize; - this.verbose = verbose; + PageData data = new PageData(); + data.setList(list); + data.setTotalCount(total); + data.setPage(pageNum); + data.setPageSize(pageSize); + this.code = code; + this.msg = message; + this.data = data; } @Override @@ -143,15 +132,15 @@ public class ApiPageResult extends ApiCoreResult> { Map map = new LinkedHashMap<>(); map.put("code", code); map.put("msg", msg); - map.put("total", total); map.put("data", data); - map.put("pageNum", pageNum); - map.put("pageSize", pageSize); - map.put("verbose", verbose); return map; } public Page toPage(Pageable pageable) { - return new PageImpl<>(data == null ? Lists.newArrayList() : data, pageable, total); + return new PageImpl<>(data == null ? Lists.newArrayList() : data.getList(), pageable, data.getTotalCount()); + } + + public PageResp toPage() { + return new PageResp(data.getPage().longValue(), data.getPageSize().longValue(), data.getTotalCount(), data.getList() == null ? Lists.newArrayList() : data.getList()); } } diff --git a/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/PageData.java b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/PageData.java new file mode 100644 index 0000000..8cdad01 --- /dev/null +++ b/axzo-common-domain/src/main/java/cn/axzo/framework/domain/web/result/PageData.java @@ -0,0 +1,33 @@ +package cn.axzo.framework.domain.web.result; + +import cn.axzo.framework.domain.page.PageVerbose; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PageData { + + @ApiModelProperty(value = "列表", position = 100, required = true) + private List list; + + @ApiModelProperty(value = "总记录数", position = 101, required = true) + private Long totalCount; + + @ApiModelProperty(value = "当前页", position = 102) + private Integer page; + + @ApiModelProperty(value = "每页显示数量", position = 103) + private Integer pageSize; + +// @ApiModelProperty(value = "分页冗余信息", position = 104) +// private PageVerbose verbose; + +} diff --git a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/BigFractionDeserializer.java b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/BigFractionDeserializer.java index 409c616..dd2126b 100644 --- a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/BigFractionDeserializer.java +++ b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/BigFractionDeserializer.java @@ -20,7 +20,7 @@ import static jodd.util.StringPool.COMMA; * 1/100 * [1,100] * - * @author jearton + * @author liyong.tian * @since 2017/3/3 */ public class BigFractionDeserializer extends JsonDeserializer { diff --git a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/FractionDeserializer.java b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/FractionDeserializer.java index f2c3c90..42bf3ac 100644 --- a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/FractionDeserializer.java +++ b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/deser/FractionDeserializer.java @@ -20,7 +20,7 @@ import static jodd.util.StringPool.COMMA; * 1/100 * [1,100] * - * @author jearton + * @author liyong.tian * @since 2017/3/2 */ public class FractionDeserializer extends JsonDeserializer { diff --git a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/BigFractionSerializer.java b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/BigFractionSerializer.java index 7ad1e13..a68b1b9 100644 --- a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/BigFractionSerializer.java +++ b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/BigFractionSerializer.java @@ -14,7 +14,7 @@ import java.io.IOException; * 1/100 * [1,100] * - * @author jearton + * @author liyong.tian * @since 2017/3/2 */ public class BigFractionSerializer extends JsonSerializer { diff --git a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/FractionSerializer.java b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/FractionSerializer.java index 175772d..9b2b9ae 100644 --- a/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/FractionSerializer.java +++ b/axzo-common-jackson/jackson-datatype-fraction/src/main/java/cn/axzo/framework/jackson/datatype/fraction/ser/FractionSerializer.java @@ -14,7 +14,7 @@ import java.io.IOException; * 1/100 * [1,100] * - * @author jearton + * @author liyong.tian * @since 2017/3/2 */ public class FractionSerializer extends JsonSerializer { diff --git a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/TrimModule.java b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/TrimModule.java index eccd074..c533f11 100644 --- a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/TrimModule.java +++ b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/TrimModule.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.module.SimpleModule; import static cn.axzo.framework.jackson.datatype.string.PackageVersion.VERSION; /** - * @author jearton + * @author liyong.tian * @since 2017/1/6 */ public class TrimModule extends SimpleModule { diff --git a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializer.java b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializer.java index d70dfe0..a14ef4b 100644 --- a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializer.java +++ b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializer.java @@ -8,7 +8,7 @@ import com.fasterxml.jackson.databind.deser.std.StringDeserializer; import java.io.IOException; /** - * @author jearton + * @author liyong.tian * @since 2017/1/6 */ public class TrimDeserializer extends StdScalarDeserializer { diff --git a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializerModifier.java b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializerModifier.java index 89a5b1a..0021139 100644 --- a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializerModifier.java +++ b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/deser/TrimDeserializerModifier.java @@ -7,7 +7,7 @@ import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier; import com.fasterxml.jackson.databind.deser.std.StringDeserializer; /** - * @author jearton + * @author liyong.tian * @since 2017/1/6 */ public class TrimDeserializerModifier extends BeanDeserializerModifier { diff --git a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/ser/TrimSerializer.java b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/ser/TrimSerializer.java index 1e3bf33..7f4d871 100644 --- a/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/ser/TrimSerializer.java +++ b/axzo-common-jackson/jackson-datatype-string-trim/src/main/java/cn/axzo/framework/jackson/datatype/string/ser/TrimSerializer.java @@ -12,7 +12,7 @@ import java.io.IOException; import java.lang.reflect.Type; /** - * @author jearton + * @author liyong.tian * @since 2017/1/6 */ public class TrimSerializer extends StdScalarSerializer { diff --git a/axzo-common-validator/src/main/resources/META-INF/services/javax.validation.ConstraintValidator b/axzo-common-validator/src/main/resources/META-INF/services/javax.validation.ConstraintValidator index b9d5920..a28d4da 100644 --- a/axzo-common-validator/src/main/resources/META-INF/services/javax.validation.ConstraintValidator +++ b/axzo-common-validator/src/main/resources/META-INF/services/javax.validation.ConstraintValidator @@ -1,22 +1,22 @@ # Assuming a custom constraint annotation @FractionMax -FractionMaxConstraintValidator -BigFractionMaxConstraintValidator +cn.axzo.framework.validator.constraintvalidators.FractionMaxConstraintValidator +cn.axzo.framework.validator.constraintvalidators.BigFractionMaxConstraintValidator # Assuming a custom constraint annotation @FractionMin -FractionMinConstraintValidator -BigFractionMinConstraintValidator +cn.axzo.framework.validator.constraintvalidators.FractionMinConstraintValidator +cn.axzo.framework.validator.constraintvalidators.BigFractionMinConstraintValidator # Assuming a custom constraint annotation @PeriodMax -PeriodMaxConstraintValidator +cn.axzo.framework.validator.constraintvalidators.PeriodMaxConstraintValidator # Assuming a custom constraint annotation @PeriodMin -PeriodMinConstraintValidator +cn.axzo.framework.validator.constraintvalidators.PeriodMinConstraintValidator # Assuming a custom constraint annotation @SizeIn -SizeInConstraintValidator +cn.axzo.framework.validator.constraintvalidators.SizeInConstraintValidator # Assuming a custom constraint annotation @ASCII -ASCIIConstraintValidator +cn.axzo.framework.validator.constraintvalidators.ASCIIConstraintValidator # Assuming a custom constraint annotation @UTF8 -UTF8ConstraintValidator \ No newline at end of file +cn.axzo.framework.validator.constraintvalidators.UTF8ConstraintValidator \ No newline at end of file diff --git a/axzo-common-web/pom.xml b/axzo-common-web/pom.xml index 56d5ced..6176422 100644 --- a/axzo-common-web/pom.xml +++ b/axzo-common-web/pom.xml @@ -37,13 +37,11 @@ com.github.pagehelper pagehelper - provided com.baomidou mybatis-plus-core - provided \ No newline at end of file diff --git a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreEntity.java b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreResponse.java similarity index 94% rename from axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreEntity.java rename to axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreResponse.java index baa17c2..0e832f3 100644 --- a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreEntity.java +++ b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiCoreResponse.java @@ -18,7 +18,7 @@ import java.util.Set; */ @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) -public abstract class ApiCoreEntity> extends HttpEntity { +public abstract class ApiCoreResponse> extends HttpEntity { private final Object status; @@ -29,7 +29,7 @@ public abstract class ApiCoreEntity> extends HttpE * @param headers the entity headers * @param status the status code */ - public ApiCoreEntity(R body, MultiValueMap headers, HttpStatus status) { + public ApiCoreResponse(R body, MultiValueMap headers, HttpStatus status) { super(body, headers); Assert.notNull(status, "HttpStatus must not be null"); this.status = status; diff --git a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListEntity.java b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListResponse.java similarity index 61% rename from axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListEntity.java rename to axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListResponse.java index b831541..34a657f 100644 --- a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListEntity.java +++ b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiListResponse.java @@ -16,7 +16,7 @@ import java.util.List; * @author liyong.tian * @since 2017/11/14 下午8:00 */ -public class ApiListEntity extends ApiCoreEntity, ApiListResult> { +public class ApiListResponse extends ApiCoreResponse, ApiListResult> { /** * Create a new {@code HttpEntity} with the given body, headers, and status code. @@ -25,7 +25,7 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> { * @param headers the entity headers * @param status the status code */ - ApiListEntity(ApiListResult body, MultiValueMap headers, HttpStatus status) { + ApiListResponse(ApiListResult body, MultiValueMap headers, HttpStatus status) { super(body, headers, status); } @@ -35,7 +35,7 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> { * @return the created builder * @since 4.1 */ - public static ApiListEntity ok() { + public static ApiListResponse ok() { return status(HttpStatus.OK).ok(); } @@ -46,20 +46,20 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> { * @return the created {@code ResponseEntity} * @since 4.1 */ - public static ApiListEntity ok(List data) { + public static ApiListResponse ok(List data) { return status(HttpStatus.OK).ok(data); } - public static ApiListEntityBuilder status(@Nonnull HttpStatus status) { + public static ApiListResponseBuilder status(@Nonnull HttpStatus status) { Assert.notNull(status, "HttpStatus must not be null"); - return new ApiListEntityBuilder(status); + return new ApiListResponseBuilder(status); } - public static ApiListEntityBuilder header(String headerName, String... headerValues) { + public static ApiListResponseBuilder header(String headerName, String... headerValues) { return status(HttpStatus.OK).header(headerName, headerValues); } - public static ApiListEntityBuilder headers(HttpHeaders headers) { + public static ApiListResponseBuilder headers(HttpHeaders headers) { return status(HttpStatus.OK).headers(headers); } @@ -71,11 +71,11 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> { * @return the created builder * @since 4.1 */ - public static ApiListEntityBuilder created(URI location) { + public static ApiListResponseBuilder created(URI location) { return status(HttpStatus.CREATED).location(location); } - public static ApiListEntityBuilder created(String location) { + public static ApiListResponseBuilder created(String location) { return status(HttpStatus.CREATED).location(Nets.uri(location)); } @@ -85,7 +85,7 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> { * @return the created builder * @since 4.1 */ - public static ApiListEntityBuilder accepted() { + public static ApiListResponseBuilder accepted() { return status(HttpStatus.ACCEPTED); } @@ -95,7 +95,7 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> { * @return the created builder * @since 4.1 */ - public static ApiListEntityBuilder badRequest() { + public static ApiListResponseBuilder badRequest() { return status(HttpStatus.BAD_REQUEST); } @@ -105,58 +105,58 @@ public class ApiListEntity extends ApiCoreEntity, ApiListResult> { * @return the created builder * @since 4.1 */ - public static ApiListEntityBuilder notFound() { + public static ApiListResponseBuilder notFound() { return status(HttpStatus.NOT_FOUND); } - public static class ApiListEntityBuilder extends AbstractBodySetter { + public static class ApiListResponseBuilder extends AbstractBodySetter { - private ApiListEntityBuilder(HttpStatus status) { + private ApiListResponseBuilder(HttpStatus status) { super(status); } - public ApiListEntity ok() { + public ApiListResponse ok() { return wrapper(ApiListResult.ok()); } - public ApiListEntity ok(List data) { + public ApiListResponse ok(List data) { return wrapper(ApiListResult.ok(data)); } - public ApiListEntity err(IRespCode code) { + public ApiListResponse err(IRespCode code) { return wrapper(ApiListResult.err(code)); } - public ApiListEntity err(IRespCode code, String message) { + public ApiListResponse err(IRespCode code, String message) { return wrapper(ApiListResult.err(code, message)); } - public ApiListEntity err(String message) { + public ApiListResponse err(String message) { return wrapper(ApiListResult.err(message)); } - public ApiListEntity err(IRespCode code, List data) { + public ApiListResponse err(IRespCode code, List data) { return wrapper(ApiListResult.err(code, data)); } - public ApiListEntity err(String code, String message) { + public ApiListResponse err(String code, String message) { return wrapper(ApiListResult.err(code, message)); } - public ApiListEntity build(IRespCode code) { + public ApiListResponse build(IRespCode code) { return wrapper(ApiListResult.build(code)); } - public ApiListEntity build(IRespCode code, List data) { + public ApiListResponse build(IRespCode code, List data) { return wrapper(ApiListResult.build(code, data)); } - public ApiListEntity build(String code, String message, List data) { + public ApiListResponse build(String code, String message, List data) { return wrapper(ApiListResult.build(code, message, data)); } - private ApiListEntity wrapper(ApiListResult result) { - return new ApiListEntity<>(result, super.headers, super.status); + private ApiListResponse wrapper(ApiListResult result) { + return new ApiListResponse<>(result, super.headers, super.status); } } } diff --git a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageEntity.java b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageResponse.java similarity index 58% rename from axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageEntity.java rename to axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageResponse.java index d2cdcf7..a5f6f0c 100644 --- a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageEntity.java +++ b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiPageResponse.java @@ -1,5 +1,7 @@ package cn.axzo.framework.web.http; +import cn.axzo.framework.domain.page.PageResp; +import cn.axzo.framework.domain.web.result.PageData; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.pagehelper.PageInfo; import cn.axzo.framework.core.net.Nets; @@ -19,7 +21,7 @@ import java.util.List; * @author liyong.tian * @since 2017/11/14 下午7:52 */ -public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> { +public class ApiPageResponse extends ApiCoreResponse, ApiPageResult> { /** * Create a new {@code HttpEntity} with the given body, headers, and status code. @@ -28,7 +30,7 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> { * @param headers the entity headers * @param status the status code */ - public ApiPageEntity(ApiPageResult body, MultiValueMap headers, HttpStatus status) { + public ApiPageResponse(ApiPageResult body, MultiValueMap headers, HttpStatus status) { super(body, headers, status); } @@ -38,7 +40,7 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> { * @return the created builder * @since 4.1 */ - public static ApiPageEntity empty() { + public static ApiPageResponse empty() { return status(HttpStatus.OK).empty(); } @@ -49,32 +51,32 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> { * @return the created {@code ResponseEntity} * @since 4.1 */ - public static ApiPageEntity ok(Page page) { + public static ApiPageResponse ok(Page page) { return status(HttpStatus.OK).ok(page); } - public static ApiPageEntity ok(org.springframework.data.domain.Page page) { + public static ApiPageResponse ok(org.springframework.data.domain.Page page) { return status(HttpStatus.OK).ok(page); } -// public static ApiPageEntity ok(PageInfo pageInfo) { -// return status(HttpStatus.OK).ok(pageInfo); -// } + public static ApiPageResponse ok(PageInfo pageInfo) { + return status(HttpStatus.OK).ok(pageInfo); + } - public static ApiPageEntity ok(IPage page) { + public static ApiPageResponse ok(PageResp page) { return status(HttpStatus.OK).ok(page); } - public static ApiPageEntityBuilder status(@Nonnull HttpStatus status) { + public static ApiPageResponseBuilder status(@Nonnull HttpStatus status) { Assert.notNull(status, "HttpStatus must not be null"); - return new ApiPageEntityBuilder(status); + return new ApiPageResponseBuilder(status); } - public static ApiPageEntityBuilder header(String headerName, String... headerValues) { + public static ApiPageResponseBuilder header(String headerName, String... headerValues) { return status(HttpStatus.OK).header(headerName, headerValues); } - public static ApiPageEntityBuilder headers(HttpHeaders headers) { + public static ApiPageResponseBuilder headers(HttpHeaders headers) { return status(HttpStatus.OK).headers(headers); } @@ -86,11 +88,11 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> { * @return the created builder * @since 4.1 */ - public static ApiPageEntityBuilder created(URI location) { + public static ApiPageResponseBuilder created(URI location) { return status(HttpStatus.CREATED).location(location); } - public static ApiPageEntityBuilder created(String location) { + public static ApiPageResponseBuilder created(String location) { return status(HttpStatus.CREATED).location(Nets.uri(location)); } @@ -100,7 +102,7 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> { * @return the created builder * @since 4.1 */ - public static ApiPageEntityBuilder accepted() { + public static ApiPageResponseBuilder accepted() { return status(HttpStatus.ACCEPTED); } @@ -110,7 +112,7 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> { * @return the created builder * @since 4.1 */ - public static ApiPageEntityBuilder badRequest() { + public static ApiPageResponseBuilder badRequest() { return status(HttpStatus.BAD_REQUEST); } @@ -120,70 +122,70 @@ public class ApiPageEntity extends ApiCoreEntity, ApiPageResult> { * @return the created builder * @since 4.1 */ - public static ApiPageEntityBuilder notFound() { + public static ApiPageResponseBuilder notFound() { return status(HttpStatus.NOT_FOUND); } - public static class ApiPageEntityBuilder extends AbstractBodySetter { + public static class ApiPageResponseBuilder extends AbstractBodySetter { - private ApiPageEntityBuilder(HttpStatus status) { + private ApiPageResponseBuilder(HttpStatus status) { super(status); } - public ApiPageEntity empty() { + public ApiPageResponse empty() { return wrapper(ApiPageResult.empty()); } - public ApiPageEntity ok(Page page) { + public ApiPageResponse ok(Page page) { return wrapper(ApiPageResult.ok(page)); } - public ApiPageEntity ok(org.springframework.data.domain.Page page) { + public ApiPageResponse ok(org.springframework.data.domain.Page page) { return wrapper(ApiPageResult.ok(page)); } - public ApiPageEntity ok(PageInfo pageInfo) { + public ApiPageResponse ok(PageInfo pageInfo) { return wrapper(ApiPageResult.ok(pageInfo)); } - public ApiPageEntity ok(IPage page) { + public ApiPageResponse ok(PageResp page) { return wrapper(ApiPageResult.ok(page)); } - public ApiPageEntity ok(List data, Long total) { + public ApiPageResponse ok(List data, Long total) { return wrapper(ApiPageResult.ok(data, total)); } - public ApiPageEntity ok(List data, Long total, Integer pageNumber, Integer pageSize) { + public ApiPageResponse ok(List data, Long total, Integer pageNumber, Integer pageSize) { return wrapper(ApiPageResult.ok(data, total, pageNumber, pageSize)); } - public ApiPageEntity err(IRespCode code) { + public ApiPageResponse err(IRespCode code) { return wrapper(ApiPageResult.err(code)); } - public ApiPageEntity err(IRespCode code, String message) { + public ApiPageResponse err(IRespCode code, String message) { return wrapper(ApiPageResult.err(code, message)); } - public ApiPageEntity err(String code, String message) { + public ApiPageResponse err(String code, String message) { return wrapper(ApiPageResult.err(code, message)); } - public ApiPageEntity build(IRespCode code) { + public ApiPageResponse build(IRespCode code) { return wrapper(ApiPageResult.build(code)); } - public ApiPageEntity build(Long total, IRespCode code, List data, Integer pageNum, Integer pageSize) { + public ApiPageResponse build(Long total, IRespCode code, List data, Integer pageNum, Integer pageSize) { return wrapper(ApiPageResult.build(total, code, data, pageNum, pageSize)); } - public ApiPageEntity build(Long total, String code, String message, List data, + public ApiPageResponse build(Long total, String code, String message, List data, Integer pageNum, Integer pageSize) { return wrapper(ApiPageResult.build(total, code, message, data, pageNum, pageSize)); } - private ApiPageEntity wrapper(ApiPageResult result) { - return new ApiPageEntity<>(result, super.headers, super.status); + private ApiPageResponse wrapper(ApiPageResult result) { + return new ApiPageResponse<>(result, super.headers, super.status); } } } diff --git a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiEntity.java b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiResponse.java similarity index 63% rename from axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiEntity.java rename to axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiResponse.java index f81426a..a293b2a 100644 --- a/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiEntity.java +++ b/axzo-common-web/src/main/java/cn.axzo.framework.web/http/ApiResponse.java @@ -18,7 +18,7 @@ import java.util.function.Function; * @author liyong.tian * @since 2017/11/14 下午7:55 */ -public class ApiEntity extends ApiCoreEntity> { +public class ApiResponse extends ApiCoreResponse> { /** * Create a new {@code HttpEntity} with the given body, headers, and status code. @@ -27,16 +27,16 @@ public class ApiEntity extends ApiCoreEntity> { * @param headers the entity headers * @param status the status code */ - ApiEntity(ApiResult body, MultiValueMap headers, HttpStatus status) { + ApiResponse(ApiResult body, MultiValueMap headers, HttpStatus status) { super(body, headers, status); } - public ApiEntity map(Function mapper) { + public ApiResponse map(Function mapper) { ApiResult result = getBody().map(mapper); return status(getStatusCode()).headers(getHeaders()).wrapper(result); } - public static ApiEntity of(ResponseEntity entity) { + public static ApiResponse of(ResponseEntity entity) { return status(entity.getStatusCode()).headers(entity.getHeaders()).ok(entity.getBody()); } @@ -46,7 +46,7 @@ public class ApiEntity extends ApiCoreEntity> { * @return the created builder * @since 4.1 */ - public static ApiEntity ok() { + public static ApiResponse ok() { return status(HttpStatus.OK).ok(); } @@ -57,24 +57,24 @@ public class ApiEntity extends ApiCoreEntity> { * @return the created {@code ResponseEntity} * @since 4.1 */ - public static ApiEntity ok(E data) { + public static ApiResponse ok(E data) { return status(HttpStatus.OK).ok(data); } - public static ApiEntity build(IRespCode code, E data) { + public static ApiResponse build(IRespCode code, E data) { return status(HttpStatus.OK).build(code, data); } - public static ApiEntityBuilder status(@Nonnull HttpStatus status) { + public static ApiResponseBuilder status(@Nonnull HttpStatus status) { Assert.notNull(status, "HttpStatus must not be null"); - return new ApiEntityBuilder(status); + return new ApiResponseBuilder(status); } - public static ApiEntityBuilder header(String headerName, String... headerValues) { + public static ApiResponseBuilder header(String headerName, String... headerValues) { return status(HttpStatus.OK).header(headerName, headerValues); } - public static ApiEntityBuilder headers(HttpHeaders headers) { + public static ApiResponseBuilder headers(HttpHeaders headers) { return status(HttpStatus.OK).headers(headers); } @@ -86,11 +86,11 @@ public class ApiEntity extends ApiCoreEntity> { * @return the created builder * @since 4.1 */ - public static ApiEntityBuilder created(URI location) { + public static ApiResponseBuilder created(URI location) { return status(HttpStatus.CREATED).location(location); } - public static ApiEntityBuilder created(String location) { + public static ApiResponseBuilder created(String location) { return status(HttpStatus.CREATED).location(Nets.uri(location)); } @@ -100,7 +100,7 @@ public class ApiEntity extends ApiCoreEntity> { * @return the created builder * @since 4.1 */ - public static ApiEntityBuilder accepted() { + public static ApiResponseBuilder accepted() { return status(HttpStatus.ACCEPTED); } @@ -110,7 +110,7 @@ public class ApiEntity extends ApiCoreEntity> { * @return the created builder * @since 4.1 */ - public static ApiEntityBuilder badRequest() { + public static ApiResponseBuilder badRequest() { return status(HttpStatus.BAD_REQUEST); } @@ -120,69 +120,69 @@ public class ApiEntity extends ApiCoreEntity> { * @return the created builder * @since 4.1 */ - public static ApiEntityBuilder notFound() { + public static ApiResponseBuilder notFound() { return status(HttpStatus.NOT_FOUND); } - public static class ApiEntityBuilder extends AbstractBodySetter { + public static class ApiResponseBuilder extends AbstractBodySetter { - private ApiEntityBuilder(HttpStatus status) { + private ApiResponseBuilder(HttpStatus status) { super(status); } - public ApiEntity ok() { + public ApiResponse ok() { return wrapper(ApiResult.ok()); } - public ApiEntity ok(E data) { + public ApiResponse ok(E data) { return wrapper(ApiResult.ok(data)); } @SuppressWarnings("all") - public ApiEntity okOrNotFound(Optional optional) { + public ApiResponse okOrNotFound(Optional optional) { return optional.map(o -> wrapper(ApiResult.ok(o))).orElseGet(() -> { return wrapper(ApiResult.ok()); }); } - public ApiEntity err(IRespCode code) { + public ApiResponse err(IRespCode code) { return wrapper(ApiResult.err(code)); } - public ApiEntity err(IRespCode code, String message) { + public ApiResponse err(IRespCode code, String message) { return wrapper(ApiResult.err(code, message)); } - public ApiEntity err(IRespCode code, E data) { + public ApiResponse err(IRespCode code, E data) { return wrapper(ApiResult.err(code, data)); } - public ApiEntity err(String message) { + public ApiResponse err(String message) { return wrapper(ApiResult.err(message)); } - public ApiEntity err(String code, String message) { + public ApiResponse err(String code, String message) { return wrapper(ApiResult.err(code, message)); } - public ApiEntity with(Throwable e) { + public ApiResponse with(Throwable e) { return wrapper(ApiResult.with(e)); } - public ApiEntity build(IRespCode code) { + public ApiResponse build(IRespCode code) { return build(code, null); } - public ApiEntity build(IRespCode code, E data) { + public ApiResponse build(IRespCode code, E data) { return wrapper(ApiResult.build(code, data)); } - public ApiEntity build(String code, String message, E data) { + public ApiResponse build(String code, String message, E data) { return wrapper(ApiResult.build(code, message, data)); } - ApiEntity wrapper(ApiResult result) { - return new ApiEntity<>(result, super.headers, super.status); + ApiResponse wrapper(ApiResult result) { + return new ApiResponse<>(result, super.headers, super.status); } } } diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/configurer/HttpMessageConvertersConfigurer.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/configurer/HttpMessageConvertersConfigurer.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/configurer/HttpMessageConvertersConfigurer.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/configurer/HttpMessageConvertersConfigurer.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/configurer/HttpMessageConvertersProperties.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/configurer/HttpMessageConvertersProperties.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/configurer/HttpMessageConvertersProperties.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/configurer/HttpMessageConvertersProperties.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/context/RequestMappingHandlerAdapterLazyAware.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/context/RequestMappingHandlerAdapterLazyAware.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/context/RequestMappingHandlerAdapterLazyAware.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/context/RequestMappingHandlerAdapterLazyAware.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/context/RequestMappingHandlerAdapterLazyAwareProcessor.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/context/RequestMappingHandlerAdapterLazyAwareProcessor.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/context/RequestMappingHandlerAdapterLazyAwareProcessor.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/context/RequestMappingHandlerAdapterLazyAwareProcessor.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/CustomServletRequestWrapper.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/CustomServletRequestWrapper.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/CustomServletRequestWrapper.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/CustomServletRequestWrapper.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/OrderedBadRequestFilter.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/OrderedBadRequestFilter.java similarity index 84% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/OrderedBadRequestFilter.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/OrderedBadRequestFilter.java index aaf5c21..b6a39c5 100644 --- a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/OrderedBadRequestFilter.java +++ b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/OrderedBadRequestFilter.java @@ -2,7 +2,7 @@ package cn.axzo.framework.web.servlet.filter; import cn.axzo.framework.core.util.ClassUtil; import cn.axzo.framework.domain.web.code.BaseCode; -import cn.axzo.framework.web.http.ApiEntity; +import cn.axzo.framework.web.http.ApiResponse; import cn.axzo.framework.web.servlet.context.RequestMappingHandlerAdapterLazyAware; import io.undertow.server.RequestTooBigException; import io.undertow.server.handlers.form.MultiPartParserDefinition; @@ -87,7 +87,7 @@ public class OrderedBadRequestFilter extends OncePerRequestFilter implements Ord return; } - ApiEntity returnValue = _decideReturnValue(ex); + ApiResponse returnValue = _decideReturnValue(ex); MethodParameter returnType = new ReturnValueMethodParameter(returnValue); val returnValueHandler = _getReturnValueHandler(returnType); if (returnValueHandler == null) { @@ -125,38 +125,38 @@ public class OrderedBadRequestFilter extends OncePerRequestFilter implements Ord .orElse(null); } - private ApiEntity _decideReturnValue(Exception ex) { - ApiEntity returnValue; + private ApiResponse _decideReturnValue(Exception ex) { + ApiResponse returnValue; if (ex instanceof IllegalArgumentException) { - return ApiEntity.badRequest().err(BAD_REQUEST, ex.getMessage()); + return ApiResponse.badRequest().err(BAD_REQUEST, ex.getMessage()); } else if (ex instanceof StringIndexOutOfBoundsException) { - return ApiEntity.badRequest().err(BAD_REQUEST, ERROR_FORM_DATA_NOT_ENCODED); + return ApiResponse.badRequest().err(BAD_REQUEST, ERROR_FORM_DATA_NOT_ENCODED); } else if (ex instanceof IllegalStateException) { return _decideReturnValue((IllegalStateException) ex); } else if (ex instanceof RuntimeException) { return _decideReturnValue((RuntimeException) ex); } - return ApiEntity.status(INTERNAL_SERVER_ERROR).err(BaseCode.SERVER_ERROR); + return ApiResponse.status(INTERNAL_SERVER_ERROR).err(BaseCode.SERVER_ERROR); } - private ApiEntity _decideReturnValue(IllegalStateException ex) { + private ApiResponse _decideReturnValue(IllegalStateException ex) { if (isUndertow) { Throwable cause = ex.getCause(); if (cause instanceof RequestTooBigException) { - return ApiEntity.status(HttpStatus.PAYLOAD_TOO_LARGE).err(PAYLOAD_TOO_LARGE, cause.getMessage()); + return ApiResponse.status(HttpStatus.PAYLOAD_TOO_LARGE).err(PAYLOAD_TOO_LARGE, cause.getMessage()); } if (cause instanceof MultiPartParserDefinition.FileTooLargeException) { - return ApiEntity.status(HttpStatus.PAYLOAD_TOO_LARGE).err(PAYLOAD_TOO_LARGE, cause.getMessage()); + return ApiResponse.status(HttpStatus.PAYLOAD_TOO_LARGE).err(PAYLOAD_TOO_LARGE, cause.getMessage()); } } - return ApiEntity.badRequest().err(BAD_REQUEST, ex.getMessage()); + return ApiResponse.badRequest().err(BAD_REQUEST, ex.getMessage()); } - private ApiEntity _decideReturnValue(RuntimeException ex) { + private ApiResponse _decideReturnValue(RuntimeException ex) { if (ex.getCause() instanceof IOException) { - return ApiEntity.badRequest().err(BAD_REQUEST, ex.getCause().getMessage()); + return ApiResponse.badRequest().err(BAD_REQUEST, ex.getCause().getMessage()); } - return ApiEntity.badRequest().err(BAD_REQUEST, ex.getMessage()); + return ApiResponse.badRequest().err(BAD_REQUEST, ex.getMessage()); } /** diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/OrderedTimerFilter.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/OrderedTimerFilter.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/OrderedTimerFilter.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/OrderedTimerFilter.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/RequestMappingInfoFilter.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/RequestMappingInfoFilter.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/RequestMappingInfoFilter.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/RequestMappingInfoFilter.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/RequestReplaceFilter.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/RequestReplaceFilter.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/filter/RequestReplaceFilter.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/filter/RequestReplaceFilter.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/interceptor/HttpLogInterceptor.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/interceptor/HttpLogInterceptor.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/interceptor/HttpLogInterceptor.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/interceptor/HttpLogInterceptor.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/interceptor/InterceptorRegistry.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/interceptor/InterceptorRegistry.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/interceptor/InterceptorRegistry.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/interceptor/InterceptorRegistry.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/interceptor/config/InterceptorProperties.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/interceptor/config/InterceptorProperties.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/interceptor/config/InterceptorProperties.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/interceptor/config/InterceptorProperties.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/method/ApiCoreEntityMethodParameter.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/method/ApiCoreResponseMethodParameter.java similarity index 74% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/method/ApiCoreEntityMethodParameter.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/method/ApiCoreResponseMethodParameter.java index 80068a2..fcb6f07 100644 --- a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/method/ApiCoreEntityMethodParameter.java +++ b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/method/ApiCoreResponseMethodParameter.java @@ -1,6 +1,6 @@ package cn.axzo.framework.web.servlet.method; -import cn.axzo.framework.web.http.ApiCoreEntity; +import cn.axzo.framework.web.http.ApiCoreResponse; import org.springframework.core.MethodParameter; import org.springframework.core.ResolvableType; @@ -11,20 +11,20 @@ import java.lang.reflect.Type; * @Author liyong.tian * @Date 2020/9/9 17:13 **/ -public class ApiCoreEntityMethodParameter extends MethodParameter { +public class ApiCoreResponseMethodParameter extends MethodParameter { private final Object returnValue; private final ResolvableType returnType; - public ApiCoreEntityMethodParameter(MethodParameter parameter, ApiCoreEntity returnValue) { + public ApiCoreResponseMethodParameter(MethodParameter parameter, ApiCoreResponse returnValue) { super(parameter); this.returnValue = returnValue.getBody(); ResolvableType generic = ResolvableType.forType(super.getGenericParameterType()).getGeneric(0); this.returnType = ResolvableType.forClassWithGenerics(returnValue.getBody().getClass(), generic); } - public ApiCoreEntityMethodParameter(ApiCoreEntityMethodParameter original) { + public ApiCoreResponseMethodParameter(ApiCoreResponseMethodParameter original) { super(original); this.returnValue = original.returnValue; this.returnType = original.returnType; @@ -48,6 +48,6 @@ public class ApiCoreEntityMethodParameter extends MethodParameter { @Override public MethodParameter clone() { - return new ApiCoreEntityMethodParameter(this); + return new ApiCoreResponseMethodParameter(this); } } diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/method/ApiCoreEntityMethodProcessor.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/method/ApiCoreResponseMethodProcessor.java similarity index 66% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/method/ApiCoreEntityMethodProcessor.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/method/ApiCoreResponseMethodProcessor.java index 4f9c2fd..0536811 100644 --- a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/method/ApiCoreEntityMethodProcessor.java +++ b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/method/ApiCoreResponseMethodProcessor.java @@ -1,6 +1,6 @@ package cn.axzo.framework.web.servlet.method; -import cn.axzo.framework.web.http.ApiCoreEntity; +import cn.axzo.framework.web.http.ApiCoreResponse; import org.springframework.core.MethodParameter; import org.springframework.util.Assert; import org.springframework.web.context.request.NativeWebRequest; @@ -15,17 +15,17 @@ import javax.servlet.http.HttpServletResponse; * @Author liyong.tian * @Date 2020/9/9 17:16 **/ -public class ApiCoreEntityMethodProcessor implements HandlerMethodReturnValueHandler { +public class ApiCoreResponseMethodProcessor implements HandlerMethodReturnValueHandler { private final HttpEntityMethodProcessor httpEntityMethodProcessor; - public ApiCoreEntityMethodProcessor(HttpEntityMethodProcessor httpEntityMethodProcessor) { + public ApiCoreResponseMethodProcessor(HttpEntityMethodProcessor httpEntityMethodProcessor) { this.httpEntityMethodProcessor = httpEntityMethodProcessor; } @Override public boolean supportsReturnType(MethodParameter returnType) { - return ApiCoreEntity.class.isAssignableFrom(returnType.getParameterType()); + return ApiCoreResponse.class.isAssignableFrom(returnType.getParameterType()); } @Override @@ -36,12 +36,12 @@ public class ApiCoreEntityMethodProcessor implements HandlerMethodReturnValueHan } // 设置http status - Assert.isInstanceOf(ApiCoreEntity.class, returnValue); - ApiCoreEntity apiCoreEntity = (ApiCoreEntity) returnValue; - webRequest.getNativeResponse(HttpServletResponse.class).setStatus(apiCoreEntity.getStatusCodeValue()); + Assert.isInstanceOf(ApiCoreResponse.class, returnValue); + ApiCoreResponse apiCoreResponse = (ApiCoreResponse) returnValue; + webRequest.getNativeResponse(HttpServletResponse.class).setStatus(apiCoreResponse.getStatusCodeValue()); //重写返回类型 - returnType = new ApiCoreEntityMethodParameter(returnType, apiCoreEntity); + returnType = new ApiCoreResponseMethodParameter(returnType, apiCoreResponse); httpEntityMethodProcessor.handleReturnValue(returnValue, returnType, mavContainer, webRequest); } } diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/rest/PaginationUtil.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/rest/PaginationUtil.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/rest/PaginationUtil.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/rest/PaginationUtil.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/NoneRequestMatcher.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/NoneRequestMatcher.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/NoneRequestMatcher.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/NoneRequestMatcher.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/CustomOAuth2ExceptionRenderer.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/CustomOAuth2ExceptionRenderer.java similarity index 95% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/CustomOAuth2ExceptionRenderer.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/CustomOAuth2ExceptionRenderer.java index 4c2d4b6..6cd85e9 100644 --- a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/CustomOAuth2ExceptionRenderer.java +++ b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/CustomOAuth2ExceptionRenderer.java @@ -1,7 +1,7 @@ package cn.axzo.framework.web.servlet.security.oauth; import cn.axzo.framework.core.util.ClassUtil; -import cn.axzo.framework.web.http.ApiCoreEntity; +import cn.axzo.framework.web.http.ApiCoreResponse; import lombok.extern.slf4j.Slf4j; import org.springframework.http.*; import org.springframework.http.converter.GenericHttpMessageConverter; @@ -54,8 +54,8 @@ public class CustomOAuth2ExceptionRenderer implements OAuth2ExceptionRenderer { if (outputMessage instanceof ServerHttpResponse) { if (httpEntity instanceof ResponseEntity) { ((ServerHttpResponse) outputMessage).setStatusCode(((ResponseEntity) httpEntity).getStatusCode()); - } else if (httpEntity instanceof ApiCoreEntity) { - ((ServerHttpResponse) outputMessage).setStatusCode(((ApiCoreEntity) httpEntity).getStatusCode()); + } else if (httpEntity instanceof ApiCoreResponse) { + ((ServerHttpResponse) outputMessage).setStatusCode(((ApiCoreResponse) httpEntity).getStatusCode()); } } HttpHeaders entityHeaders = httpEntity.getHeaders(); diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/OAuth2Util.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/OAuth2Util.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/OAuth2Util.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/OAuth2Util.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/SpringOAuth2AuthenticationEntryPoint.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/SpringOAuth2AuthenticationEntryPoint.java similarity index 94% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/SpringOAuth2AuthenticationEntryPoint.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/SpringOAuth2AuthenticationEntryPoint.java index 63f1d05..e28cae9 100644 --- a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/SpringOAuth2AuthenticationEntryPoint.java +++ b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/SpringOAuth2AuthenticationEntryPoint.java @@ -1,7 +1,7 @@ package cn.axzo.framework.web.servlet.security.oauth; import cn.axzo.framework.domain.web.code.BaseCode; -import cn.axzo.framework.web.http.ApiEntity; +import cn.axzo.framework.web.http.ApiResponse; import org.springframework.http.HttpEntity; import org.springframework.http.ResponseEntity; import org.springframework.http.converter.HttpMessageConverter; @@ -66,7 +66,7 @@ public class SpringOAuth2AuthenticationEntryPoint extends OAuth2AuthenticationEn private HttpEntity beforeBodyWrite(ResponseEntity responseEntity) { OAuth2Exception e = responseEntity.getBody(); - return ApiEntity.status(responseEntity.getStatusCode()) + return ApiResponse.status(responseEntity.getStatusCode()) .headers(responseEntity.getHeaders()) .err(BaseCode.parse(e.getHttpErrorCode()), OAuth2Util.getMessage(e)); } diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/resource/ResourceSecurityCustomConfigurer.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/resource/ResourceSecurityCustomConfigurer.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/security/oauth/resource/ResourceSecurityCustomConfigurer.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/security/oauth/resource/ResourceSecurityCustomConfigurer.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/CustomParameterDataTypeReader.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/CustomParameterDataTypeReader.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/CustomParameterDataTypeReader.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/CustomParameterDataTypeReader.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/CustomParameterDefaultReader.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/CustomParameterDefaultReader.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/CustomParameterDefaultReader.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/CustomParameterDefaultReader.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumExpandedParameterBuilderPlugin.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumExpandedParameterBuilderPlugin.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumExpandedParameterBuilderPlugin.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumExpandedParameterBuilderPlugin.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumFormatModelBuilderPlugin.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumFormatModelBuilderPlugin.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumFormatModelBuilderPlugin.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumFormatModelBuilderPlugin.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumModelPropertyBuilder.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumModelPropertyBuilder.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumModelPropertyBuilder.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumModelPropertyBuilder.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumStdOperationBuilderPlugin.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumStdOperationBuilderPlugin.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumStdOperationBuilderPlugin.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumStdOperationBuilderPlugin.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumStdPluginUtil.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumStdPluginUtil.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/EnumStdPluginUtil.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/EnumStdPluginUtil.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/FieldsParameterOperationBuilderPlugin.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/FieldsParameterOperationBuilderPlugin.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/FieldsParameterOperationBuilderPlugin.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/FieldsParameterOperationBuilderPlugin.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/FixApiModelPropertyPropertyBuilder.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/FixApiModelPropertyPropertyBuilder.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/FixApiModelPropertyPropertyBuilder.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/FixApiModelPropertyPropertyBuilder.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/FixParameterTypeReader.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/FixParameterTypeReader.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/FixParameterTypeReader.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/FixParameterTypeReader.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/FixedParameterRequiredReader.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/FixedParameterRequiredReader.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/FixedParameterRequiredReader.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/FixedParameterRequiredReader.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/PageableOperationBuilderPlugin.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/PageableOperationBuilderPlugin.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/PageableOperationBuilderPlugin.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/PageableOperationBuilderPlugin.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/RequestEntityPlugin.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/RequestEntityPlugin.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/RequestEntityPlugin.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/RequestEntityPlugin.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/ShowStatus.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/ShowStatus.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/ShowStatus.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/ShowStatus.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/TraceParameterOperationBuilderPlugin.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/TraceParameterOperationBuilderPlugin.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/TraceParameterOperationBuilderPlugin.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/TraceParameterOperationBuilderPlugin.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/annotations/ApiPageableParam.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/annotations/ApiPageableParam.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/annotations/ApiPageableParam.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/annotations/ApiPageableParam.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/annotations/ApiSortParam.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/annotations/ApiSortParam.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/annotations/ApiSortParam.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/annotations/ApiSortParam.java diff --git a/axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/annotations/ApiSortParams.java b/axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/annotations/ApiSortParams.java similarity index 100% rename from axzo-common-webmvc/src/main/java/cn.axzo.framework.web.servlet/swagger/annotations/ApiSortParams.java rename to axzo-common-webmvc/src/main/java/cn/axzo/framework/web/servlet/swagger/annotations/ApiSortParams.java diff --git a/pom.xml b/pom.xml index 258c567..232a58c 100644 --- a/pom.xml +++ b/pom.xml @@ -21,7 +21,6 @@ http://www.example.com - axzo-common-dependencies axzo-common-core axzo-common-math axzo-common-validator @@ -34,11 +33,13 @@ axzo-common-webmvc axzo-common-autoconfigure axzo-common-jackson + axzo-common-datas - - - + + 2.0.0-SNAPSHOT + 1.0.0-SNAPSHOT + @@ -57,11 +58,124 @@ cn.axzo.infra - axzo-common-dependencies - 1.0.0-SNAPSHOT + axzo-dependencies + ${axzo-dependencies.version} pom import + + + cn.axzo.framework + axzo-common-core + ${axzo-commons.version} + + + cn.axzo.framework + axzo-common-math + ${axzo-commons.version} + + + cn.axzo.framework + axzo-common-validator + ${axzo-commons.version} + + + cn.axzo.framework + axzo-common-domain + ${axzo-commons.version} + + + + cn.axzo.framework.framework + axzo-common-context + ${axzo-commons.version} + + + cn.axzo.framework + axzo-common-boot + ${axzo-commons.version} + + + cn.axzo.framework + axzo-common-web + ${axzo-commons.version} + + + cn.axzo.framework + axzo-common-webmvc + ${axzo-commons.version} + + + + + cn.axzo.framework.logging + log4j2-starter + ${axzo-commons.version} + + + cn.axzo.framework.logging + logback-starter + ${axzo-commons.version} + + + + + cn.axzo.framework.client + retrofit-starter + ${axzo-commons.version} + + + cn.axzo.framework.client + feign-starter + ${axzo-commons.version} + + + + + cn.axzo.framework.data + axzo-data-mybatis-plus + ${axzo-commons.version} + + + + + cn.axzo.framework.jackson + jackson-datatype-enumstd + ${axzo-commons.version} + + + cn.axzo.framework.jackson + jackson-datatype-fraction + ${axzo-commons.version} + + + cn.axzo.framework.jackson + jackson-datatype-period + ${axzo-commons.version} + + + cn.axzo.framework.jackson + jackson-datatype-string-trim + ${axzo-commons.version} + + + cn.axzo.framework.jackson + jackson-utility + ${axzo-commons.version} + + + cn.axzo.framework.jackson + jackson-starter + ${axzo-commons.version} + + + + + axzo + axzo repository + https://nexus.axzo.cn/repository/axzo/ + +