Class VisibilityExpressionEvaluator

java.lang.Object
com.cloudforge.core.config.VisibilityExpressionEvaluator

public class VisibilityExpressionEvaluator extends Object
Evaluates visibility expressions for configuration fields.

This evaluator implements a recursive descent parser that supports:

  • Logical operators: && (AND), || (OR), ! (NOT)
  • Comparison operators: == (equals), != (not equals), >, <, >=, <=
  • Parentheses: for grouping expressions
  • Capability checks: supportsDatabase, supportsOidc, etc.
  • Field comparisons: provisionDatabase == true, runtime == FARGATE, maxCapacity > 1

Grammar (BNF):

 expression     ::= orExpression
 orExpression   ::= andExpression ( "||" andExpression )*
 andExpression  ::= notExpression ( "&&" notExpression )*
 notExpression  ::= "!" primary | primary
 primary        ::= "(" expression ")" | comparison | capability
 comparison     ::= identifier ( "==" | "!=" ) value
 capability     ::= identifier
 identifier     ::= [a-zA-Z_][a-zA-Z0-9_]*
 value          ::= string | number | boolean
 

Examples:

 supportsDatabase                           → Check if ApplicationSpec supports databases
 provisionDatabase == true                  → Check if provisionDatabase field is true
 runtimeType == "fargate"                   → Check if runtimeType equals "fargate"
 supportsDatabase && provisionDatabase      → Logical AND
 multiAz || databaseEngine == "aurora"      → Logical OR
 !provisionDatabase                         → Logical NOT
 (supportsDatabase && provisionDatabase) || useEmbeddedDb  → Parentheses for grouping
 
  • Constructor Details

    • VisibilityExpressionEvaluator

      public VisibilityExpressionEvaluator(ApplicationSpec appSpec, Object config, String expression)
      Creates a new evaluator.
      Parameters:
      appSpec - the application spec (may be null)
      config - the deployment config object
      expression - the visibility expression to evaluate
  • Method Details

    • evaluate

      public boolean evaluate()
      Evaluates the visibility expression.
      Returns:
      true if the field should be visible, false otherwise
      Throws:
      IllegalArgumentException - if the expression is malformed