diff --git a/optimizer/src/main/java/dev/cel/optimizer/optimizers/SelectOptimizer.java b/optimizer/src/main/java/dev/cel/optimizer/optimizers/SelectOptimizer.java index 3c6097180..56d662237 100644 --- a/optimizer/src/main/java/dev/cel/optimizer/optimizers/SelectOptimizer.java +++ b/optimizer/src/main/java/dev/cel/optimizer/optimizers/SelectOptimizer.java @@ -58,32 +58,36 @@ import dev.cel.common.types.CelKind; import dev.cel.common.types.CelTypes; import dev.cel.common.types.ListType; +import dev.cel.common.types.MapType; import dev.cel.common.types.SimpleType; +import dev.cel.common.types.StructTypeReference; import dev.cel.common.values.CelByteString; import dev.cel.optimizer.AstMutator; import dev.cel.optimizer.CelAstOptimizer; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import java.util.Optional; /** * Performs field selection optimization on protobuf message select chains. * - *

Embeds protobuf field metadata directly into qualification paths ({@code cel.@attribute}) and - * field presence paths ({@code cel.@hasField}). This accelerates nested field evaluation, enables - * reflection-free field traversal in resource-constrained runtimes without descriptor tables, and - * provides resilience against protobuf field renames. + *

Embeds protobuf field metadata directly into qualification paths ({@code + * cel.@attribute}) and field presence paths ({@code cel.@hasField}). This accelerates nested + * field evaluation, enables reflection-free field traversal in resource-constrained runtimes + * without descriptor tables, and provides resilience against protobuf field renames. * *

WARNING: Evaluating optimized ASTs requires explicit runtime support for {@code - * cel.@attribute} and {@code cel.@hasField}. Ensure that the target evaluation environment (in - * Java, C++, Go, or other language runtimes) supports these select optimization functions before - * applying this optimizer. Evaluating an optimized AST in an unsupported runtime will result in an - * evaluation error due to missing function overloads. + * cel.@attribute} and {@code cel.@hasField}. Ensure that the target evaluation environment + * (in Java, C++, Go, or other language runtimes) supports these select optimization functions + * before applying this optimizer. Evaluating an optimized AST in an unsupported runtime will result + * in an evaluation error due to missing function overloads. * - *

Metadata Tuples: In {@code cel.@attribute}, each step in the qualification path is - * represented as a metadata tuple: + *

Metadata Tuples: In {@code cel.@attribute}, each step in the qualification path + * is represented as a metadata tuple: * *