From dee0516e877361d61049caaba29d9f2c7518d211 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Mon, 9 Sep 2019 18:40:29 -0400 Subject: [PATCH] Splits gateway RSocket support in to Common, Client and Broker Modules Metadata moved to common module. Auto config sets up metadata parsing. Client module created with properties and helper classes for ease of using RouteSetup and Forwarding metadata. --- spring-cloud-gateway-dependencies/pom.xml | 15 ++ spring-cloud-gateway-rsocket/pom.xml | 129 +------------ .../pom.xml | 168 +++++++++++++++++ .../gateway/rsocket/actuate/BrokerInfo.java | 6 +- .../actuate/GatewayRSocketActuator.java | 0 .../GatewayRSocketActuatorRegistrar.java | 2 +- .../gateway/rsocket/actuate/RouteJoin.java | 32 ++-- .../gateway/rsocket/actuate/RouteRemove.java | 13 +- .../GatewayRSocketAutoConfiguration.java | 36 +--- ...atewayRSocketEnvironmentPostProcessor.java | 0 .../GatewayRSocketProperties.java | 0 .../rsocket/core/AbstractGatewayRSocket.java | 2 +- .../gateway/rsocket/core/GatewayExchange.java | 4 +- .../gateway/rsocket/core/GatewayFilter.java | 0 .../rsocket/core/GatewayFilterChain.java | 0 .../rsocket/core/GatewayPredicate.java | 0 .../gateway/rsocket/core/GatewayRSocket.java | 2 +- .../rsocket/core/GatewayRSocketFactory.java | 6 +- ...GatewayServerRSocketFactoryCustomizer.java | 0 .../rsocket/core/PendingRequestRSocket.java | 2 +- .../core/PendingRequestRSocketFactory.java | 2 +- .../rsocket/filter/AbstractFilterChain.java | 0 .../filter/AbstractRSocketExchange.java | 0 .../gateway/rsocket/filter/FilterChain.java | 0 .../rsocket/filter/RSocketExchange.java | 0 .../gateway/rsocket/filter/RSocketFilter.java | 0 .../metrics/MicrometerResponderRSocket.java | 0 ...MicrometerResponderRSocketInterceptor.java | 0 .../gateway/rsocket/route/DefaultRoute.java | 2 +- .../cloud/gateway/rsocket/route/Route.java | 0 .../cloud/gateway/rsocket/route/Routes.java | 0 .../rsocket/routing/LoadBalancerFactory.java | 2 +- .../gateway/rsocket/routing/RoutingTable.java | 12 +- .../rsocket/routing/RoutingTableRoutes.java | 2 +- .../RoutingTableSocketAcceptorFilter.java | 0 .../socketacceptor/GatewaySocketAcceptor.java | 4 +- .../SocketAcceptorExchange.java | 2 +- .../socketacceptor/SocketAcceptorFilter.java | 0 .../SocketAcceptorFilterChain.java | 0 .../SocketAcceptorPredicate.java | 0 .../SocketAcceptorPredicateFilter.java | 0 .../rsocket/support/AsyncPredicate.java | 0 .../main/resources/META-INF/spring.factories | 0 ...atewayRSocketActuatorIntegrationTests.java | 23 +-- .../GatewayRSocketActuatorRegistrarTests.java | 0 .../GatewayRSocketAutoConfigurationTests.java | 0 .../core/GatewayRSocketIntegrationTests.java | 0 .../rsocket/core/GatewayRSocketTests.java | 14 +- .../routing/RoutingTableRoutesTests.java | 4 +- .../rsocket/routing/RoutingTableTests.java | 7 +- .../GatewaySocketAcceptorTests.java | 10 +- .../SocketAcceptorPredicateFilterTests.java | 0 .../gateway/rsocket/test/PingPongApp.java | 13 +- .../test/SocketAcceptorFilterOrderTests.java | 0 .../src/test/resources/application.yml | 0 .../pom.xml | 145 +++++++++++++++ .../gateway/rsocket/client/BrokerClient.java | 75 ++++++++ .../rsocket/client/ClientProperties.java | 170 ++++++++++++++++++ ...GatewayRSocketClientAutoConfiguration.java | 115 ++++++++++++ .../main/resources/META-INF/spring.factories | 3 + .../pom.xml | 157 ++++++++++++++++ ...GatewayRSocketCommonAutoConfiguration.java | 51 ++++++ ...SocketCommonMetadataAutoConfiguration.java | 69 +++++++ .../rsocket/common}/metadata/Forwarding.java | 6 +- .../rsocket/common}/metadata/Metadata.java | 2 +- .../rsocket/common}/metadata/RouteSetup.java | 4 +- .../common}/metadata/TagsMetadata.java | 6 +- .../common}/metadata/WellKnownKey.java | 2 +- .../main/resources/META-INF/spring.factories | 4 + .../metadata/ForwardingIntegrationTests.java | 4 +- .../common}/metadata/ForwardingTests.java | 10 +- .../metadata/RouteSetupIntegrationTests.java | 4 +- .../common}/metadata/RouteSetupTests.java | 6 +- .../common}/metadata/TagsMetadataTests.java | 8 +- .../rsocket/common}/test/MetadataEncoder.java | 2 +- src/checkstyle/checkstyle-suppressions.xml | 1 + 76 files changed, 1094 insertions(+), 264 deletions(-) create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/pom.xml rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/BrokerInfo.java (93%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuator.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrar.java (98%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteJoin.java (81%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteRemove.java (89%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfiguration.java (79%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketEnvironmentPostProcessor.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketProperties.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/AbstractGatewayRSocket.java (97%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayExchange.java (95%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilter.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilterChain.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayPredicate.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocket.java (98%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketFactory.java (92%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayServerRSocketFactoryCustomizer.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocket.java (98%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocketFactory.java (97%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractFilterChain.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractRSocketExchange.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/filter/FilterChain.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketExchange.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketFilter.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocket.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocketInterceptor.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/route/DefaultRoute.java (98%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/route/Route.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/route/Routes.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/routing/LoadBalancerFactory.java (97%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTable.java (97%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutes.java (98%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableSocketAcceptorFilter.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptor.java (96%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorExchange.java (95%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilter.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilterChain.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicate.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilter.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/java/org/springframework/cloud/gateway/rsocket/support/AsyncPredicate.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/main/resources/META-INF/spring.factories (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorIntegrationTests.java (90%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrarTests.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfigurationTests.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketIntegrationTests.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketTests.java (94%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutesTests.java (93%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableTests.java (96%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptorTests.java (94%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilterTests.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/test/PingPongApp.java (94%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/java/org/springframework/cloud/gateway/rsocket/test/SocketAcceptorFilterOrderTests.java (100%) rename spring-cloud-gateway-rsocket/{ => spring-cloud-gateway-rsocket-broker}/src/test/resources/application.yml (100%) create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/pom.xml create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/BrokerClient.java create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/ClientProperties.java create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/GatewayRSocketClientAutoConfiguration.java create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/resources/META-INF/spring.factories create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/pom.xml create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/autoconfigure/GatewayRSocketCommonAutoConfiguration.java create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/autoconfigure/GatewayRSocketCommonMetadataAutoConfiguration.java rename spring-cloud-gateway-rsocket/{src/main/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common}/metadata/Forwarding.java (95%) rename spring-cloud-gateway-rsocket/{src/main/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common}/metadata/Metadata.java (93%) rename spring-cloud-gateway-rsocket/{src/main/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common}/metadata/RouteSetup.java (97%) rename spring-cloud-gateway-rsocket/{src/main/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common}/metadata/TagsMetadata.java (97%) rename spring-cloud-gateway-rsocket/{src/main/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common}/metadata/WellKnownKey.java (98%) create mode 100644 spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/resources/META-INF/spring.factories rename spring-cloud-gateway-rsocket/{src/test/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common}/metadata/ForwardingIntegrationTests.java (94%) rename spring-cloud-gateway-rsocket/{src/test/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common}/metadata/ForwardingTests.java (82%) rename spring-cloud-gateway-rsocket/{src/test/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common}/metadata/RouteSetupIntegrationTests.java (94%) rename spring-cloud-gateway-rsocket/{src/test/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common}/metadata/RouteSetupTests.java (92%) rename spring-cloud-gateway-rsocket/{src/test/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common}/metadata/TagsMetadataTests.java (86%) rename spring-cloud-gateway-rsocket/{src/test/java/org/springframework/cloud/gateway/rsocket => spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common}/test/MetadataEncoder.java (99%) diff --git a/spring-cloud-gateway-dependencies/pom.xml b/spring-cloud-gateway-dependencies/pom.xml index 17df4828..f889bc75 100644 --- a/spring-cloud-gateway-dependencies/pom.xml +++ b/spring-cloud-gateway-dependencies/pom.xml @@ -43,6 +43,21 @@ spring-cloud-gateway-rsocket ${project.version} + + org.springframework.cloud + spring-cloud-gateway-rsocket-common + ${project.version} + + + org.springframework.cloud + spring-cloud-gateway-rsocket-client + ${project.version} + + + org.springframework.cloud + spring-cloud-gateway-rsocket-broker + ${project.version} + org.springframework.cloud spring-cloud-starter-gateway diff --git a/spring-cloud-gateway-rsocket/pom.xml b/spring-cloud-gateway-rsocket/pom.xml index 1b9d86e4..8fbd9048 100644 --- a/spring-cloud-gateway-rsocket/pom.xml +++ b/spring-cloud-gateway-rsocket/pom.xml @@ -29,129 +29,12 @@ spring-cloud-gateway-rsocket Spring Cloud Gateway RSocket Spring Cloud Gateway RSocket + pom - - - org.springframework.boot - spring-boot-starter-rsocket - - - org.springframework.boot - spring-boot-configuration-processor - true - - - io.rsocket - rsocket-core - - - io.rsocket - rsocket-micrometer - - - io.rsocket - rsocket-transport-netty - - - io.micrometer - micrometer-core - - - org.roaringbitmap - RoaringBitmap - - - org.springframework.boot - spring-boot-starter-actuator - test - - - org.projectlombok - lombok - test - - - org.springframework.boot - spring-boot-starter-test - test - - - io.projectreactor - reactor-test - test - - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - -parameters - - - - - - default-compile - none - - - - default-testCompile - none - - - java-compile - compile - - compile - - - - java-test-compile - test-compile - - testCompile - - - - - - org.apache.maven.plugins - maven-jar-plugin - 3.1.0 - - - - test-jar - - - - - - - - - java8plus - - [1.8,2.0) - - - - - org.apache.maven.plugins - maven-compiler-plugin - - - -parameters - - - - - - - + + spring-cloud-gateway-rsocket-common + spring-cloud-gateway-rsocket-client + spring-cloud-gateway-rsocket-broker + diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/pom.xml b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/pom.xml new file mode 100644 index 00000000..a9e50759 --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/pom.xml @@ -0,0 +1,168 @@ + + + + + 4.0.0 + + org.springframework.cloud + spring-cloud-gateway-rsocket + 2.2.0.BUILD-SNAPSHOT + .. + + org.springframework.cloud + spring-cloud-gateway-rsocket-broker + Spring Cloud Gateway RSocket Broker + Spring Cloud Gateway RSocket Broker + + + + org.springframework.cloud + spring-cloud-gateway-rsocket-common + + + org.springframework.boot + spring-boot-starter-rsocket + + + org.springframework.boot + spring-boot-configuration-processor + true + + + io.rsocket + rsocket-core + + + io.rsocket + rsocket-micrometer + + + io.rsocket + rsocket-transport-netty + + + io.micrometer + micrometer-core + + + org.roaringbitmap + RoaringBitmap + + + org.springframework.boot + spring-boot-starter-actuator + test + + + org.projectlombok + lombok + test + + + org.springframework.boot + spring-boot-starter-test + test + + + io.projectreactor + reactor-test + test + + + org.springframework.cloud + spring-cloud-gateway-rsocket-common + ${project.version} + test-jar + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -parameters + + + + + + default-compile + none + + + + default-testCompile + none + + + java-compile + compile + + compile + + + + java-test-compile + test-compile + + testCompile + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.0 + + + + test-jar + + + + + + + + + java8plus + + [1.8,2.0) + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -parameters + + + + + + + + + diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/BrokerInfo.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/BrokerInfo.java similarity index 93% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/BrokerInfo.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/BrokerInfo.java index 34acc5b2..972a9943 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/BrokerInfo.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/BrokerInfo.java @@ -20,9 +20,9 @@ import java.math.BigInteger; import java.util.Map; import java.util.Objects; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata.Key; -import org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata.Key; +import org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuator.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuator.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuator.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuator.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrar.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrar.java similarity index 98% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrar.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrar.java index 7e238481..1a79b653 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrar.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrar.java @@ -29,7 +29,7 @@ import io.rsocket.frame.SetupFrameFlyweight; import io.rsocket.util.DefaultPayload; import org.springframework.cloud.gateway.rsocket.autoconfigure.GatewayRSocketProperties; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.routing.RoutingTable; import org.springframework.context.SmartLifecycle; import org.springframework.core.io.buffer.DataBufferFactory; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteJoin.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteJoin.java similarity index 81% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteJoin.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteJoin.java index 9b35e8cd..a1167f83 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteJoin.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteJoin.java @@ -20,9 +20,9 @@ import java.math.BigInteger; import java.util.Map; import java.util.Objects; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata.Key; -import org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata.Key; +import org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; @@ -38,7 +38,8 @@ public final class RouteJoin { private final Map tags; - public RouteJoin(BigInteger brokerId, BigInteger routeId, long timestamp, String serviceName, Map tags) { + public RouteJoin(BigInteger brokerId, BigInteger routeId, long timestamp, + String serviceName, Map tags) { this.brokerId = brokerId; this.routeId = routeId; this.timestamp = timestamp; @@ -75,27 +76,24 @@ public final class RouteJoin { return false; } RouteJoin routeJoin = (RouteJoin) o; - return this.timestamp == routeJoin.timestamp && - Objects.equals(this.brokerId, routeJoin.brokerId) && - Objects.equals(this.routeId, routeJoin.routeId) && - Objects.equals(this.serviceName, routeJoin.serviceName) && - Objects.equals(this.tags, routeJoin.tags); + return this.timestamp == routeJoin.timestamp + && Objects.equals(this.brokerId, routeJoin.brokerId) + && Objects.equals(this.routeId, routeJoin.routeId) + && Objects.equals(this.serviceName, routeJoin.serviceName) + && Objects.equals(this.tags, routeJoin.tags); } @Override public int hashCode() { - return Objects.hash(this.brokerId, this.routeId, this.timestamp, this.serviceName, this.tags); + return Objects.hash(this.brokerId, this.routeId, this.timestamp, this.serviceName, + this.tags); } @Override public String toString() { - return new ToStringCreator(this) - .append("brokerId", brokerId) - .append("routeId", routeId) - .append("timestamp", timestamp) - .append("serviceName", serviceName) - .append("tags", tags) - .toString(); + return new ToStringCreator(this).append("brokerId", brokerId) + .append("routeId", routeId).append("timestamp", timestamp) + .append("serviceName", serviceName).append("tags", tags).toString(); } diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteRemove.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteRemove.java similarity index 89% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteRemove.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteRemove.java index a53f7b99..817e3a44 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteRemove.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/actuate/RouteRemove.java @@ -57,9 +57,9 @@ public final class RouteRemove { return false; } RouteRemove routeJoin = (RouteRemove) o; - return this.timestamp == routeJoin.timestamp && - Objects.equals(this.brokerId, routeJoin.brokerId) && - Objects.equals(this.routeId, routeJoin.routeId); + return this.timestamp == routeJoin.timestamp + && Objects.equals(this.brokerId, routeJoin.brokerId) + && Objects.equals(this.routeId, routeJoin.routeId); } @Override @@ -69,11 +69,8 @@ public final class RouteRemove { @Override public String toString() { - return new ToStringCreator(this) - .append("brokerId", brokerId) - .append("routeId", routeId) - .append("timestamp", timestamp) - .toString(); + return new ToStringCreator(this).append("brokerId", brokerId) + .append("routeId", routeId).append("timestamp", timestamp).toString(); } diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfiguration.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfiguration.java similarity index 79% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfiguration.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfiguration.java index 9db37f74..02f02779 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfiguration.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfiguration.java @@ -21,21 +21,20 @@ import java.util.List; import io.micrometer.core.instrument.MeterRegistry; import io.rsocket.RSocket; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.rsocket.RSocketServerAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.rsocket.messaging.RSocketStrategiesCustomizer; import org.springframework.boot.rsocket.server.RSocketServerBootstrap; import org.springframework.boot.rsocket.server.RSocketServerFactory; import org.springframework.cloud.gateway.rsocket.actuate.GatewayRSocketActuator; import org.springframework.cloud.gateway.rsocket.actuate.GatewayRSocketActuatorRegistrar; +import org.springframework.cloud.gateway.rsocket.common.autoconfigure.GatewayRSocketCommonAutoConfiguration; import org.springframework.cloud.gateway.rsocket.core.GatewayRSocketFactory; import org.springframework.cloud.gateway.rsocket.core.GatewayServerRSocketFactoryCustomizer; import org.springframework.cloud.gateway.rsocket.core.PendingRequestRSocketFactory; -import org.springframework.cloud.gateway.rsocket.metadata.Forwarding; -import org.springframework.cloud.gateway.rsocket.metadata.RouteSetup; import org.springframework.cloud.gateway.rsocket.route.Routes; import org.springframework.cloud.gateway.rsocket.routing.LoadBalancerFactory; import org.springframework.cloud.gateway.rsocket.routing.RoutingTable; @@ -48,14 +47,9 @@ import org.springframework.cloud.gateway.rsocket.socketacceptor.SocketAcceptorPr import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.core.env.Environment; -import org.springframework.messaging.rsocket.DefaultMetadataExtractor; -import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.messaging.rsocket.RSocketStrategies; import org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler; -import static org.springframework.cloud.gateway.rsocket.metadata.Forwarding.FORWARDING_MIME_TYPE; -import static org.springframework.cloud.gateway.rsocket.metadata.RouteSetup.ROUTE_SETUP_MIME_TYPE; - /** * @author Spencer Gibb */ @@ -65,6 +59,7 @@ import static org.springframework.cloud.gateway.rsocket.metadata.RouteSetup.ROUT @EnableConfigurationProperties @ConditionalOnClass(RSocket.class) @AutoConfigureBefore(RSocketServerAutoConfiguration.class) +@AutoConfigureAfter(GatewayRSocketCommonAutoConfiguration.class) public class GatewayRSocketAutoConfiguration { @Bean @@ -127,23 +122,8 @@ public class GatewayRSocketAutoConfiguration { public GatewaySocketAcceptor socketAcceptor(GatewayRSocketFactory rsocketFactory, List filters, MeterRegistry meterRegistry, GatewayRSocketProperties properties, RSocketStrategies rSocketStrategies) { - MetadataExtractor metadataExtractor = registerMimeTypes(rSocketStrategies); return new GatewaySocketAcceptor(rsocketFactory, filters, meterRegistry, - properties, metadataExtractor); - } - - public static MetadataExtractor registerMimeTypes( - RSocketStrategies rSocketStrategies) { - MetadataExtractor metadataExtractor = rSocketStrategies.metadataExtractor(); - // TODO: see if possible to make easier in framework. - if (metadataExtractor instanceof DefaultMetadataExtractor) { - DefaultMetadataExtractor extractor = (DefaultMetadataExtractor) metadataExtractor; - extractor.metadataToExtract(FORWARDING_MIME_TYPE, Forwarding.class, - Forwarding.METADATA_KEY); - extractor.metadataToExtract(ROUTE_SETUP_MIME_TYPE, RouteSetup.class, - RouteSetup.METADATA_KEY); - } - return metadataExtractor; + properties, rSocketStrategies.metadataExtractor()); } @Bean @@ -159,14 +139,6 @@ public class GatewayRSocketAutoConfiguration { return new RSocketServerBootstrap(rSocketServerFactory, gatewaySocketAcceptor); } - @Bean - public RSocketStrategiesCustomizer gatewayRSocketStrategiesCustomizer() { - return strategies -> { - strategies.decoder(new Forwarding.Decoder(), new RouteSetup.Decoder()) - .encoder(new Forwarding.Encoder(), new RouteSetup.Encoder()); - }; - } - @Bean public GatewayRSocketActuatorRegistrar gatewayRSocketActuatorRegistrar( RoutingTable routingTable, RSocketMessageHandler messageHandler, diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketEnvironmentPostProcessor.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketEnvironmentPostProcessor.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketEnvironmentPostProcessor.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketEnvironmentPostProcessor.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketProperties.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketProperties.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketProperties.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketProperties.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/AbstractGatewayRSocket.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/AbstractGatewayRSocket.java similarity index 97% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/AbstractGatewayRSocket.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/AbstractGatewayRSocket.java index f3525f99..ee08337b 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/AbstractGatewayRSocket.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/AbstractGatewayRSocket.java @@ -25,7 +25,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.cloud.gateway.rsocket.autoconfigure.GatewayRSocketProperties; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.util.Assert; import org.springframework.util.StringUtils; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayExchange.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayExchange.java similarity index 95% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayExchange.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayExchange.java index 31ec79f7..b552d8a7 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayExchange.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayExchange.java @@ -23,9 +23,9 @@ import io.rsocket.Payload; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding; +import org.springframework.cloud.gateway.rsocket.common.metadata.Metadata; import org.springframework.cloud.gateway.rsocket.filter.AbstractRSocketExchange; -import org.springframework.cloud.gateway.rsocket.metadata.Forwarding; -import org.springframework.cloud.gateway.rsocket.metadata.Metadata; import org.springframework.messaging.rsocket.MetadataExtractor; /** diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilter.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilter.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilter.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilter.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilterChain.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilterChain.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilterChain.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayFilterChain.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayPredicate.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayPredicate.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayPredicate.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayPredicate.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocket.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocket.java similarity index 98% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocket.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocket.java index 66252b6c..8ccad6f5 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocket.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocket.java @@ -32,7 +32,7 @@ import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; import org.springframework.cloud.gateway.rsocket.autoconfigure.GatewayRSocketProperties; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.route.Route; import org.springframework.cloud.gateway.rsocket.route.Routes; import org.springframework.cloud.gateway.rsocket.routing.LoadBalancerFactory; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketFactory.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketFactory.java similarity index 92% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketFactory.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketFactory.java index ca81a1d1..7e7f8647 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketFactory.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketFactory.java @@ -21,15 +21,15 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.cloud.gateway.rsocket.autoconfigure.GatewayRSocketProperties; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.route.Routes; import org.springframework.cloud.gateway.rsocket.routing.LoadBalancerFactory; import org.springframework.cloud.gateway.rsocket.routing.RoutingTable; import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.util.Assert; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.ROUTE_ID; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.SERVICE_NAME; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.ROUTE_ID; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.SERVICE_NAME; public class GatewayRSocketFactory { diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayServerRSocketFactoryCustomizer.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayServerRSocketFactoryCustomizer.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayServerRSocketFactoryCustomizer.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/GatewayServerRSocketFactoryCustomizer.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocket.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocket.java similarity index 98% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocket.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocket.java index 8e9e28fc..0cf7183a 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocket.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocket.java @@ -33,8 +33,8 @@ import reactor.core.publisher.Mono; import reactor.core.publisher.MonoProcessor; import reactor.util.function.Tuple2; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.filter.RSocketFilter.Success; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.route.Route; import org.springframework.cloud.gateway.rsocket.routing.RoutingTable.RegisteredEvent; import org.springframework.messaging.rsocket.MetadataExtractor; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocketFactory.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocketFactory.java similarity index 97% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocketFactory.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocketFactory.java index e4bb500b..10e522c0 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocketFactory.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/core/PendingRequestRSocketFactory.java @@ -27,7 +27,7 @@ import org.apache.commons.logging.LogFactory; import reactor.core.Disposable; import reactor.core.publisher.Mono; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.route.Route; import org.springframework.cloud.gateway.rsocket.route.Routes; import org.springframework.cloud.gateway.rsocket.routing.RoutingTable; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractFilterChain.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractFilterChain.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractFilterChain.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractFilterChain.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractRSocketExchange.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractRSocketExchange.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractRSocketExchange.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/AbstractRSocketExchange.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/FilterChain.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/FilterChain.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/FilterChain.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/FilterChain.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketExchange.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketExchange.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketExchange.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketExchange.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketFilter.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketFilter.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketFilter.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/filter/RSocketFilter.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocket.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocket.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocket.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocket.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocketInterceptor.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocketInterceptor.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocketInterceptor.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/metrics/MicrometerResponderRSocketInterceptor.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/route/DefaultRoute.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/route/DefaultRoute.java similarity index 98% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/route/DefaultRoute.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/route/DefaultRoute.java index 03d4072f..33271ba9 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/route/DefaultRoute.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/route/DefaultRoute.java @@ -23,9 +23,9 @@ import java.util.Collections; import java.util.List; import java.util.Objects; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; import org.springframework.cloud.gateway.rsocket.core.GatewayExchange; import org.springframework.cloud.gateway.rsocket.core.GatewayFilter; -import org.springframework.cloud.gateway.rsocket.metadata.RouteSetup; import org.springframework.cloud.gateway.rsocket.support.AsyncPredicate; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/route/Route.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/route/Route.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/route/Route.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/route/Route.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/route/Routes.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/route/Routes.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/route/Routes.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/route/Routes.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/LoadBalancerFactory.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/LoadBalancerFactory.java similarity index 97% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/LoadBalancerFactory.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/LoadBalancerFactory.java index ad1f0440..4bd690b9 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/LoadBalancerFactory.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/LoadBalancerFactory.java @@ -27,7 +27,7 @@ import org.apache.commons.logging.LogFactory; import reactor.core.publisher.Mono; import reactor.util.function.Tuple2; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; public class LoadBalancerFactory { diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTable.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTable.java similarity index 97% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTable.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTable.java index c6464e36..7c6c61a9 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTable.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTable.java @@ -39,8 +39,8 @@ import reactor.core.publisher.FluxSink; import reactor.util.function.Tuple2; import reactor.util.function.Tuples; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; -import org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey; import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.StringUtils; @@ -95,8 +95,8 @@ public class RoutingTable { routeEntry.getTags().forEach((key, value) -> { // TODO: deal with string keys? - RoaringBitmap bitmap = tagsToBitmaps.computeIfAbsent( - new TagKey(key, value), k -> new RoaringBitmap()); + RoaringBitmap bitmap = tagsToBitmaps.computeIfAbsent(new TagKey(key, value), + k -> new RoaringBitmap()); bitmap.add(internalId); }); @@ -232,8 +232,11 @@ public class RoutingTable { } static class RouteEntry { + private final RSocket rSocket; + private final TagsMetadata tagsMetadata; + private final Long timestamp; RouteEntry(RSocket rSocket, TagsMetadata tagsMetadata) { @@ -277,6 +280,7 @@ public class RoutingTable { .toString(); // @formatter:on } + } static class TagKey { diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutes.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutes.java similarity index 98% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutes.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutes.java index 7ae2cd64..e978f7d3 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutes.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutes.java @@ -30,9 +30,9 @@ import org.apache.commons.logging.LogFactory; import reactor.core.publisher.Flux; import reactor.core.publisher.Mono; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.core.GatewayExchange; import org.springframework.cloud.gateway.rsocket.core.GatewayFilter; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.route.Route; import org.springframework.cloud.gateway.rsocket.route.Routes; import org.springframework.cloud.gateway.rsocket.support.AsyncPredicate; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableSocketAcceptorFilter.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableSocketAcceptorFilter.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableSocketAcceptorFilter.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableSocketAcceptorFilter.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptor.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptor.java similarity index 96% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptor.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptor.java index 5d657068..786c7ee4 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptor.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptor.java @@ -32,9 +32,9 @@ import org.apache.commons.logging.LogFactory; import reactor.core.publisher.Mono; import org.springframework.cloud.gateway.rsocket.autoconfigure.GatewayRSocketProperties; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.core.GatewayRSocketFactory; -import org.springframework.cloud.gateway.rsocket.metadata.RouteSetup; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.metrics.MicrometerResponderRSocket; import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.util.MimeType; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorExchange.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorExchange.java similarity index 95% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorExchange.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorExchange.java index a2e132be..0c0f5625 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorExchange.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorExchange.java @@ -21,8 +21,8 @@ import java.math.BigInteger; import io.rsocket.ConnectionSetupPayload; import io.rsocket.RSocket; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; import org.springframework.cloud.gateway.rsocket.filter.AbstractRSocketExchange; -import org.springframework.cloud.gateway.rsocket.metadata.RouteSetup; public class SocketAcceptorExchange extends AbstractRSocketExchange { diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilter.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilter.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilter.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilter.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilterChain.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilterChain.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilterChain.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorFilterChain.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicate.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicate.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicate.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicate.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilter.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilter.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilter.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilter.java diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/support/AsyncPredicate.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/support/AsyncPredicate.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/support/AsyncPredicate.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/java/org/springframework/cloud/gateway/rsocket/support/AsyncPredicate.java diff --git a/spring-cloud-gateway-rsocket/src/main/resources/META-INF/spring.factories b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/resources/META-INF/spring.factories similarity index 100% rename from spring-cloud-gateway-rsocket/src/main/resources/META-INF/spring.factories rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/main/resources/META-INF/spring.factories diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorIntegrationTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorIntegrationTests.java similarity index 90% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorIntegrationTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorIntegrationTests.java index 1be0fa19..f8c08c9d 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorIntegrationTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorIntegrationTests.java @@ -30,8 +30,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.gateway.rsocket.metadata.Forwarding; -import org.springframework.cloud.gateway.rsocket.metadata.RouteSetup; +import org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; import org.springframework.messaging.rsocket.RSocketRequester; import org.springframework.test.context.junit4.SpringRunner; import org.springframework.util.SocketUtils; @@ -47,6 +47,7 @@ import static org.springframework.cloud.gateway.rsocket.actuate.GatewayRSocketAc public class GatewayRSocketActuatorIntegrationTests { private final Random random = new Random(); + @Autowired private RSocketRequester.Builder requesterBuilder; @@ -71,7 +72,8 @@ public class GatewayRSocketActuatorIntegrationTests { BrokerInfo data = BrokerInfo.of(brokerId).build(); - Mono result = callActuator(brokerId, BrokerInfo.class, data, BROKER_INFO_PATH); + Mono result = callActuator(brokerId, BrokerInfo.class, data, + BROKER_INFO_PATH); StepVerifier.create(result) .consumeNextWith(res -> assertThat(res).isNotNull().isEqualTo(data)) @@ -86,7 +88,8 @@ public class GatewayRSocketActuatorIntegrationTests { RouteJoin data = RouteJoin.builder().brokerId(brokerId).routeId(routeId) .serviceName("testServiceName").build(); - Mono result = callActuator(brokerId, RouteJoin.class, data, ROUTE_JOIN_PATH); + Mono result = callActuator(brokerId, RouteJoin.class, data, + ROUTE_JOIN_PATH); StepVerifier.create(result) .consumeNextWith(res -> assertThat(res).isNotNull().isEqualTo(data)) @@ -101,7 +104,8 @@ public class GatewayRSocketActuatorIntegrationTests { RouteRemove data = RouteRemove.builder().brokerId(brokerId).routeId(routeId) .build(); - Mono result = callActuator(brokerId, RouteRemove.class, data, ROUTE_REMOVE_PATH); + Mono result = callActuator(brokerId, RouteRemove.class, data, + ROUTE_REMOVE_PATH); StepVerifier.create(result) .consumeNextWith(res -> assertThat(res).isNotNull().isEqualTo(data)) @@ -115,12 +119,11 @@ public class GatewayRSocketActuatorIntegrationTests { .setupMetadata(routeSetup, RouteSetup.ROUTE_SETUP_MIME_TYPE) .connectTcp("localhost", port).block(); - Forwarding forwarding = Forwarding.of(brokerId).serviceName("gateway").disableProxy() - .build(); + Forwarding forwarding = Forwarding.of(brokerId).serviceName("gateway") + .disableProxy().build(); - return requester.route(path) - .metadata(forwarding, Forwarding.FORWARDING_MIME_TYPE).data(data) - .retrieveMono(type); + return requester.route(path).metadata(forwarding, Forwarding.FORWARDING_MIME_TYPE) + .data(data).retrieveMono(type); } @SpringBootConfiguration diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrarTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrarTests.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrarTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/actuate/GatewayRSocketActuatorRegistrarTests.java diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfigurationTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfigurationTests.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfigurationTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/autoconfigure/GatewayRSocketAutoConfigurationTests.java diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketIntegrationTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketIntegrationTests.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketIntegrationTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketIntegrationTests.java diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketTests.java similarity index 94% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketTests.java index b08320c0..e16a3794 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/core/GatewayRSocketTests.java @@ -39,17 +39,17 @@ import reactor.util.function.Tuple2; import reactor.util.function.Tuples; import org.springframework.cloud.gateway.rsocket.autoconfigure.GatewayRSocketProperties; -import org.springframework.cloud.gateway.rsocket.metadata.Forwarding; -import org.springframework.cloud.gateway.rsocket.metadata.Metadata; -import org.springframework.cloud.gateway.rsocket.metadata.RouteSetup; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; -import org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey; +import org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding; +import org.springframework.cloud.gateway.rsocket.common.metadata.Metadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey; +import org.springframework.cloud.gateway.rsocket.common.test.MetadataEncoder; import org.springframework.cloud.gateway.rsocket.route.DefaultRoute; import org.springframework.cloud.gateway.rsocket.route.Route; import org.springframework.cloud.gateway.rsocket.route.Routes; import org.springframework.cloud.gateway.rsocket.routing.LoadBalancerFactory; import org.springframework.cloud.gateway.rsocket.routing.RoutingTable; -import org.springframework.cloud.gateway.rsocket.test.MetadataEncoder; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.messaging.rsocket.DefaultMetadataExtractor; import org.springframework.messaging.rsocket.MetadataExtractor; @@ -60,7 +60,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import static org.springframework.cloud.gateway.rsocket.metadata.Forwarding.FORWARDING_MIME_TYPE; +import static org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding.FORWARDING_MIME_TYPE; /** * @author Spencer Gibb diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutesTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutesTests.java similarity index 93% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutesTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutesTests.java index 954ace6e..1ca106d1 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutesTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableRoutesTests.java @@ -23,9 +23,9 @@ import org.junit.Test; import reactor.core.publisher.Mono; import reactor.test.StepVerifier; +import org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.core.GatewayExchange; -import org.springframework.cloud.gateway.rsocket.metadata.Forwarding; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; import org.springframework.cloud.gateway.rsocket.route.Route; import org.springframework.cloud.gateway.rsocket.routing.RoutingTable.RegisteredEvent; import org.springframework.cloud.gateway.rsocket.routing.RoutingTable.RouteEntry; diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableTests.java similarity index 96% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableTests.java index 7dcfeb98..a80a7b84 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/routing/RoutingTableTests.java @@ -26,8 +26,8 @@ import org.roaringbitmap.RoaringBitmap; import reactor.util.function.Tuple2; import reactor.util.function.Tuples; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; -import org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey; import org.springframework.core.style.ToStringCreator; import static org.assertj.core.api.Assertions.assertThat; @@ -140,8 +140,7 @@ public class RoutingTableTests { routeId); assertThat(routingTable.routeEntries).containsKey(routeId); tagsMetadata.getTags().forEach((key, value) -> { - RoutingTable.TagKey tagKey = new RoutingTable.TagKey(key, - value); + RoutingTable.TagKey tagKey = new RoutingTable.TagKey(key, value); assertThat(routingTable.tagsToBitmaps).containsKey(tagKey); RoaringBitmap bitmap = routingTable.tagsToBitmaps.get(tagKey); assertThat(bitmap.contains(internalId)); diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptorTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptorTests.java similarity index 94% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptorTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptorTests.java index 3277bce6..dce8024d 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptorTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/GatewaySocketAcceptorTests.java @@ -32,12 +32,12 @@ import org.junit.Test; import reactor.core.publisher.Mono; import org.springframework.cloud.gateway.rsocket.autoconfigure.GatewayRSocketProperties; +import org.springframework.cloud.gateway.rsocket.common.metadata.Metadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.test.MetadataEncoder; import org.springframework.cloud.gateway.rsocket.core.GatewayRSocket; import org.springframework.cloud.gateway.rsocket.core.GatewayRSocketFactory; -import org.springframework.cloud.gateway.rsocket.metadata.Metadata; -import org.springframework.cloud.gateway.rsocket.metadata.RouteSetup; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; -import org.springframework.cloud.gateway.rsocket.test.MetadataEncoder; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.messaging.rsocket.DefaultMetadataExtractor; import org.springframework.messaging.rsocket.PayloadUtils; @@ -48,7 +48,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -import static org.springframework.cloud.gateway.rsocket.metadata.RouteSetup.ROUTE_SETUP_MIME_TYPE; +import static org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup.ROUTE_SETUP_MIME_TYPE; /** * @author Spencer Gibb diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilterTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilterTests.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilterTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/socketacceptor/SocketAcceptorPredicateFilterTests.java diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/test/PingPongApp.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/test/PingPongApp.java similarity index 94% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/test/PingPongApp.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/test/PingPongApp.java index 3ae2c865..03986e32 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/test/PingPongApp.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/test/PingPongApp.java @@ -45,13 +45,14 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.context.event.ApplicationReadyEvent; +import org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata; +import org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey; +import org.springframework.cloud.gateway.rsocket.common.test.MetadataEncoder; import org.springframework.cloud.gateway.rsocket.core.GatewayExchange; import org.springframework.cloud.gateway.rsocket.core.GatewayFilter; import org.springframework.cloud.gateway.rsocket.core.GatewayFilterChain; -import org.springframework.cloud.gateway.rsocket.metadata.Forwarding; -import org.springframework.cloud.gateway.rsocket.metadata.RouteSetup; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata; -import org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey; import org.springframework.cloud.gateway.rsocket.socketacceptor.SocketAcceptorExchange; import org.springframework.cloud.gateway.rsocket.socketacceptor.SocketAcceptorFilter; import org.springframework.cloud.gateway.rsocket.socketacceptor.SocketAcceptorFilterChain; @@ -63,8 +64,8 @@ import org.springframework.core.io.buffer.DataBuffer; import org.springframework.messaging.rsocket.RSocketStrategies; import static io.netty.buffer.Unpooled.EMPTY_BUFFER; -import static org.springframework.cloud.gateway.rsocket.metadata.Metadata.COMPOSITE_MIME_TYPE; -import static org.springframework.cloud.gateway.rsocket.metadata.RouteSetup.ROUTE_SETUP_MIME_TYPE; +import static org.springframework.cloud.gateway.rsocket.common.metadata.Metadata.COMPOSITE_MIME_TYPE; +import static org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup.ROUTE_SETUP_MIME_TYPE; @SpringBootApplication public class PingPongApp { diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/test/SocketAcceptorFilterOrderTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/test/SocketAcceptorFilterOrderTests.java similarity index 100% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/test/SocketAcceptorFilterOrderTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/java/org/springframework/cloud/gateway/rsocket/test/SocketAcceptorFilterOrderTests.java diff --git a/spring-cloud-gateway-rsocket/src/test/resources/application.yml b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/resources/application.yml similarity index 100% rename from spring-cloud-gateway-rsocket/src/test/resources/application.yml rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-broker/src/test/resources/application.yml diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/pom.xml b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/pom.xml new file mode 100644 index 00000000..36860a83 --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/pom.xml @@ -0,0 +1,145 @@ + + + + + 4.0.0 + + org.springframework.cloud + spring-cloud-gateway-rsocket + 2.2.0.BUILD-SNAPSHOT + .. + + org.springframework.cloud + spring-cloud-gateway-rsocket-client + Spring Cloud Gateway RSocket Client + Spring Cloud Gateway RSocket Client + + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework.boot + spring-boot-starter-rsocket + + + org.springframework.cloud + spring-cloud-gateway-rsocket-common + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot + spring-boot-starter-actuator + test + + + org.projectlombok + lombok + test + + + org.springframework.boot + spring-boot-starter-test + test + + + io.projectreactor + reactor-test + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -parameters + + + + + + default-compile + none + + + + default-testCompile + none + + + java-compile + compile + + compile + + + + java-test-compile + test-compile + + testCompile + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.0 + + + + test-jar + + + + + + + + + java8plus + + [1.8,2.0) + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -parameters + + + + + + + + + diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/BrokerClient.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/BrokerClient.java new file mode 100644 index 00000000..054fc651 --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/BrokerClient.java @@ -0,0 +1,75 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.gateway.rsocket.client; + +import java.util.function.Consumer; + +import reactor.core.publisher.Mono; + +import org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding; +import org.springframework.messaging.rsocket.RSocketRequester; + +public class BrokerClient { + + private final ClientProperties properties; + + private final RSocketRequester.Builder builder; + + public BrokerClient(ClientProperties properties, RSocketRequester.Builder builder) { + this.properties = properties; + this.builder = builder; + } + + public ClientProperties getProperties() { + return this.properties; + } + + public RSocketRequester.Builder getRSocketRequesterBuilder() { + return this.builder; + } + + public Mono connect() { + return connect(builder); + } + + public Mono connect(RSocketRequester.Builder requesterBuilder) { + ClientProperties.Broker broker = properties.getBroker(); + switch (broker.getConnectionType()) { + case WEBSOCKET: + return requesterBuilder.connectWebSocket(broker.getWsUri()); + } + return requesterBuilder.connectTcp(broker.getHost(), broker.getPort()); + } + + public Consumer forwarding(String destServiceName) { + return requestSpec -> { + Forwarding forwarding = Forwarding.of(properties.getRouteId()) + .serviceName(destServiceName).build(); + requestSpec.metadata(forwarding, Forwarding.FORWARDING_MIME_TYPE); + }; + } + + public Consumer forwarding( + Consumer builderConsumer) { + return requestSpec -> { + Forwarding.Builder builder = Forwarding.of(properties.getRouteId()); + builderConsumer.accept(builder); + requestSpec.metadata(builder.build(), Forwarding.FORWARDING_MIME_TYPE); + }; + } + +} diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/ClientProperties.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/ClientProperties.java new file mode 100644 index 00000000..d6a2f5c9 --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/ClientProperties.java @@ -0,0 +1,170 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.gateway.rsocket.client; + +import java.math.BigInteger; +import java.net.URI; +import java.util.LinkedHashMap; +import java.util.Map; + +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey; +import org.springframework.core.style.ToStringCreator; +import org.springframework.validation.annotation.Validated; + +@ConfigurationProperties("spring.cloud.gateway.rsocket.client") +@Validated +public class ClientProperties { + + @NotNull + private BigInteger routeId; + + @NotEmpty + private String serviceName; + + private Map tags = new LinkedHashMap<>(); + + private Map customTags = new LinkedHashMap<>(); + + @Valid + private Broker broker = new Broker(); + + public BigInteger getRouteId() { + return this.routeId; + } + + public void setRouteId(BigInteger routeId) { + this.routeId = routeId; + } + + public String getServiceName() { + return this.serviceName; + } + + public void setServiceName(String serviceName) { + this.serviceName = serviceName; + } + + public Map getTags() { + return this.tags; + } + + public void setTags(Map tags) { + this.tags = tags; + } + + public Map getCustomTags() { + return this.customTags; + } + + public void setCustomTags(Map customTags) { + this.customTags = customTags; + } + + public Broker getBroker() { + return this.broker; + } + + public void setBroker(Broker broker) { + this.broker = broker; + } + + @Override + public String toString() { + // @formatter:off + return new ToStringCreator(this) + .append("routeId", routeId) + .append("serviceName", serviceName) + .append("tags", tags) + .append("customTags", customTags) + .append("broker", broker) + .toString(); + // @formatter:on + } + + public enum ConnectionType { + + /** TCP RSocket connection. */ + TCP, + /** WEBSOCKET RSocket connection. */ + WEBSOCKET + + } + + public static class Broker { + + // FIXME: validate based on connectionType + private String host; + + private int port; + + @NotNull + private ConnectionType connectionType = ConnectionType.TCP; + + private URI wsUri; + + public String getHost() { + return this.host; + } + + public void setHost(String host) { + this.host = host; + } + + public int getPort() { + return this.port; + } + + public void setPort(int port) { + this.port = port; + } + + public ConnectionType getConnectionType() { + return this.connectionType; + } + + public void setConnectionType(ConnectionType connectionType) { + this.connectionType = connectionType; + } + + public URI getWsUri() { + return this.wsUri; + } + + public void setWsUri(URI wsUri) { + this.wsUri = wsUri; + } + + @Override + public String toString() { + // @formatter:off + return new ToStringCreator(this) + .append("host", host) + .append("port", port) + .append("wsUri", wsUri) + .append("connectionType", connectionType) + .toString(); + // @formatter:on + } + + } + +} diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/GatewayRSocketClientAutoConfiguration.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/GatewayRSocketClientAutoConfiguration.java new file mode 100644 index 00000000..2d936e69 --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/java/org/springframework/cloud/gateway/rsocket/client/GatewayRSocketClientAutoConfiguration.java @@ -0,0 +1,115 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.gateway.rsocket.client; + +import java.math.BigInteger; +import java.security.SecureRandom; +import java.util.function.Supplier; + +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.Tag; +import io.rsocket.RSocket; +import io.rsocket.micrometer.MicrometerRSocketInterceptor; + +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +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.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.rsocket.RSocketRequesterAutoConfiguration; +import org.springframework.boot.autoconfigure.rsocket.RSocketStrategiesAutoConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Scope; +import org.springframework.messaging.rsocket.RSocketRequester; +import org.springframework.messaging.rsocket.RSocketStrategies; +import org.springframework.messaging.rsocket.annotation.support.RSocketMessageHandler; + +/** + * @author Spencer Gibb + */ +@Configuration +@ConditionalOnProperty(name = "spring.cloud.gateway.rsocket.enabled", + matchIfMissing = true) +@EnableConfigurationProperties +@ConditionalOnClass({ RSocket.class, RSocketRequester.class }) +@AutoConfigureAfter(RSocketStrategiesAutoConfiguration.class) +@AutoConfigureBefore(RSocketRequesterAutoConfiguration.class) +public class GatewayRSocketClientAutoConfiguration { + + /** + * Name of client id generator bean. + */ + public static final String RSOCKET_CLIENT_ID_GENERATOR_NAME = "rsocketClientIdGenerator"; + + private final RSocketMessageHandler messageHandler; + + private final SecureRandom secureRandom = new SecureRandom(); + + public GatewayRSocketClientAutoConfiguration(RSocketMessageHandler handler) { + messageHandler = handler; + } + + @Bean + @Scope("prototype") + @ConditionalOnMissingBean + public RSocketRequester.Builder gatewayRSocketRequesterBuilder( + RSocketStrategies strategies, ClientProperties properties, + MeterRegistry meterRegistry) { + RouteSetup.Builder routeSetup = RouteSetup.of(properties.getRouteId(), + properties.getServiceName()); + properties.getTags().forEach(routeSetup::with); + properties.getCustomTags().forEach(routeSetup::with); + + MicrometerRSocketInterceptor interceptor = new MicrometerRSocketInterceptor( + meterRegistry, Tag.of("servicename", properties.getServiceName())); + + return RSocketRequester.builder() + .setupMetadata(routeSetup.build(), RouteSetup.ROUTE_SETUP_MIME_TYPE) + .rsocketStrategies(strategies).rsocketFactory( + rsocketFactory -> rsocketFactory.addRequesterPlugin(interceptor) + .acceptor(messageHandler.responder())); + } + + @Bean + public BrokerClient brokerClient(RSocketRequester.Builder builder, + ClientProperties properties) { + return new BrokerClient(properties, builder); + } + + @Bean(name = RSOCKET_CLIENT_ID_GENERATOR_NAME) + @ConditionalOnMissingBean(name = RSOCKET_CLIENT_ID_GENERATOR_NAME) + public Supplier rsocketClientIdGenerator() { + return () -> { + byte[] bytes = new byte[16]; + secureRandom.nextBytes(bytes); + return new BigInteger(bytes); + }; + } + + @Bean + public ClientProperties clientProperties( + @Qualifier(RSOCKET_CLIENT_ID_GENERATOR_NAME) Supplier clientIdGenerator) { + ClientProperties clientProperties = new ClientProperties(); + clientProperties.setRouteId(clientIdGenerator.get()); + return clientProperties; + } + +} diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/resources/META-INF/spring.factories b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..63451731 --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-client/src/main/resources/META-INF/spring.factories @@ -0,0 +1,3 @@ +# Auto Configure +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +org.springframework.cloud.gateway.rsocket.client.GatewayRSocketClientAutoConfiguration diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/pom.xml b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/pom.xml new file mode 100644 index 00000000..8edc4490 --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/pom.xml @@ -0,0 +1,157 @@ + + + + + 4.0.0 + + org.springframework.cloud + spring-cloud-gateway-rsocket + 2.2.0.BUILD-SNAPSHOT + .. + + org.springframework.cloud + spring-cloud-gateway-rsocket-common + Spring Cloud Gateway RSocket Common + Spring Cloud Gateway RSocket Common + + + + org.springframework.boot + spring-boot-starter-rsocket + + + org.springframework.boot + spring-boot-configuration-processor + true + + + io.rsocket + rsocket-core + + + io.rsocket + rsocket-micrometer + + + io.rsocket + rsocket-transport-netty + + + io.micrometer + micrometer-core + + + org.roaringbitmap + RoaringBitmap + + + org.springframework.boot + spring-boot-starter-actuator + test + + + org.projectlombok + lombok + test + + + org.springframework.boot + spring-boot-starter-test + test + + + io.projectreactor + reactor-test + test + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -parameters + + + + + + default-compile + none + + + + default-testCompile + none + + + java-compile + compile + + compile + + + + java-test-compile + test-compile + + testCompile + + + + + + org.apache.maven.plugins + maven-jar-plugin + 3.1.0 + + + + test-jar + + + + + + + + + java8plus + + [1.8,2.0) + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + -parameters + + + + + + + + + diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/autoconfigure/GatewayRSocketCommonAutoConfiguration.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/autoconfigure/GatewayRSocketCommonAutoConfiguration.java new file mode 100644 index 00000000..c41c15c5 --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/autoconfigure/GatewayRSocketCommonAutoConfiguration.java @@ -0,0 +1,51 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.gateway.rsocket.common.autoconfigure; + +import io.rsocket.RSocket; + +import org.springframework.boot.autoconfigure.AutoConfigureBefore; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.rsocket.RSocketStrategiesAutoConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.boot.rsocket.messaging.RSocketStrategiesCustomizer; +import org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author Spencer Gibb + */ +@Configuration +@ConditionalOnProperty(name = "spring.cloud.gateway.rsocket.enabled", + matchIfMissing = true) +@EnableConfigurationProperties +@ConditionalOnClass(RSocket.class) +@AutoConfigureBefore(RSocketStrategiesAutoConfiguration.class) +public class GatewayRSocketCommonAutoConfiguration { + + @Bean + public RSocketStrategiesCustomizer gatewayRSocketStrategiesCustomizer() { + return strategies -> { + strategies.decoder(new Forwarding.Decoder(), new RouteSetup.Decoder()) + .encoder(new Forwarding.Encoder(), new RouteSetup.Encoder()); + }; + } + +} diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/autoconfigure/GatewayRSocketCommonMetadataAutoConfiguration.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/autoconfigure/GatewayRSocketCommonMetadataAutoConfiguration.java new file mode 100644 index 00000000..0335265b --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/autoconfigure/GatewayRSocketCommonMetadataAutoConfiguration.java @@ -0,0 +1,69 @@ +/* + * Copyright 2013-2019 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.springframework.cloud.gateway.rsocket.common.autoconfigure; + +import io.rsocket.RSocket; + +import org.springframework.beans.factory.InitializingBean; +import org.springframework.boot.autoconfigure.AutoConfigureAfter; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.EnableConfigurationProperties; +import org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding; +import org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.rsocket.DefaultMetadataExtractor; +import org.springframework.messaging.rsocket.MetadataExtractor; +import org.springframework.messaging.rsocket.RSocketStrategies; + +import static org.springframework.cloud.gateway.rsocket.common.metadata.Forwarding.FORWARDING_MIME_TYPE; +import static org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetup.ROUTE_SETUP_MIME_TYPE; + +/** + * @author Spencer Gibb + */ +@Configuration +@ConditionalOnProperty(name = "spring.cloud.gateway.rsocket.enabled", + matchIfMissing = true) +@EnableConfigurationProperties +@ConditionalOnClass(RSocket.class) +@AutoConfigureAfter({ GatewayRSocketCommonAutoConfiguration.class }) +public class GatewayRSocketCommonMetadataAutoConfiguration implements InitializingBean { + + private final ApplicationContext context; + + public GatewayRSocketCommonMetadataAutoConfiguration(ApplicationContext context) { + this.context = context; + } + + @Override + public void afterPropertiesSet() { + RSocketStrategies rSocketStrategies = this.context + .getBean(RSocketStrategies.class); + MetadataExtractor metadataExtractor = rSocketStrategies.metadataExtractor(); + // TODO: see if possible to make easier in framework. + if (metadataExtractor instanceof DefaultMetadataExtractor) { + DefaultMetadataExtractor extractor = (DefaultMetadataExtractor) metadataExtractor; + extractor.metadataToExtract(FORWARDING_MIME_TYPE, Forwarding.class, + Forwarding.METADATA_KEY); + extractor.metadataToExtract(ROUTE_SETUP_MIME_TYPE, RouteSetup.class, + RouteSetup.METADATA_KEY); + } + } + +} diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/Forwarding.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/Forwarding.java similarity index 95% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/Forwarding.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/Forwarding.java index f1ba6676..eb6fe107 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/Forwarding.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/Forwarding.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import java.math.BigInteger; import java.util.Map; @@ -36,8 +36,8 @@ import org.springframework.core.style.ToStringCreator; import org.springframework.util.Assert; import org.springframework.util.MimeType; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.ROUTE_ID; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.SERVICE_NAME; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.ROUTE_ID; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.SERVICE_NAME; // TODO: currently an ENVELOPE frame in RSocket extension, also discarding metadata public final class Forwarding extends TagsMetadata { diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/Metadata.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/Metadata.java similarity index 93% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/Metadata.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/Metadata.java index 7f268529..db31f271 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/Metadata.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/Metadata.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import io.rsocket.metadata.WellKnownMimeType; diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetup.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetup.java similarity index 97% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetup.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetup.java index 6599344f..3563d364 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetup.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetup.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import java.math.BigInteger; import java.util.Map; @@ -81,7 +81,7 @@ public final class RouteSetup extends TagsMetadata { // @formatter:off TagsMetadata tagsMetadata = TagsMetadata.builder(this) .with(WellKnownKey.SERVICE_NAME, getServiceName()) - .with(WellKnownKey.ROUTE_ID, getId().toString()) + .with(WellKnownKey.ROUTE_ID, id == null ? null : getId().toString()) .build(); // @formatter:on diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/TagsMetadata.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/TagsMetadata.java similarity index 97% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/TagsMetadata.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/TagsMetadata.java index 45a08b88..116bdf44 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/TagsMetadata.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/TagsMetadata.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import java.math.BigInteger; import java.nio.charset.StandardCharsets; @@ -35,8 +35,8 @@ import org.springframework.core.io.buffer.DataBuffer; import org.springframework.core.io.buffer.NettyDataBuffer; import org.springframework.util.Assert; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.ROUTE_ID; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.SERVICE_NAME; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.ROUTE_ID; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.SERVICE_NAME; public class TagsMetadata { diff --git a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/WellKnownKey.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/WellKnownKey.java similarity index 98% rename from spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/WellKnownKey.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/WellKnownKey.java index b303809b..e139f3ef 100644 --- a/spring-cloud-gateway-rsocket/src/main/java/org/springframework/cloud/gateway/rsocket/metadata/WellKnownKey.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/java/org/springframework/cloud/gateway/rsocket/common/metadata/WellKnownKey.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import java.util.Arrays; import java.util.HashMap; diff --git a/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/resources/META-INF/spring.factories b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/resources/META-INF/spring.factories new file mode 100644 index 00000000..530d8e7c --- /dev/null +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/main/resources/META-INF/spring.factories @@ -0,0 +1,4 @@ +# Auto Configure +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +org.springframework.cloud.gateway.rsocket.common.autoconfigure.GatewayRSocketCommonAutoConfiguration,\ +org.springframework.cloud.gateway.rsocket.common.autoconfigure.GatewayRSocketCommonMetadataAutoConfiguration diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/ForwardingIntegrationTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/ForwardingIntegrationTests.java similarity index 94% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/ForwardingIntegrationTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/ForwardingIntegrationTests.java index 72348d70..68d08138 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/ForwardingIntegrationTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/ForwardingIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import java.util.Map; @@ -28,7 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.gateway.rsocket.test.MetadataEncoder; +import org.springframework.cloud.gateway.rsocket.common.test.MetadataEncoder; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.messaging.rsocket.RSocketStrategies; diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/ForwardingTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/ForwardingTests.java similarity index 82% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/ForwardingTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/ForwardingTests.java index 4b1c1dde..399bb425 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/ForwardingTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/ForwardingTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import java.math.BigInteger; import java.util.LinkedHashMap; @@ -22,12 +22,12 @@ import java.util.LinkedHashMap; import io.netty.buffer.ByteBuf; import org.junit.Test; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata.Key; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata.Key; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.cloud.gateway.rsocket.metadata.RouteSetupTests.MAX_BIGINT; -import static org.springframework.cloud.gateway.rsocket.metadata.RouteSetupTests.TWO_BYTE_BIGINT; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.REGION; +import static org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetupTests.MAX_BIGINT; +import static org.springframework.cloud.gateway.rsocket.common.metadata.RouteSetupTests.TWO_BYTE_BIGINT; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.REGION; public class ForwardingTests { diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetupIntegrationTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetupIntegrationTests.java similarity index 94% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetupIntegrationTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetupIntegrationTests.java index 108b1027..02323024 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetupIntegrationTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetupIntegrationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import java.util.Map; @@ -28,7 +28,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.SpringBootConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.cloud.gateway.rsocket.test.MetadataEncoder; +import org.springframework.cloud.gateway.rsocket.common.test.MetadataEncoder; import org.springframework.core.io.buffer.DataBuffer; import org.springframework.messaging.rsocket.MetadataExtractor; import org.springframework.messaging.rsocket.RSocketStrategies; diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetupTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetupTests.java similarity index 92% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetupTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetupTests.java index d57ecb46..fc29026a 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/RouteSetupTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/RouteSetupTests.java @@ -14,17 +14,17 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import java.math.BigInteger; import io.netty.buffer.ByteBuf; import org.junit.Test; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata.Key; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata.Key; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.REGION; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.REGION; public class RouteSetupTests { diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/TagsMetadataTests.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/TagsMetadataTests.java similarity index 86% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/TagsMetadataTests.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/TagsMetadataTests.java index dcf7af18..e32fe29d 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/metadata/TagsMetadataTests.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/metadata/TagsMetadataTests.java @@ -14,16 +14,16 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.metadata; +package org.springframework.cloud.gateway.rsocket.common.metadata; import io.netty.buffer.ByteBuf; import org.junit.Test; -import org.springframework.cloud.gateway.rsocket.metadata.TagsMetadata.Key; +import org.springframework.cloud.gateway.rsocket.common.metadata.TagsMetadata.Key; import static org.assertj.core.api.Assertions.assertThat; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.ROUTE_ID; -import static org.springframework.cloud.gateway.rsocket.metadata.WellKnownKey.SERVICE_NAME; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.ROUTE_ID; +import static org.springframework.cloud.gateway.rsocket.common.metadata.WellKnownKey.SERVICE_NAME; public class TagsMetadataTests { diff --git a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/test/MetadataEncoder.java b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/test/MetadataEncoder.java similarity index 99% rename from spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/test/MetadataEncoder.java rename to spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/test/MetadataEncoder.java index b87632e9..1bffed2b 100644 --- a/spring-cloud-gateway-rsocket/src/test/java/org/springframework/cloud/gateway/rsocket/test/MetadataEncoder.java +++ b/spring-cloud-gateway-rsocket/spring-cloud-gateway-rsocket-common/src/test/java/org/springframework/cloud/gateway/rsocket/common/test/MetadataEncoder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.cloud.gateway.rsocket.test; +package org.springframework.cloud.gateway.rsocket.common.test; import java.util.Collections; import java.util.LinkedHashMap; diff --git a/src/checkstyle/checkstyle-suppressions.xml b/src/checkstyle/checkstyle-suppressions.xml index a50235e9..5769f52a 100644 --- a/src/checkstyle/checkstyle-suppressions.xml +++ b/src/checkstyle/checkstyle-suppressions.xml @@ -28,4 +28,5 @@ + \ No newline at end of file