Skip to content

Commit

Permalink
Add some convenience methods to GrpcServiceDiscoverer
Browse files Browse the repository at this point in the history
  • Loading branch information
dsyer committed Jan 16, 2025
1 parent ec190ae commit cfe1ca9
Showing 3 changed files with 30 additions and 8 deletions.
Original file line number Diff line number Diff line change
@@ -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);
}

}
Original file line number Diff line number Diff line change
@@ -80,12 +80,12 @@ static class GrpcServletConfiguration {
@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)
Original file line number Diff line number Diff line change
@@ -107,11 +107,10 @@ private Stream<RequestMatcher> getDelegateMatchers(GrpcServiceDiscoverer context
}

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

0 comments on commit cfe1ca9

Please sign in to comment.