Follow up on shaded cache modules (#388)

* Add new module descriptions to README.adoc

* Replace non-shaded Caffeine classes w/
  shaded version in PulsarRuntimeHints.java
This commit is contained in:
Chris Bono
2023-03-29 12:22:56 -05:00
committed by GitHub
parent 156b85cd7b
commit 42daa54d33
2 changed files with 22 additions and 16 deletions

View File

@@ -70,8 +70,11 @@ There are several modules in Spring Pulsar. Here is a quick overview:
=== spring-pulsar
The main library that provides the API to access Apache Pulsar.
=== spring-pulsar-reactive
Provides the API to access Apache Pulsar using a Reactive client.
=== spring-pulsar-cache-provider
Provides the interfaces for the cache provider used by the main library to cache producers.
=== spring-pulsar-cache-provider-caffeine
Provides the implementation of the cache provider using a shaded version of Caffeine.
=== spring-pulsar-dependencies
Provides a Gradle https://docs.gradle.org/current/userguide/java_platform_plugin.html[java-platform] that recommends dependency versions.
@@ -79,20 +82,24 @@ Provides a Gradle https://docs.gradle.org/current/userguide/java_platform_plugin
=== spring-pulsar-docs
Provides reference docs and handles aggregating javadocs.
=== spring-pulsar-reactive
Provides the API to access Apache Pulsar using a Reactive client.
=== spring-pulsar-reactive-spring-boot-starter
Provides a dependency descriptor that can be included in your application to easily start using Spring Pulsar in Reactive and imperative fashions.
=== spring-pulsar-sample-apps
Provides sample applications to illustrate Spring Pulsar functionality as well as provide ability for quick manual verification during development.
=== spring-pulsar-spring-boot-autoconfigure
Provides Spring Boot auto-configuration for Spring Pulsar.
=== spring-pulsar-spring-boot-starter
Provides a dependency descriptor that can be included in your application to easily start using Spring Pulsar in an imperative fashion.
=== spring-pulsar-reactive-spring-boot-starter
Provides a dependency descriptor that can be included in your application to easily start using Spring Pulsar in Reactive and imperative fashions.
=== spring-pulsar-spring-cloud-stream-binder
Provides a Spring Cloud Stream Binder implementation for Apache Pulsar.
=== spring-pulsar-sample-apps
Provides sample applications to illustrate Spring Pulsar functionality as well as provide ability for quick manual verification during development.
== License
Spring Pulsar is Open Source software released under the https://www.apache.org/licenses/LICENSE-2.0.html[Apache 2.0 license].

View File

@@ -51,10 +51,9 @@ public class PulsarRuntimeHints implements RuntimeHintsRegistrar {
public void registerHints(RuntimeHints hints, @Nullable ClassLoader classLoader) {
ReflectionHints reflectionHints = hints.reflection();
// The following components need access to declared constructors, invoke declared
// methods
// and introspect all public methods. The components are a mix of JDK classes,
// core Pulsar classes,
// some other shaded components available through Pulsar client.
// methods and introspect all public methods. The components are a mix of JDK
// classes, core Pulsar classes, and some other shaded components available
// through Pulsar client.
Stream.of(HashSet.class, LinkedHashMap.class, TreeMap.class, Authentication.class,
AuthenticationDataProvider.class, SecretsSerializer.class, PulsarAdminBuilderImpl.class,
OffloadProcessStatusImpl.class, Commands.class).forEach(
@@ -72,12 +71,10 @@ public class PulsarRuntimeHints implements RuntimeHintsRegistrar {
MemberCategory.INVOKE_DECLARED_METHODS, MemberCategory.INTROSPECT_PUBLIC_METHODS,
MemberCategory.DECLARED_CLASSES, MemberCategory.DECLARED_FIELDS)));
// @formatter:off
// These are shaded classes and other inaccessible interfaces/classes (thus using
// string version of API).
// @formatter:off
Stream.of("com.github.benmanes.caffeine.cache.SSMSA",
"com.github.benmanes.caffeine.cache.PSAMS",
"org.apache.pulsar.client.admin.internal.JacksonConfigurator",
Stream.of("org.apache.pulsar.client.admin.internal.JacksonConfigurator",
"org.apache.pulsar.client.impl.conf.TopicConsumerConfigurationData",
"org.apache.pulsar.client.impl.conf.TopicConsumerConfigurationData$TopicNameMatcher",
"org.apache.pulsar.client.util.SecretsSerializer",
@@ -219,7 +216,9 @@ public class PulsarRuntimeHints implements RuntimeHintsRegistrar {
"org.apache.pulsar.shade.org.jvnet.hk2.internal.DynamicConfigurationServiceImpl",
"org.apache.pulsar.shade.org.jvnet.hk2.internal.DynamicConfigurationServiceImpl",
"org.apache.pulsar.shade.org.jvnet.hk2.internal.ServiceLocatorRuntimeImpl",
"org.apache.pulsar.shade.org.jvnet.hk2.internal.ServiceLocatorRuntimeImpl")
"org.apache.pulsar.shade.org.jvnet.hk2.internal.ServiceLocatorRuntimeImpl",
"org.springframework.pulsar.shade.com.github.benmanes.caffeine.cache.SSMSA",
"org.springframework.pulsar.shade.com.github.benmanes.caffeine.cache.PSAMS")
.forEach(type -> reflectionHints.registerTypeIfPresent(classLoader, type,
builder -> builder.withMembers(MemberCategory.INVOKE_DECLARED_CONSTRUCTORS,
MemberCategory.INVOKE_PUBLIC_METHODS, MemberCategory.INVOKE_DECLARED_METHODS,