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: