Package com.cloudforge.core.annotation
Class VisibilityCondition
java.lang.Object
com.cloudforge.core.annotation.VisibilityCondition
Visibility condition expression language for configuration fields.
Defines a simple, well-specified DSL for field visibility instead of complex nested annotations (which Java doesn't support well).
Grammar Specification
condition := "always" | expression
expression := term ( "||" term )*
term := factor ( "&&" factor )*
factor := "!" factor | "(" expression ")" | predicate
predicate := capability | fieldCheck | appCheck
capability := "supportsDatabase" | "requiresDatabase" | "supportsOidc"
fieldCheck := fieldName "==" value
appCheck := "app==" appId
fieldName := JavaIdentifier
value := "\"" string "\"" | "true" | "false" | number | EnumValue
appId := "\"" string "\""
Operator Precedence
- ! (NOT) - Highest precedence
- && (AND)
- || (OR) - Lowest precedence
- () - Parentheses for grouping
Usage Examples
Simple Capability Check
visibleWhen = "supportsDatabase"
Field Equality
visibleWhen = "provisionDatabase == true"
Application-Specific
visibleWhen = "app == \"redis\""
Compound Condition (AND)
visibleWhen = "provisionDatabase == true && supportsDatabase"
Compound Condition (OR)
visibleWhen = "supportsDatabase || requiresBackup"
Negation
visibleWhen = "!provisionDatabase"
Complex Expression with Grouping
visibleWhen = "(supportsDatabase && provisionDatabase == true) || requiresDatabase"
Production-Only Feature
visibleWhen = "securityProfile == PRODUCTION && provisionDatabase == true"
Supported Capabilities
- supportsDatabase - ApplicationSpec implements DatabaseSpec
- requiresDatabase - Database is REQUIRED (not optional)
- supportsOidc - ApplicationSpec.supportsOidcIntegration() == true
- supportsFargate - ApplicationSpec supports Fargate runtime
- supportsEc2 - ApplicationSpec supports EC2 runtime
Field References
Any public field in DeploymentConfig can be referenced:
- provisionDatabase - boolean
- securityProfile - SecurityProfile enum (DEV, STAGING, PRODUCTION)
- runtime - RuntimeType enum (FARGATE, EC2)
- oidcProvider - String ("cognito", "identity-center", etc.)
Error Handling
Invalid expressions throw IllegalArgumentException at initialization time
with detailed error messages including position and expected tokens.
- Since:
- 3.0.0
- See Also:
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final classExample expressions for testing and documentation. -
Method Summary