adutra commented on PR #1124:
URL: https://github.com/apache/polaris/pull/1124#issuecomment-2704282942

   My general feeling about `FeatureConfiguration` is that it's too schemaless. 
I don't think this PR addresses that, but I think it's something that needs to 
be addressed soon.
   
   A typical configuration class in a Quarkus application would like like this:
   
   ```java
   @ConfigMapping(prefix = "polaris.feature")
   interface FeatureConfiguration {
     boolean configX();
     Optional<String> configY();
     List<String> configZ();
   }
   ```
   
   However, we currently have this:
   
   ```java
   @ConfigMapping(prefix = "polaris.feature")
   interface FeatureConfiguration {
     Map<String, String> defaults();
   }
   ```
   
   Where the map values are dynamically parsed as json, then each map entry is 
collated against the fields in `PolarisConfiguration`:
   
   ```java
   public class PolarisConfiguration<T> {
     public static final PolarisConfiguration<Boolean> CONFIG_X = ...
     public static final PolarisConfiguration<String> CONFIG_Y = ...
     public static final PolarisConfiguration<List<String>> CONFIG_Z = ...
   }
   ```
   
   This makes the code quite brittle, as it's not possible to statically 
compile it against an existing method like `FeatureConfiguration.configX()`.
   
   I understand that the goal is to be able to override things on different 
levels, by realm for instance – and I think that's a great idea. But there are 
other ways to achieve that while preserving a strongly-typed configuration 
mechanism.
   
   Let's discuss this at the next meeting, but I would suggest to refactor this 
by grouping the configuration options into logical groups inside one or many 
configuration classes.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@polaris.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to