Class VisibilityCondition

java.lang.Object
com.cloudforge.core.annotation.VisibilityCondition

public final class VisibilityCondition extends Object
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

  1. ! (NOT) - Highest precedence
  2. && (AND)
  3. || (OR) - Lowest precedence
  4. () - 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: