Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Suggestion] Refactor KafkaListenerConfigUtils to Use Enum for Constants Management #3163

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

JoeCP17
Copy link

@JoeCP17 JoeCP17 commented Mar 25, 2024

This pull request introduces a significant refactor to the KafkaListenerConfigUtils class, transitioning it from an abstract class to an enum named KafkaListenerConfigTypes.

This change aims to enhance the management of configuration constants within our project, leveraging the strengths of enum in Java for a more efficient and type-safe way to handle constants.

Key Changes

KafkaListenerConfigUtils is now an enum KafkaListenerConfigTypes, encapsulating the bean names as enum constants.

Introduced a nested KAFKA_CONFIG_PATH class within KafkaListenerConfigTypes to maintain the original constants'values.

Rationale

The primary motivation behind this change is to utilize enums for constant management, which offers several advantages

Type Safety

Enums provide compile-time type checking, reducing the risk of assigning incorrect values to constants.

Singleton Pattern

By their nature, enums in Java implement the singleton pattern, ensuring that constant values are instantiated only once throughout the JVM lifecycle.

Impact

This change does not introduce any breaking changes to existing functionality.
All references to KafkaListenerConfigUtils constants have been updated to use KafkaListenerConfigTypes accordingly.

@pivotal-cla
Copy link

@JoeCP17 Please sign the Contributor License Agreement!

Click here to manually synchronize the status of this Pull Request.

See the FAQ for frequently asked questions.

@pivotal-cla
Copy link

@JoeCP17 Thank you for signing the Contributor License Agreement!

Copy link
Member

@artembilan artembilan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry, I cannot accept this change since it is more an abusing of enum feature over simple string constant. Even if it is a bit type safe internally for the framework, it is introducing some inconvenience for end-users like your change in the AliasPropertiesTests with that @Bean(KafkaListenerConfigTypes.KAFKA_CONFIG_PATH.KAFKA_LISTENER_ENDPOINT_REGISTRY_BEAN_NAME).

We really turn to enum only if there are more than just plain string constant in the logic. The rest is a simple pattern to follow: just use some util class with those simple string constants.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants