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