Class ConfigurationIntrospector
java.lang.Object
com.cloudforge.core.config.ConfigurationIntrospector
Discovers and filters configuration fields using reflection and annotations.
This is the core of the Configuration Introspection system, providing automatic
field discovery based on ConfigField annotations and application capabilities.
Usage
// Discover all fields for an application
List<ConfigFieldInfo> fields = ConfigurationIntrospector.discoverFields(gitlabSpec);
// Discover fields in a specific category
List<ConfigFieldInfo> databaseFields = ConfigurationIntrospector.discoverFields(gitlabSpec, "database");
// Filter by visibility
List<ConfigFieldInfo> visibleFields = fields.stream()
.filter(f -> f.isVisible(config))
.toList();
- Since:
- 3.0.0
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic String[]allowedValues(ConfigFieldInfo field, ApplicationSpec appSpec, Object config) The values a form or prompt should offer for a field.static List<ConfigFieldInfo> discoverFields(ApplicationSpec appSpec) Discovers all configuration fields from DeploymentConfig.static List<ConfigFieldInfo> discoverFields(ApplicationSpec appSpec, String category) Discovers configuration fields for a specific category.static List<ConfigFieldInfo> discoverVisibleFields(ApplicationSpec appSpec, Object config) Discovers visible fields only (based on application capabilities and configuration state).static List<ConfigFieldInfo> discoverVisibleFields(ApplicationSpec appSpec, Object config, String category) Discovers fields by category with visibility filtering.
-
Constructor Details
-
ConfigurationIntrospector
public ConfigurationIntrospector()
-
-
Method Details
-
discoverFields
Discovers all configuration fields from DeploymentConfig.Returns fields sorted by category order, then field order, then display name.
- Parameters:
appSpec- application spec for determining field visibility- Returns:
- list of all discovered fields
-
allowedValues
The values a form or prompt should offer for a field. Most fields offer their ownallowedValues. The database fields offer what the selected application supports:databaseEnginelists its engines, anddatabaseVersionlists the versions of the engine chosen inconfig, or of the application's own engine when none is chosen. The Manager and the CLI both read this, so an application'sDatabaseSpec.supportedDatabases()shows up in each without further changes.- Parameters:
field- the field being offeredappSpec- the selected application, may be nullconfig- the configuration chosen so far, may be null- Returns:
- the offered values, empty when the field accepts free input
-
discoverFields
Discovers configuration fields for a specific category.Returns fields sorted by field order, then display name.
- Parameters:
appSpec- application spec for determining field visibilitycategory- category to filter by, or null for all categories- Returns:
- list of discovered fields matching the category
-
discoverVisibleFields
Discovers visible fields only (based on application capabilities and configuration state).- Parameters:
appSpec- application spec for determining field visibilityconfig- current configuration state for evaluating visibility expressions- Returns:
- list of visible fields
-
discoverVisibleFields
public static List<ConfigFieldInfo> discoverVisibleFields(ApplicationSpec appSpec, Object config, String category) Discovers fields by category with visibility filtering.- Parameters:
appSpec- application specconfig- current configuration statecategory- category to filter by- Returns:
- list of visible fields in the category
-