Add some convenience methods to GrpcServiceDiscoverer
This commit is contained in:
@@ -35,4 +35,27 @@ public interface GrpcServiceDiscoverer {
|
||||
*/
|
||||
List<ServerServiceDefinition> findServices();
|
||||
|
||||
/**
|
||||
* Find gRPC service names.
|
||||
* @return list of service names - empty when no services available
|
||||
*/
|
||||
default List<String> listServiceNames() {
|
||||
return findServices().stream()
|
||||
.map(ServerServiceDefinition::getServiceDescriptor)
|
||||
.map(descriptor -> descriptor.getName())
|
||||
.toList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Find gRPC service.
|
||||
* @param name the service name
|
||||
* @return a service - null if no service has this name
|
||||
*/
|
||||
default ServerServiceDefinition findService(String name) {
|
||||
return findServices().stream()
|
||||
.filter(service -> service.getServiceDescriptor().getName().equals(name))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -80,12 +80,12 @@ public class GrpcServerFactoryAutoConfiguration {
|
||||
@Bean
|
||||
public ServletRegistrationBean<GrpcServlet> grpcServlet(GrpcServerProperties properties,
|
||||
GrpcServiceDiscoverer discoverer, ServerBuilderCustomizers serverBuilderCustomizers) {
|
||||
List<ServerServiceDefinition> services = discoverer.findServices();
|
||||
List<String> paths = services.stream()
|
||||
.map(service -> "/" + service.getServiceDescriptor().getName() + "/*")
|
||||
List<String> paths = discoverer.listServiceNames()
|
||||
.stream()
|
||||
.map(service -> "/" + service + "/*")
|
||||
.collect(Collectors.toList());
|
||||
ServletServerBuilder servletServerBuilder = new ServletServerBuilder();
|
||||
services.forEach(servletServerBuilder::addService);
|
||||
discoverer.findServices().forEach(servletServerBuilder::addService);
|
||||
PropertyMapper mapper = PropertyMapper.get().alwaysApplyingWhenNonNull();
|
||||
mapper.from(properties.getMaxInboundMessageSize())
|
||||
.asInt(DataSize::toBytes)
|
||||
|
||||
@@ -107,11 +107,10 @@ public class GrpcServletRequest {
|
||||
}
|
||||
|
||||
private Stream<String> getPatterns(GrpcServiceDiscoverer context) {
|
||||
return context.findServices()
|
||||
return context.listServiceNames()
|
||||
.stream()
|
||||
.filter(service -> !this.exclusions.stream()
|
||||
.anyMatch(type -> type.equals(service.getServiceDescriptor().getName())))
|
||||
.map(service -> "/" + service.getServiceDescriptor().getName() + "/**");
|
||||
.filter(service -> !this.exclusions.stream().anyMatch(type -> type.equals(service)))
|
||||
.map(service -> "/" + service + "/**");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user