From e2e98d1f8ef72825e77686e2e91971c7c465ff4e Mon Sep 17 00:00:00 2001 From: zhouhao Date: Thu, 6 Jun 2024 16:28:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=8D=95=E5=85=83?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ReactiveAuthenticationHolder.java | 2 +- .../authorization/access/DimensionHelper.java | 2 +- .../define/DimensionsDefinition.java | 2 +- .../define/ResourceDefinition.java | 2 +- .../define/ResourcesDefinition.java | 2 +- ...ompositeReactiveAuthenticationManager.java | 2 +- .../simple/SimplePermission.java | 2 +- .../authorization/AuthenticationTests.java | 12 ++-- .../authorization/UserTokenManagerTests.java | 17 ++++- .../redis/RedisUserTokenManagerTest.java | 6 +- .../access/DimensionDataAccessHandler.java | 2 +- .../DefaultAuthorizationCodeGranterTest.java | 2 + .../impl/RedisAccessTokenManagerTest.java | 51 ++++++++------ .../web/api/crud/entity/QueryParamEntity.java | 2 +- .../web/crud/events/EntityEventListener.java | 2 +- .../web/crud/service/CrudService.java | 2 +- hsweb-core/pom.xml | 5 ++ .../org/hswebframework/web/warn/Warning.java | 66 +++++++++++++++++++ .../web/starter/CorsProperties.java | 2 +- .../starter/initialize/SystemInitialize.java | 1 + ...AuthorizationServiceAutoConfiguration.java | 4 +- .../service/DefaultDimensionService.java | 2 +- ...activeAuthenticationInitializeService.java | 2 +- .../webflux/WebFluxPermissionController.java | 2 +- .../reactive/ReactiveTestApplication.java | 15 +++-- .../web/file/FileUploadProperties.java | 2 +- pom.xml | 21 ++++-- 27 files changed, 174 insertions(+), 58 deletions(-) create mode 100644 hsweb-core/src/main/java/org/hswebframework/web/warn/Warning.java diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/ReactiveAuthenticationHolder.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/ReactiveAuthenticationHolder.java index ce7d204ae..fa7644d4f 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/ReactiveAuthenticationHolder.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/ReactiveAuthenticationHolder.java @@ -18,7 +18,7 @@ package org.hswebframework.web.authorization; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.web.authorization.simple.SimpleAuthentication; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/access/DimensionHelper.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/access/DimensionHelper.java index 24bc18002..9f3693295 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/access/DimensionHelper.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/access/DimensionHelper.java @@ -2,7 +2,7 @@ package org.hswebframework.web.authorization.access; import lombok.AccessLevel; import lombok.NoArgsConstructor; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.web.authorization.Authentication; import org.hswebframework.web.authorization.Dimension; import org.hswebframework.web.authorization.DimensionType; diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/DimensionsDefinition.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/DimensionsDefinition.java index b238f1545..ed8b15b7d 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/DimensionsDefinition.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/DimensionsDefinition.java @@ -2,7 +2,7 @@ package org.hswebframework.web.authorization.define; import lombok.Getter; import lombok.Setter; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.web.authorization.Dimension; import org.hswebframework.web.authorization.annotation.Logical; diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/ResourceDefinition.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/ResourceDefinition.java index 065cbdc64..3fe66eb35 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/ResourceDefinition.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/ResourceDefinition.java @@ -5,7 +5,7 @@ import lombok.AccessLevel; import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.web.authorization.annotation.Logical; import org.hswebframework.web.bean.FastBeanCopier; diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/ResourcesDefinition.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/ResourcesDefinition.java index 30874fb14..51a57a18a 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/ResourcesDefinition.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/define/ResourcesDefinition.java @@ -3,7 +3,7 @@ package org.hswebframework.web.authorization.define; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Getter; import lombok.Setter; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.web.authorization.Authentication; import org.hswebframework.web.authorization.Permission; import org.hswebframework.web.authorization.annotation.Logical; diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/CompositeReactiveAuthenticationManager.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/CompositeReactiveAuthenticationManager.java index c7a6dc643..4a14a0128 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/CompositeReactiveAuthenticationManager.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/CompositeReactiveAuthenticationManager.java @@ -2,7 +2,7 @@ package org.hswebframework.web.authorization.simple; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.web.authorization.*; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; diff --git a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/SimplePermission.java b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/SimplePermission.java index bdcaae402..bef9cf024 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/SimplePermission.java +++ b/hsweb-authorization/hsweb-authorization-api/src/main/java/org/hswebframework/web/authorization/simple/SimplePermission.java @@ -1,7 +1,7 @@ package org.hswebframework.web.authorization.simple; import lombok.*; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.web.authorization.Permission; import org.hswebframework.web.authorization.access.DataAccessConfig; diff --git a/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/AuthenticationTests.java b/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/AuthenticationTests.java index d624d8473..0eb341d6f 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/AuthenticationTests.java +++ b/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/AuthenticationTests.java @@ -9,6 +9,7 @@ import org.hswebframework.web.logger.ReactiveLogger; import org.junit.Assert; import org.junit.Before; import org.junit.Test; +import org.springframework.context.support.StaticApplicationContext; import reactor.core.publisher.Mono; import reactor.core.publisher.SignalType; import reactor.test.StepVerifier; @@ -115,8 +116,12 @@ public class AuthenticationTests { }; //绑定用户token - UserTokenManager userTokenManager = new DefaultUserTokenManager(); - UserToken token = userTokenManager.signIn("test", "token-test", "admin", -1,authentication).block(); + DefaultUserTokenManager userTokenManager = new DefaultUserTokenManager(); + StaticApplicationContext ctx= new StaticApplicationContext(); + ctx.refresh(); + userTokenManager.setEventPublisher(ctx); + UserToken token = userTokenManager.signIn("test", "token-test", "admin", -1,authentication) + .block(); ReactiveAuthenticationHolder.addSupplier(new UserTokenReactiveAuthenticationSupplier(userTokenManager, authenticationManager)); ParsedToken parsedToken=new ParsedToken() { @@ -136,9 +141,6 @@ public class AuthenticationTests { .currentReactive() .map(Authentication::getUser) .map(User::getId) - .doOnEach(ReactiveLogger.on(SignalType.ON_NEXT,(ctx,signal)->{ - System.out.println(ctx); - })) .contextWrite(Context.of(ParsedToken.class, parsedToken)) .contextWrite(ReactiveLogger.start("rid","1")) .as(StepVerifier::create) diff --git a/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/UserTokenManagerTests.java b/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/UserTokenManagerTests.java index 9331086cd..74a9e0953 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/UserTokenManagerTests.java +++ b/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/UserTokenManagerTests.java @@ -5,10 +5,19 @@ import org.hswebframework.web.authorization.simple.SimpleAuthentication; import org.hswebframework.web.authorization.token.*; import org.junit.Assert; import org.junit.Test; +import org.springframework.context.support.StaticApplicationContext; import reactor.test.StepVerifier; public class UserTokenManagerTests { + private DefaultUserTokenManager createUserTokenManager(){ + DefaultUserTokenManager userTokenManager = new DefaultUserTokenManager(); + StaticApplicationContext context=new StaticApplicationContext(); + context.refresh(); + + userTokenManager.setEventPublisher(context); + return userTokenManager; + } /** * 基本功能测试 @@ -17,7 +26,7 @@ public class UserTokenManagerTests { */ @Test public void testDefaultSetting() throws InterruptedException { - DefaultUserTokenManager userTokenManager = new DefaultUserTokenManager(); + DefaultUserTokenManager userTokenManager = createUserTokenManager(); userTokenManager.setAllopatricLoginMode(AllopatricLoginMode.allow); //允许异地登录 UserToken userToken = userTokenManager.signIn("test", "sessionId", "admin", 1000).block(); @@ -83,6 +92,7 @@ public class UserTokenManagerTests { public void testDeny() throws InterruptedException { DefaultUserTokenManager userTokenManager = new DefaultUserTokenManager(); userTokenManager.setAllopatricLoginMode(AllopatricLoginMode.deny);//如果在其他地方登录,本地禁止登录 + userTokenManager.setEventPublisher(new StaticApplicationContext()); userTokenManager.signIn("test", "sessionId", "admin", 10000).subscribe(); @@ -102,7 +112,8 @@ public class UserTokenManagerTests { */ @Test public void testOffline() { - DefaultUserTokenManager userTokenManager = new DefaultUserTokenManager(); + DefaultUserTokenManager userTokenManager = createUserTokenManager(); + userTokenManager.setAllopatricLoginMode(AllopatricLoginMode.offlineOther); //将其他地方登录的用户踢下线 userTokenManager.signIn("test", "sessionId", "admin", 1000).subscribe(); @@ -117,7 +128,7 @@ public class UserTokenManagerTests { @Test public void testAuth() { - UserTokenManager userTokenManager = new DefaultUserTokenManager(); + DefaultUserTokenManager userTokenManager = createUserTokenManager(); Authentication authentication = new SimpleAuthentication(); userTokenManager.signIn("test", "test", "test", 1000, authentication) diff --git a/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/token/redis/RedisUserTokenManagerTest.java b/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/token/redis/RedisUserTokenManagerTest.java index 53fbcdeaf..bfea6787a 100644 --- a/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/token/redis/RedisUserTokenManagerTest.java +++ b/hsweb-authorization/hsweb-authorization-api/src/test/java/org/hswebframework/web/authorization/token/redis/RedisUserTokenManagerTest.java @@ -7,6 +7,7 @@ import org.hswebframework.web.authorization.exception.UnAuthorizedException; import org.hswebframework.web.authorization.simple.SimpleAuthentication; import org.hswebframework.web.authorization.token.*; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; import org.springframework.data.redis.connection.RedisStandaloneConfiguration; import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory; @@ -19,6 +20,7 @@ import java.util.HashMap; import static org.junit.Assert.*; +@Ignore public class RedisUserTokenManagerTest { UserTokenManager tokenManager; @@ -28,8 +30,8 @@ public class RedisUserTokenManagerTest { LettuceConnectionFactory factory = new LettuceConnectionFactory(new RedisStandaloneConfiguration("127.0.0.1")); ReactiveRedisTemplate template = new ReactiveRedisTemplate<>( - factory, - RedisSerializationContext.java() + factory, + RedisSerializationContext.java() ); factory.afterPropertiesSet(); diff --git a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/handler/access/DimensionDataAccessHandler.java b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/handler/access/DimensionDataAccessHandler.java index 2c3638975..09aa2ed85 100644 --- a/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/handler/access/DimensionDataAccessHandler.java +++ b/hsweb-authorization/hsweb-authorization-basic/src/main/java/org/hswebframework/web/authorization/basic/handler/access/DimensionDataAccessHandler.java @@ -5,7 +5,7 @@ import lombok.Getter; import lombok.Setter; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.ezorm.core.param.Param; import org.hswebframework.ezorm.core.param.QueryParam; import org.hswebframework.web.api.crud.entity.Entity; diff --git a/hsweb-authorization/hsweb-authorization-oauth2/src/test/java/org/hswebframework/web/oauth2/server/code/DefaultAuthorizationCodeGranterTest.java b/hsweb-authorization/hsweb-authorization-oauth2/src/test/java/org/hswebframework/web/oauth2/server/code/DefaultAuthorizationCodeGranterTest.java index 2e93d1ef0..286d06eb6 100644 --- a/hsweb-authorization/hsweb-authorization-oauth2/src/test/java/org/hswebframework/web/oauth2/server/code/DefaultAuthorizationCodeGranterTest.java +++ b/hsweb-authorization/hsweb-authorization-oauth2/src/test/java/org/hswebframework/web/oauth2/server/code/DefaultAuthorizationCodeGranterTest.java @@ -5,12 +5,14 @@ import org.hswebframework.web.authorization.simple.SimpleUser; import org.hswebframework.web.oauth2.server.OAuth2Client; import org.hswebframework.web.oauth2.server.RedisHelper; import org.hswebframework.web.oauth2.server.impl.RedisAccessTokenManager; +import org.junit.Ignore; import org.junit.Test; import org.springframework.context.support.StaticApplicationContext; import reactor.test.StepVerifier; import java.util.Collections; +@Ignore public class DefaultAuthorizationCodeGranterTest { @Test diff --git a/hsweb-authorization/hsweb-authorization-oauth2/src/test/java/org/hswebframework/web/oauth2/server/impl/RedisAccessTokenManagerTest.java b/hsweb-authorization/hsweb-authorization-oauth2/src/test/java/org/hswebframework/web/oauth2/server/impl/RedisAccessTokenManagerTest.java index 75f65ac82..a118207ef 100644 --- a/hsweb-authorization/hsweb-authorization-oauth2/src/test/java/org/hswebframework/web/oauth2/server/impl/RedisAccessTokenManagerTest.java +++ b/hsweb-authorization/hsweb-authorization-oauth2/src/test/java/org/hswebframework/web/oauth2/server/impl/RedisAccessTokenManagerTest.java @@ -1,7 +1,9 @@ package org.hswebframework.web.oauth2.server.impl; import org.hswebframework.web.authorization.simple.SimpleAuthentication; +import org.hswebframework.web.authorization.simple.SimpleUser; import org.hswebframework.web.oauth2.server.RedisHelper; +import org.junit.Ignore; import org.junit.Test; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; @@ -9,6 +11,7 @@ import reactor.test.StepVerifier; import static org.junit.Assert.*; +@Ignore public class RedisAccessTokenManagerTest { @Test @@ -16,12 +19,14 @@ public class RedisAccessTokenManagerTest { RedisAccessTokenManager tokenManager = new RedisAccessTokenManager(RedisHelper.factory); SimpleAuthentication authentication = new SimpleAuthentication(); - + authentication.setUser(SimpleUser.builder() + .id("test") + .build()); tokenManager.createAccessToken("test", authentication, false) - .doOnNext(System.out::println) - .as(StepVerifier::create) - .expectNextCount(1) - .verifyComplete(); + .doOnNext(System.out::println) + .as(StepVerifier::create) + .expectNextCount(1) + .verifyComplete(); } @@ -30,14 +35,16 @@ public class RedisAccessTokenManagerTest { RedisAccessTokenManager tokenManager = new RedisAccessTokenManager(RedisHelper.factory); SimpleAuthentication authentication = new SimpleAuthentication(); - + authentication.setUser(SimpleUser.builder() + .id("test") + .build()); tokenManager - .createAccessToken("test", authentication, false) - .zipWhen(token -> tokenManager.refreshAccessToken("test", token.getRefreshToken())) - .as(StepVerifier::create) - .expectNextMatches(tp2 -> { - return tp2.getT1().getRefreshToken().equals(tp2.getT2().getRefreshToken()); - }) + .createAccessToken("test", authentication, false) + .zipWhen(token -> tokenManager.refreshAccessToken("test", token.getRefreshToken())) + .as(StepVerifier::create) + .expectNextMatches(tp2 -> { + return tp2.getT1().getRefreshToken().equals(tp2.getT2().getRefreshToken()); + }) ; } @@ -47,16 +54,18 @@ public class RedisAccessTokenManagerTest { RedisAccessTokenManager tokenManager = new RedisAccessTokenManager(RedisHelper.factory); SimpleAuthentication authentication = new SimpleAuthentication(); - + authentication.setUser(SimpleUser.builder() + .id("test") + .build()); Flux - .concat(tokenManager - .createAccessToken("test", authentication, true), - tokenManager - .createAccessToken("test", authentication, true)) - .doOnNext(System.out::println) - .as(StepVerifier::create) - .expectNextCount(2) - .verifyComplete(); + .concat(tokenManager + .createAccessToken("test", authentication, true), + tokenManager + .createAccessToken("test", authentication, true)) + .doOnNext(System.out::println) + .as(StepVerifier::create) + .expectNextCount(2) + .verifyComplete(); } } \ No newline at end of file diff --git a/hsweb-commons/hsweb-commons-api/src/main/java/org/hswebframework/web/api/crud/entity/QueryParamEntity.java b/hsweb-commons/hsweb-commons-api/src/main/java/org/hswebframework/web/api/crud/entity/QueryParamEntity.java index c7af9c1d7..edaa3e755 100644 --- a/hsweb-commons/hsweb-commons-api/src/main/java/org/hswebframework/web/api/crud/entity/QueryParamEntity.java +++ b/hsweb-commons/hsweb-commons-api/src/main/java/org/hswebframework/web/api/crud/entity/QueryParamEntity.java @@ -5,7 +5,7 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.hswebframework.ezorm.core.NestConditional; import org.hswebframework.ezorm.core.dsl.Query; diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/events/EntityEventListener.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/events/EntityEventListener.java index 0f6e277cc..e6a6d693a 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/events/EntityEventListener.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/events/EntityEventListener.java @@ -3,7 +3,7 @@ package org.hswebframework.web.crud.events; import lombok.RequiredArgsConstructor; import lombok.Setter; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.ezorm.core.GlobalConfig; import org.hswebframework.ezorm.core.param.QueryParam; import org.hswebframework.ezorm.rdb.events.EventListener; diff --git a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/service/CrudService.java b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/service/CrudService.java index 7ffd1b106..97477f941 100644 --- a/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/service/CrudService.java +++ b/hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/service/CrudService.java @@ -1,6 +1,6 @@ package org.hswebframework.web.crud.service; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.ezorm.core.param.QueryParam; import org.hswebframework.ezorm.rdb.mapping.SyncDelete; import org.hswebframework.ezorm.rdb.mapping.SyncQuery; diff --git a/hsweb-core/pom.xml b/hsweb-core/pom.xml index fb71d6a45..99bbed5b9 100644 --- a/hsweb-core/pom.xml +++ b/hsweb-core/pom.xml @@ -132,5 +132,10 @@ 0.1.3 + + org.apache.commons + commons-collections4 + + \ No newline at end of file diff --git a/hsweb-core/src/main/java/org/hswebframework/web/warn/Warning.java b/hsweb-core/src/main/java/org/hswebframework/web/warn/Warning.java new file mode 100644 index 000000000..9147d537f --- /dev/null +++ b/hsweb-core/src/main/java/org/hswebframework/web/warn/Warning.java @@ -0,0 +1,66 @@ +package org.hswebframework.web.warn; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import reactor.core.publisher.Flux; +import reactor.core.publisher.Mono; +import reactor.util.context.Context; +import reactor.util.context.ContextView; + +import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; +import java.util.function.BiFunction; +import java.util.function.Function; +import java.util.function.Supplier; + +@Getter +@AllArgsConstructor +public class Warning { + + private static final Object CONTEXT_KEY = Warning.class; + + private final String code; + + private final Object[] args; + + + public static Context addWarnToContext(ContextView context, Supplier warning) { + Context ctx = createWarning(context); + List warnings = ctx.get(CONTEXT_KEY); + warnings.add(warning.get()); + return ctx; + } + + public static Context createWarning(ContextView context) { + Context ctx = Context.of(context); + if (!ctx.hasKey(CONTEXT_KEY)) { + ctx = ctx.put(CONTEXT_KEY, new CopyOnWriteArrayList<>()); + } + return ctx; + } + + + public static Function> resumeFluxError( + Throwable error, + Function builder) { + return err -> Flux.deferContextual(ctx -> { + Warning warning = builder.apply(err); + if (warning != null && ctx.hasKey(CONTEXT_KEY)) { + ctx.>get(CONTEXT_KEY).add(warning); + } + return Mono.empty(); + }); + } + + public static Function> resumeMonoError( + Throwable error, + Function builder) { + return err -> Mono.deferContextual(ctx -> { + Warning warning = builder.apply(err); + if (warning != null && ctx.hasKey(CONTEXT_KEY)) { + ctx.>get(CONTEXT_KEY).add(warning); + } + return Mono.empty(); + }); + } +} diff --git a/hsweb-starter/src/main/java/org/hswebframework/web/starter/CorsProperties.java b/hsweb-starter/src/main/java/org/hswebframework/web/starter/CorsProperties.java index 7a9e636e1..5ea92aa4b 100644 --- a/hsweb-starter/src/main/java/org/hswebframework/web/starter/CorsProperties.java +++ b/hsweb-starter/src/main/java/org/hswebframework/web/starter/CorsProperties.java @@ -3,7 +3,7 @@ package org.hswebframework.web.starter; import lombok.Getter; import lombok.Setter; import lombok.ToString; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.http.HttpMethod; import org.springframework.web.reactive.config.CorsRegistration; diff --git a/hsweb-starter/src/main/java/org/hswebframework/web/starter/initialize/SystemInitialize.java b/hsweb-starter/src/main/java/org/hswebframework/web/starter/initialize/SystemInitialize.java index 2c8dc32e9..ad6b9da94 100644 --- a/hsweb-starter/src/main/java/org/hswebframework/web/starter/initialize/SystemInitialize.java +++ b/hsweb-starter/src/main/java/org/hswebframework/web/starter/initialize/SystemInitialize.java @@ -27,6 +27,7 @@ import java.util.stream.Collectors; /** * @author zhouhao */ +@Deprecated public class SystemInitialize { private final Logger logger = LoggerFactory.getLogger(SystemInitialize.class); diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/configuration/AuthorizationServiceAutoConfiguration.java b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/configuration/AuthorizationServiceAutoConfiguration.java index 49f0d035c..a5a13c444 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/configuration/AuthorizationServiceAutoConfiguration.java +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/configuration/AuthorizationServiceAutoConfiguration.java @@ -26,8 +26,8 @@ import org.springframework.context.annotation.Configuration; public class AuthorizationServiceAutoConfiguration { @AutoConfiguration - @AutoConfigureBefore(DefaultAuthorizationAutoConfiguration.class) - static class ReactiveAuthorizationServiceAutoConfiguration { + public static class ReactiveAuthorizationServiceAutoConfiguration { + @ConditionalOnBean(ReactiveRepository.class) @Bean public ReactiveUserService reactiveUserService() { diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultDimensionService.java b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultDimensionService.java index 79ccc2fad..98242a361 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultDimensionService.java +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultDimensionService.java @@ -1,6 +1,6 @@ package org.hswebframework.web.system.authorization.defaults.service; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository; import org.hswebframework.web.authorization.Dimension; import org.hswebframework.web.authorization.DimensionProvider; diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultReactiveAuthenticationInitializeService.java b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultReactiveAuthenticationInitializeService.java index be5cf9489..062edddd9 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultReactiveAuthenticationInitializeService.java +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultReactiveAuthenticationInitializeService.java @@ -1,7 +1,7 @@ package org.hswebframework.web.system.authorization.defaults.service; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository; import org.hswebframework.web.authorization.Authentication; import org.hswebframework.web.authorization.Dimension; diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/webflux/WebFluxPermissionController.java b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/webflux/WebFluxPermissionController.java index b2137c937..cbc6d5fb3 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/webflux/WebFluxPermissionController.java +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/webflux/WebFluxPermissionController.java @@ -3,7 +3,7 @@ package org.hswebframework.web.system.authorization.defaults.webflux; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.ezorm.rdb.operator.dml.query.SortOrder; import org.hswebframework.web.api.crud.entity.QueryNoPagingOperation; import org.hswebframework.web.api.crud.entity.QueryOperation; diff --git a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/ReactiveTestApplication.java b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/ReactiveTestApplication.java index 42859fb4f..470afec4d 100644 --- a/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/ReactiveTestApplication.java +++ b/hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/test/java/org/hswebframework/web/system/authorization/defaults/service/reactive/ReactiveTestApplication.java @@ -1,20 +1,25 @@ package org.hswebframework.web.system.authorization.defaults.service.reactive; import org.hswebframework.web.authorization.simple.DefaultAuthorizationAutoConfiguration; +import org.hswebframework.web.crud.annotation.EnableEasyormRepository; +import org.hswebframework.web.crud.configuration.EasyormConfiguration; import org.hswebframework.web.crud.configuration.JdbcSqlExecutorConfiguration; +import org.hswebframework.web.system.authorization.defaults.configuration.AuthorizationServiceAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.r2dbc.R2dbcTransactionManagerAutoConfiguration; @SpringBootApplication(exclude = { - //TransactionAutoConfiguration.class, - JdbcSqlExecutorConfiguration.class, - DataSourceAutoConfiguration.class + //TransactionAutoConfiguration.class, + JdbcSqlExecutorConfiguration.class, + DataSourceAutoConfiguration.class }) @ImportAutoConfiguration({ - R2dbcTransactionManagerAutoConfiguration.class, - DefaultAuthorizationAutoConfiguration.class + R2dbcTransactionManagerAutoConfiguration.class, + DefaultAuthorizationAutoConfiguration.class, + AuthorizationServiceAutoConfiguration.class, + AuthorizationServiceAutoConfiguration.ReactiveAuthorizationServiceAutoConfiguration.class }) public class ReactiveTestApplication { diff --git a/hsweb-system/hsweb-system-file/src/main/java/org/hswebframework/web/file/FileUploadProperties.java b/hsweb-system/hsweb-system-file/src/main/java/org/hswebframework/web/file/FileUploadProperties.java index 795705fc2..4cd67adfa 100644 --- a/hsweb-system/hsweb-system-file/src/main/java/org/hswebframework/web/file/FileUploadProperties.java +++ b/hsweb-system/hsweb-system-file/src/main/java/org/hswebframework/web/file/FileUploadProperties.java @@ -2,7 +2,7 @@ package org.hswebframework.web.file; import lombok.Getter; import lombok.Setter; -import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections4.CollectionUtils; import org.hswebframework.utils.time.DateFormatter; import org.hswebframework.web.id.IDGenerator; import org.springframework.boot.context.properties.ConfigurationProperties; diff --git a/pom.xml b/pom.xml index 49d8380de..0c996af44 100644 --- a/pom.xml +++ b/pom.xml @@ -182,6 +182,9 @@ prepare-agent + + jacocoArgLine + report @@ -254,15 +257,13 @@ org.apache.maven.plugins maven-surefire-plugin - 2.17 + 2.22.0 **/*Test.java - **/*Test.groovy **/*Tests.java - **/*Test.groovy - **/*Spec.java + -Dfile.encoding=UTF-8 ${jacocoArgLine} @@ -406,6 +407,18 @@ commons-beanutils commons-beanutils 1.9.4 + + + + + + + + + + org.apache.commons + commons-collections4 + 4.4