Add runtime hints. Removed unused dependency.

This commit is contained in:
Olga Maciaszek-Sharma
2022-08-05 16:25:03 +02:00
parent e4a9ecbccd
commit a0cb69742d
6 changed files with 63 additions and 5 deletions

View File

@@ -53,10 +53,6 @@
<artifactId>spring-boot-starter-actuator</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-commons</artifactId>

View File

@@ -22,12 +22,19 @@ import org.apache.curator.RetryPolicy;
import org.apache.curator.drivers.TracerDriver;
import org.apache.curator.ensemble.EnsembleProvider;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.x.discovery.UriSpec;
import org.apache.zookeeper.ClientCnxnSocketNIO;
import org.springframework.aot.hint.MemberCategory;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.aot.hint.TypeReference;
import org.springframework.beans.factory.ObjectProvider;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ClassUtils;
/**
* {@link org.springframework.boot.autoconfigure.EnableAutoConfiguration
@@ -67,3 +74,31 @@ public class ZookeeperAutoConfiguration {
}
}
// TODO: remove after GraalVM metadata PR merged
class ZookeeperCoreHints implements RuntimeHintsRegistrar {
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
if (!ClassUtils.isPresent("org.apache.zookeeper.ZooKeeper", classLoader)) {
return;
}
hints.reflection().registerType(TypeReference.of(ClientCnxnSocketNIO.class),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS));
hints.reflection()
.registerType(TypeReference.of("org.apache.curator.x.discovery.details.OldServiceInstance"),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.DECLARED_FIELDS,
MemberCategory.INVOKE_DECLARED_METHODS));
hints.reflection()
.registerType(TypeReference.of("org.apache.curator.x.discovery.UriSpec"),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.DECLARED_FIELDS,
MemberCategory.INVOKE_DECLARED_METHODS));
hints.reflection().registerType(TypeReference.of(UriSpec.Part.class),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.DECLARED_FIELDS,
MemberCategory.INVOKE_DECLARED_METHODS));
hints.reflection()
.registerType(TypeReference.of("org.apache.curator.x.discovery.ServiceInstance"),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.DECLARED_FIELDS,
MemberCategory.INVOKE_DECLARED_METHODS));
}
}

View File

@@ -0,0 +1,2 @@
org.springframework.aot.hint.RuntimeHintsRegistrar=\
org.springframework.cloud.zookeeper.ZookeeperCoreHints

View File

@@ -19,6 +19,10 @@ package org.springframework.cloud.zookeeper.discovery;
import org.apache.curator.framework.CuratorFramework;
import org.apache.curator.x.discovery.ServiceDiscovery;
import org.springframework.aot.hint.MemberCategory;
import org.springframework.aot.hint.RuntimeHints;
import org.springframework.aot.hint.RuntimeHintsRegistrar;
import org.springframework.aot.hint.TypeReference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.autoconfigure.health.ConditionalOnEnabledHealthIndicator;
import org.springframework.boot.actuate.endpoint.annotation.Endpoint;
@@ -32,6 +36,7 @@ import org.springframework.cloud.commons.util.InetUtils;
import org.springframework.cloud.zookeeper.discovery.dependency.ZookeeperDependencies;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.ClassUtils;
/**
* @author Spencer Gibb
@@ -81,3 +86,21 @@ public class ZookeeperDiscoveryAutoConfiguration {
}
}
class ZookeeperDiscoveryHints implements RuntimeHintsRegistrar {
@Override
public void registerHints(RuntimeHints hints, ClassLoader classLoader) {
if (!ClassUtils.isPresent("org.apache.zookeeper.ZooKeeper", classLoader)) {
return;
}
hints.reflection()
.registerType(TypeReference.of(ZookeeperInstance.class),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.DECLARED_FIELDS,
MemberCategory.INVOKE_DECLARED_METHODS));
hints.reflection().registerType(TypeReference.of(ZookeeperServiceInstance.class),
hint -> hint.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS, MemberCategory.DECLARED_FIELDS,
MemberCategory.INVOKE_DECLARED_CONSTRUCTORS));
}
}

View File

@@ -0,0 +1,2 @@
org.springframework.aot.hint.RuntimeHintsRegistrar=\
org.springframework.cloud.zookeeper.discovery.ZookeeperDiscoveryHints

View File

@@ -3,5 +3,5 @@
"-//Puppy Crawl//DTD Suppressions 1.1//EN"
"https://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
<suppress files=".*ZookeeperPropertySourceLocatorTests\.java" checks="JavadocVariable"/>
<suppress files=".*Tests\.java" checks="JavadocVariable"/>
</suppressions>