Top Description Inners Fields Constructors Methods
org.springframework.messaging.rsocket.service

public final Class RSocketServiceProxyFactory

extends Object
Class Inheritance
Imports
java.lang.reflect.InvocationHandler, .Method, java.time.Duration, java.util.ArrayList, .List, .Map, java.util.function.Function, java.util.stream.Collectors, org.aopalliance.intercept.MethodInterceptor, .MethodInvocation, org.springframework.aop.framework.ProxyFactory, .ReflectiveMethodInvocation, org.springframework.core.MethodIntrospector, .ReactiveAdapterRegistry, org.springframework.core.annotation.AnnotatedElementUtils, org.springframework.lang.Nullable, org.springframework.messaging.rsocket.RSocketRequester, org.springframework.util.Assert, .StringValueResolver

Factory to create a client proxy from an RSocket service interface with @RSocketExchange methods.

To create an instance, use static methods to obtain a Builder.

Author
Rossen Stoyanchev
Since
6.0

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static class
private static class

Field Summary

Modifier and TypeField and Description
private final List<RSocketServiceArgumentResolver>
private final Duration
private final StringValueResolver
private final ReactiveAdapterRegistry
private final RSocketRequester

Constructor Summary

AccessConstructor and Description
private
RSocketServiceProxyFactory(RSocketRequester rsocketRequester, List<RSocketServiceArgumentResolver> argumentResolvers, StringValueResolver embeddedValueResolver, ReactiveAdapterRegistry reactiveAdapterRegistry, Duration blockTimeout)

Method Summary

Modifier and TypeMethod and Description
public static RSocketServiceProxyFactory.Builder
builder(RSocketRequester requester)

Return an RSocketServiceProxyFactory builder, initialized with the given client.

public static RSocketServiceProxyFactory.Builder
builder()

Return an RSocketServiceProxyFactory builder.

public <
the RSocket service type
S
>
S

Returns:

the created proxy
createClient
(Class<S>
the RSocket service to create a proxy for
serviceType
)

Return a proxy that implements the given RSocket service interface to perform RSocket requests and retrieve responses through the configured RSocketRequester.

private <S> RSocketServiceMethod
createRSocketServiceMethod(Class<S> serviceType, Method method)

private boolean
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

argumentResolversback to summary
private final List<RSocketServiceArgumentResolver> argumentResolvers
blockTimeoutback to summary
private final Duration blockTimeout
Annotations
@Nullable
embeddedValueResolverback to summary
private final StringValueResolver embeddedValueResolver
Annotations
@Nullable
reactiveAdapterRegistryback to summary
private final ReactiveAdapterRegistry reactiveAdapterRegistry
rsocketRequesterback to summary
private final RSocketRequester rsocketRequester

Constructor Detail

RSocketServiceProxyFactoryback to summary
private RSocketServiceProxyFactory(RSocketRequester rsocketRequester, List<RSocketServiceArgumentResolver> argumentResolvers, StringValueResolver embeddedValueResolver, ReactiveAdapterRegistry reactiveAdapterRegistry, Duration blockTimeout)

Method Detail

builderback to summary
public static RSocketServiceProxyFactory.Builder builder(RSocketRequester requester)

Return an RSocketServiceProxyFactory builder, initialized with the given client.

builderback to summary
public static RSocketServiceProxyFactory.Builder builder()

Return an RSocketServiceProxyFactory builder.

createClientback to summary
public <S> S createClient(Class<S> serviceType)

Return a proxy that implements the given RSocket service interface to perform RSocket requests and retrieve responses through the configured RSocketRequester.

Parameters
<S>
the RSocket service type
serviceType:Class<S>

the RSocket service to create a proxy for

Returns:S

the created proxy

createRSocketServiceMethodback to summary
private <S> RSocketServiceMethod createRSocketServiceMethod(Class<S> serviceType, Method method)
isExchangeMethodback to summary
private boolean isExchangeMethod(Method method)
org.springframework.messaging.rsocket.service back to summary

public final Class RSocketServiceProxyFactory.Builder

extends Object
Class Inheritance
  • java.lang.Object
  • org.springframework.messaging.rsocket.service.RSocketServiceProxyFactory.Builder

Builder to create an RSocketServiceProxyFactory.

Field Summary

Modifier and TypeField and Description
private Duration
private final List<RSocketServiceArgumentResolver>
private StringValueResolver
private ReactiveAdapterRegistry
private RSocketRequester

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public RSocketServiceProxyFactory.Builder

Returns:

this same builder instance
blockTimeout
(Duration
the timeout value
blockTimeout
)

Configure how long to block for the response of an RSocket service method with a synchronous (blocking) method signature.

public RSocketServiceProxyFactory
build()

Build the RSocketServiceProxyFactory instance.

public RSocketServiceProxyFactory.Builder

Returns:

the same builder instance
customArgumentResolver
(RSocketServiceArgumentResolver
the resolver to add
resolver
)

Register a custom argument resolver, invoked ahead of default resolvers.

public RSocketServiceProxyFactory.Builder

Returns:

this same builder instance
embeddedValueResolver
(StringValueResolver
the resolver to use
resolver
)

Set the StringValueResolver to use for resolving placeholders and expressions embedded in RSocketExchange#value().

private List<RSocketServiceArgumentResolver>
public RSocketServiceProxyFactory.Builder

Returns:

this same builder instance
reactiveAdapterRegistry
(ReactiveAdapterRegistry registry)

Set the ReactiveAdapterRegistry to use to support different asynchronous types for HTTP service method return values.

public RSocketServiceProxyFactory.Builder

Returns:

the same builder instance
rsocketRequester
(RSocketRequester
the requester to use
requester
)

Provide the requester to perform requests through.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

blockTimeoutback to summary
private Duration blockTimeout
Annotations
@Nullable
customArgumentResolversback to summary
private final List<RSocketServiceArgumentResolver> customArgumentResolvers
embeddedValueResolverback to summary
private StringValueResolver embeddedValueResolver
Annotations
@Nullable
reactiveAdapterRegistryback to summary
private ReactiveAdapterRegistry reactiveAdapterRegistry
rsocketRequesterback to summary
private RSocketRequester rsocketRequester
Annotations
@Nullable

Constructor Detail

Builderback to summary
private Builder()

Method Detail

blockTimeoutback to summary
public RSocketServiceProxyFactory.Builder blockTimeout(Duration blockTimeout)

Configure how long to block for the response of an RSocket service method with a synchronous (blocking) method signature.

By default this is not set, in which case the behavior depends on connection and response timeout settings of the underlying RSocket ClientTransport as well as RSocket keep-alive settings. We recommend configuring timeout values at the RSocket level which provides more control.

Parameters
blockTimeout:Duration

the timeout value

Returns:RSocketServiceProxyFactory.Builder

this same builder instance

buildback to summary
public RSocketServiceProxyFactory build()

Build the RSocketServiceProxyFactory instance.

customArgumentResolverback to summary
public RSocketServiceProxyFactory.Builder customArgumentResolver(RSocketServiceArgumentResolver resolver)

Register a custom argument resolver, invoked ahead of default resolvers.

Parameters
resolver:RSocketServiceArgumentResolver

the resolver to add

Returns:RSocketServiceProxyFactory.Builder

the same builder instance

embeddedValueResolverback to summary
public RSocketServiceProxyFactory.Builder embeddedValueResolver(StringValueResolver resolver)

Set the StringValueResolver to use for resolving placeholders and expressions embedded in RSocketExchange#value().

Parameters
resolver:StringValueResolver

the resolver to use

Returns:RSocketServiceProxyFactory.Builder

this same builder instance

initArgumentResolversback to summary
private List<RSocketServiceArgumentResolver> initArgumentResolvers()
reactiveAdapterRegistryback to summary
public RSocketServiceProxyFactory.Builder reactiveAdapterRegistry(ReactiveAdapterRegistry registry)

Set the ReactiveAdapterRegistry to use to support different asynchronous types for HTTP service method return values.

By default this is ReactiveAdapterRegistry#getSharedInstance().

Returns:RSocketServiceProxyFactory.Builder

this same builder instance

rsocketRequesterback to summary
public RSocketServiceProxyFactory.Builder rsocketRequester(RSocketRequester requester)

Provide the requester to perform requests through.

Parameters
requester:RSocketRequester

the requester to use

Returns:RSocketServiceProxyFactory.Builder

the same builder instance

org.springframework.messaging.rsocket.service back to summary

private final Class RSocketServiceProxyFactory.ServiceMethodInterceptor

extends Object
implements MethodInterceptor
Class Inheritance
  • java.lang.Object
  • org.springframework.messaging.rsocket.service.RSocketServiceProxyFactory.ServiceMethodInterceptor
All Implemented Interfaces
org.aopalliance.intercept.MethodInterceptor, org.aopalliance.intercept.Interceptor, org.aopalliance.aop.Advice

MethodInterceptor that invokes an RSocketServiceMethod.

Field Summary

Modifier and TypeField and Description
private final Map<Method, RSocketServiceMethod>

Constructor Summary

AccessConstructor and Description
private

Method Summary

Modifier and TypeMethod and Description
public Object
invoke(MethodInvocation
the method invocation joinpoint
invocation
)

Implements org.aopalliance.intercept.MethodInterceptor.invoke.

Implement this method to perform extra treatments before and after the invocation.
Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

serviceMethodsback to summary
private final Map<Method, RSocketServiceMethod> serviceMethods

Constructor Detail

ServiceMethodInterceptorback to summary
private ServiceMethodInterceptor(List<RSocketServiceMethod> methods)

Method Detail

invokeback to summary
public Object invoke(MethodInvocation invocation) throws Throwable

Implements org.aopalliance.intercept.MethodInterceptor.invoke.

Doc from org.aopalliance.intercept.MethodInterceptor.invoke.

Implement this method to perform extra treatments before and after the invocation. Polite implementations would certainly like to invoke Joinpoint#proceed().

Parameters
invocation:MethodInvocation

the method invocation joinpoint

Returns:Object

the result of the call to Joinpoint#proceed(); might be intercepted by the interceptor

Annotations
@Override
Exceptions
Throwable:
if the interceptors or the target object throws an exception