Public classes which are undocumented and/or for internal use
There are several public classes and interfaces in the project which don't have documentation or are clearly for internal use. The list is:
- ~~
io.smallrye.config.ConfigLogging~~ (moved to_private) io.smallrye.config.ConfigMappingClassMapperio.smallrye.config.ConfigMappingMetadata- ~~
io.smallrye.config.ConfigMappingObject~~ (removed) - ~~
io.smallrye.config.ConfigMessages~~ (moved to_private) io.smallrye.config.ConfigValidator- ~~
io.smallrye.config.SecretKeysHandler~~ (documented) - ~~
io.smallrye.config.SecretKeysHandlerFactory~~ (documented) io.smallrye.config.AbstractMappingConfigSourceInterceptorio.smallrye.config.MapBackedConfigValueConfigSourceio.smallrye.config.ConfigMappingGeneratorio.smallrye.config.ConfigMappingLoader- ~~
io.smallrye.config.ConfigMappings~~ (documented) io.smallrye.config.ConfigurableConfigSource- ~~
io.smallrye.config.ConfigValuePropertiesConfigSource~~ (removed) io.smallrye.config.DefaultValuesConfigSourceio.smallrye.config.DotEnvConfigSourceProvider- ~~
io.smallrye.config.EnvConfigSource~~ (documented) io.smallrye.config.ExpressionConfigSourceInterceptorio.smallrye.config.Expressionsio.smallrye.config.FallbackConfigSourceInterceptor- ~~
io.smallrye.config.KeyMapBackedConfigSource~~ (removed) io.smallrye.config.LoggingConfigSourceInterceptorio.smallrye.config.ProfileConfigSourceInterceptorio.smallrye.config.PropertiesConfigSource- ~~
io.smallrye.config.PropertiesConfigSourceProvider~~ (removed) io.smallrye.config.PropertiesLocationConfigSourceFactoryio.smallrye.config.RelocateConfigSourceInterceptor- ~~
io.smallrye.config.SecretKeys~~(documented) io.smallrye.config.SecretKeysConfigSourceInterceptor- ~~
io.smallrye.config.SecretKeysHandlerConfigSourceInterceptor~~ (removed) - ~~
io.smallrye.config.SmallRyeConfig~~ (documented) io.smallrye.config.SmallRyeConfigBuilderio.smallrye.config.SmallRyeConfigProviderResolverio.smallrye.config.SysPropConfigSource
These types either need to be documented with clear API contracts, or made non-public (even if they're marked as experimental). Additionally, classes which are kept public should be examined to see if they should be final, and their constructors should be examined to ensure that all public constructors are properly documented, and that the implicit constructor is intended to be public (it's better though to have explicit constructors because then they can be documented).
Relates to #295.
Relates to #295.
We actually reverted that due to split packages in https://github.com/smallrye/smallrye-config/pull/300.
A few of these while not public APIs, need to be public because of our usage in Quarkus. Regardless, I'll have a look into the list and try to detail each case.
Oops, I meant to reference #989. My concern with #989 is that the API classes are all already in the root package in -core so having another API module isn't really going to be possible without splitting packages.
Yes, I know :(
We didn't want to change it at that time not to break users, and now the situation is far worse. It bothers me that we have a flat package structure with so many classes. I've already deprecated a few things that have little to no use to remove them.