From c90e45189ca2cc5924f6ef0fc476293399ae60a9 Mon Sep 17 00:00:00 2001 From: Sokwhan Huh Date: Mon, 28 Jul 2025 11:20:03 -0700 Subject: [PATCH] Internal Changes PiperOrigin-RevId: 788086447 --- .../src/main/java/dev/cel/bundle/BUILD.bazel | 1 + .../java/dev/cel/bundle/CelEnvironment.java | 25 +-- .../src/test/java/dev/cel/bundle/BUILD.bazel | 1 + .../test/java/dev/cel/bundle/CelImplTest.java | 74 ++++----- .../cel/checker/CelProtoExprVisitorTest.java | 5 +- .../src/main/codelab/solutions/BUILD.bazel | 1 + .../src/main/codelab/solutions/Exercise6.java | 3 +- .../test/java/dev/cel/common/ast/BUILD.bazel | 1 + .../cel/common/ast/CelExprFormatterTest.java | 5 +- .../cel/common/ast/CelExprVisitorTest.java | 6 +- .../dev/cel/common/navigation/BUILD.bazel | 1 + .../CelNavigableExprVisitorTest.java | 11 +- .../test/java/dev/cel/conformance/BUILD.bazel | 1 + .../dev/cel/conformance/ConformanceTest.java | 3 +- .../test/java/dev/cel/extensions/BUILD.bazel | 1 + .../extensions/CelOptionalLibraryTest.java | 3 +- .../extensions/CelProtoExtensionsTest.java | 3 +- .../cel/extensions/CelSetsExtensionsTest.java | 3 +- .../dev/cel/optimizer/AstMutatorTest.java | 3 +- .../test/java/dev/cel/optimizer/BUILD.bazel | 1 + .../dev/cel/optimizer/optimizers/BUILD.bazel | 1 + .../ConstantFoldingOptimizerTest.java | 3 +- .../SubexpressionOptimizerBaselineTest.java | 3 +- .../src/test/java/dev/cel/runtime/BUILD.bazel | 1 + .../dev/cel/runtime/CelLiteRuntimeTest.java | 3 +- .../java/dev/cel/runtime/CelRuntimeTest.java | 5 +- .../runtime/DescriptorTypeResolverTest.java | 3 +- .../java/dev/cel/runtime/async/BUILD.bazel | 1 + .../async/CelAsyncRuntimeImplTest.java | 142 +++++++++--------- 29 files changed, 173 insertions(+), 141 deletions(-) diff --git a/bundle/src/main/java/dev/cel/bundle/BUILD.bazel b/bundle/src/main/java/dev/cel/bundle/BUILD.bazel index 941310392..35b4679f7 100644 --- a/bundle/src/main/java/dev/cel/bundle/BUILD.bazel +++ b/bundle/src/main/java/dev/cel/bundle/BUILD.bazel @@ -64,6 +64,7 @@ java_library( "//bundle:cel", "//checker:standard_decl", "//common:compiler_common", + "//common:container", "//common:options", "//common:source", "//common/types", diff --git a/bundle/src/main/java/dev/cel/bundle/CelEnvironment.java b/bundle/src/main/java/dev/cel/bundle/CelEnvironment.java index 97a94e8d9..964ca0a58 100644 --- a/bundle/src/main/java/dev/cel/bundle/CelEnvironment.java +++ b/bundle/src/main/java/dev/cel/bundle/CelEnvironment.java @@ -30,6 +30,7 @@ import dev.cel.checker.CelStandardDeclarations; import dev.cel.checker.CelStandardDeclarations.StandardFunction; import dev.cel.checker.CelStandardDeclarations.StandardOverload; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelOptions; import dev.cel.common.CelOverloadDecl; @@ -195,7 +196,7 @@ public CelCompiler extend(CelCompiler celCompiler, CelOptions celOptions) celCompiler .toCompilerBuilder() .setTypeProvider(celTypeProvider) - .setContainer(container()) + .setContainer(CelContainer.ofName(container())) .addVarDeclarations( variables().stream() .map(v -> v.toCelVarDecl(celTypeProvider)) @@ -206,7 +207,7 @@ public CelCompiler extend(CelCompiler celCompiler, CelOptions celOptions) .collect(toImmutableList())); if (!container().isEmpty()) { - compilerBuilder.setContainer(container()); + compilerBuilder.setContainer(CelContainer.ofName(container())); } addAllCompilerExtensions(compilerBuilder, celOptions); @@ -240,8 +241,10 @@ private void addAllCompilerExtensions( for (ExtensionConfig extensionConfig : extensions()) { CanonicalCelExtension extension = getExtensionOrThrow(extensionConfig.name()); if (extension.compilerExtensionProvider() != null) { - CelCompilerLibrary celCompilerLibrary = extension.compilerExtensionProvider() - .getCelCompilerLibrary(celOptions, extensionConfig.version()); + CelCompilerLibrary celCompilerLibrary = + extension + .compilerExtensionProvider() + .getCelCompilerLibrary(celOptions, extensionConfig.version()); celCompilerBuilder.addLibraries(celCompilerLibrary); } } @@ -252,8 +255,10 @@ private void addAllRuntimeExtensions(CelRuntimeBuilder celRuntimeBuilder, CelOpt for (ExtensionConfig extensionConfig : extensions()) { CanonicalCelExtension extension = getExtensionOrThrow(extensionConfig.name()); if (extension.runtimeExtensionProvider() != null) { - CelRuntimeLibrary celRuntimeLibrary = extension.runtimeExtensionProvider() - .getCelRuntimeLibrary(celOptions, extensionConfig.version()); + CelRuntimeLibrary celRuntimeLibrary = + extension + .runtimeExtensionProvider() + .getCelRuntimeLibrary(celOptions, extensionConfig.version()); celRuntimeBuilder.addLibraries(celRuntimeLibrary); } } @@ -697,9 +702,7 @@ enum CanonicalCelExtension { SETS( (options, version) -> CelExtensions.sets(options), (options, version) -> CelExtensions.sets(options)), - LISTS( - (options, version) -> CelExtensions.lists(), - (options, version) -> CelExtensions.lists()); + LISTS((options, version) -> CelExtensions.lists(), (options, version) -> CelExtensions.lists()); @SuppressWarnings("ImmutableEnumChecker") private final CompilerExtensionProvider compilerExtensionProvider; @@ -737,8 +740,7 @@ RuntimeExtensionProvider runtimeExtensionProvider() { } /** - * LibrarySubset indicates a subset of the macros and function supported by a subsettable - * library. + * LibrarySubset indicates a subset of the macros and function supported by a subsettable library. */ @AutoValue public abstract static class LibrarySubset { @@ -766,6 +768,7 @@ public abstract static class LibrarySubset { * IncludeFunctions specifies a set of functions to include in the subset. * *

Note: the overloads specified in the subset need only specify their ID. + * *

Note: if IncludedFunctions is non-empty, then ExcludedFunctions is ignored. */ public abstract ImmutableSet includedFunctions(); diff --git a/bundle/src/test/java/dev/cel/bundle/BUILD.bazel b/bundle/src/test/java/dev/cel/bundle/BUILD.bazel index 27d7e01cf..b1b352b09 100644 --- a/bundle/src/test/java/dev/cel/bundle/BUILD.bazel +++ b/bundle/src/test/java/dev/cel/bundle/BUILD.bazel @@ -27,6 +27,7 @@ java_library( "//common:cel_ast", "//common:cel_source", "//common:compiler_common", + "//common:container", "//common:error_codes", "//common:options", "//common:proto_ast", diff --git a/bundle/src/test/java/dev/cel/bundle/CelImplTest.java b/bundle/src/test/java/dev/cel/bundle/CelImplTest.java index 2165390bb..aeb78fc78 100644 --- a/bundle/src/test/java/dev/cel/bundle/CelImplTest.java +++ b/bundle/src/test/java/dev/cel/bundle/CelImplTest.java @@ -60,6 +60,7 @@ import dev.cel.checker.ProtoTypeMask; import dev.cel.checker.TypeProvider; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelErrorCode; import dev.cel.common.CelIssue; import dev.cel.common.CelOptions; @@ -191,7 +192,7 @@ public void build_badFileDescriptorSet() { IllegalArgumentException.class, () -> standardCelBuilderWithMacros() - .setContainer("google.rpc.context.AttributeContext") + .setContainer(CelContainer.ofName("google.rpc.context.AttributeContext")) .addFileTypes( FileDescriptorSet.newBuilder() .addFile(AttributeContext.getDescriptor().getFile().toProto()) @@ -255,7 +256,7 @@ public void compile_combinedTypeProvider() { new ProtoMessageTypeProvider(ImmutableList.of(AttributeContext.getDescriptor())); Cel cel = standardCelBuilderWithMacros() - .setContainer("google") + .setContainer(CelContainer.ofName("google")) .setTypeProvider(celTypeProvider) .addMessageTypes(com.google.type.Expr.getDescriptor()) .addProtoTypeMasks( @@ -276,7 +277,7 @@ public void compile_customTypeProvider() { AttributeContext.getDescriptor(), com.google.type.Expr.getDescriptor())); Cel cel = standardCelBuilderWithMacros() - .setContainer("google") + .setContainer(CelContainer.ofName("google")) .setTypeProvider(celTypeProvider) .addVar("condition", StructTypeReference.create("google.type.Expr")) .setResultType(SimpleType.BOOL) @@ -417,7 +418,7 @@ public void program_concurrentMessageConstruction_succeeds( int threadCount = 10; Cel cel = standardCelBuilderWithMacros() - .setContainer("google.rpc.context.AttributeContext") + .setContainer(CelContainer.ofName("google.rpc.context.AttributeContext")) .addFileTypes( Any.getDescriptor().getFile(), Duration.getDescriptor().getFile(), @@ -596,7 +597,7 @@ public void program_withAllFieldsHidden_emptyMessageConstructionSuccess() throws Cel cel = standardCelBuilderWithMacros() .addMessageTypes(AttributeContext.getDescriptor()) - .setContainer("google.rpc.context.AttributeContext") + .setContainer(CelContainer.ofName("google.rpc.context.AttributeContext")) .addProtoTypeMasks( ProtoTypeMask.ofAllFieldsHidden("google.rpc.context.AttributeContext")) .build(); @@ -610,7 +611,7 @@ public void compile_withAllFieldsHidden_selectHiddenField_throws() throws Except Cel cel = standardCelBuilderWithMacros() .addMessageTypes(AttributeContext.getDescriptor()) - .setContainer("google.rpc.context.AttributeContext") + .setContainer(CelContainer.ofName("google.rpc.context.AttributeContext")) .addProtoTypeMasks( ProtoTypeMask.ofAllFieldsHidden("google.rpc.context.AttributeContext")) .build(); @@ -627,7 +628,7 @@ public void compile_withAllFieldsHidden_selectHiddenFieldOnVar_throws() throws E Cel cel = standardCelBuilderWithMacros() .addMessageTypes(AttributeContext.getDescriptor()) - .setContainer("google.rpc.context.AttributeContext") + .setContainer(CelContainer.ofName("google.rpc.context.AttributeContext")) .addProtoTypeMasks( ProtoTypeMask.ofAllFieldsHidden("google.rpc.context.AttributeContext")) .addVar("attr_ctx", StructTypeReference.create("google.rpc.context.AttributeContext")) @@ -793,7 +794,7 @@ public void program_simpleStructTypeReference() throws Exception { public void program_messageConstruction() throws Exception { Cel cel = standardCelBuilderWithMacros() - .setContainer("google.type") + .setContainer(CelContainer.ofName("google.type")) .addMessageTypes(com.google.type.Expr.getDescriptor()) .setResultType(StructTypeReference.create("google.type.Expr")) .setStandardEnvironmentEnabled(false) @@ -810,7 +811,7 @@ public void program_duplicateTypeDescriptor() throws Exception { standardCelBuilderWithMacros() .addMessageTypes(Timestamp.getDescriptor()) .addMessageTypes(ImmutableList.of(Timestamp.getDescriptor())) - .setContainer("google") + .setContainer(CelContainer.ofName("google")) .setResultType(SimpleType.TIMESTAMP) .build(); CelRuntime.Program program = @@ -823,7 +824,7 @@ public void program_hermeticDescriptors_wellKnownProtobuf() throws Exception { Cel cel = standardCelBuilderWithMacros() .addMessageTypes(Timestamp.getDescriptor()) - .setContainer("google") + .setContainer(CelContainer.ofName("google")) .setResultType(SimpleType.TIMESTAMP) .build(); CelRuntime.Program program = @@ -845,7 +846,7 @@ public void program_partialMessageTypes() throws Exception { // defined in checked.proto. Because the `Expr` type is referenced within a message // field of the CheckedExpr, it is available for use. .setOptions(CelOptions.current().resolveTypeDependencies(false).build()) - .setContainer(packageName) + .setContainer(CelContainer.ofName(packageName)) .setResultType(StructTypeReference.create(packageName + ".Expr")) .build(); CelRuntime.Program program = cel.createProgram(cel.compile("Expr{}").getAst()); @@ -862,7 +863,7 @@ public void program_partialMessageTypeFailure() { // defined in checked.proto. Because the `ParsedExpr` type is not referenced, it is not // available for use within CEL when deep type resolution is disabled. .setOptions(CelOptions.current().resolveTypeDependencies(false).build()) - .setContainer(packageName) + .setContainer(CelContainer.ofName(packageName)) .setResultType(StructTypeReference.create(packageName + ".ParsedExpr")) .build(); CelValidationException e = @@ -881,7 +882,7 @@ public void program_deepTypeResolution() throws Exception { // defined in checked.proto. Because deep type dependency resolution is enabled, the // `ParsedExpr` may be used within CEL. .setOptions(CelOptions.current().resolveTypeDependencies(true).build()) - .setContainer(packageName) + .setContainer(CelContainer.ofName(packageName)) .setResultType(StructTypeReference.create(packageName + ".ParsedExpr")) .build(); CelRuntime.Program program = cel.createProgram(cel.compile("ParsedExpr{}").getAst()); @@ -895,7 +896,7 @@ public void program_deepTypeResolutionEnabledForRuntime_success() throws Excepti CelCompilerFactory.standardCelCompilerBuilder() .addFileTypes(ParsedExpr.getDescriptor().getFile()) .setResultType(StructTypeReference.create(packageName + ".ParsedExpr")) - .setContainer(packageName) + .setContainer(CelContainer.ofName(packageName)) .build(); CelAbstractSyntaxTree ast = celCompiler.compile("ParsedExpr{}").getAst(); @@ -921,7 +922,7 @@ public void program_deepTypeResolutionDisabledForRuntime_fails() throws Exceptio .addFileTypes(CheckedExpr.getDescriptor().getFile()) .setOptions(CelOptions.current().resolveTypeDependencies(true).build()) .setResultType(StructTypeReference.create(packageName + ".ParsedExpr")) - .setContainer(packageName) + .setContainer(CelContainer.ofName(packageName)) .build(); // 'ParsedExpr' is defined in syntax.proto but the descriptor provided is from 'checked.proto'. @@ -952,7 +953,7 @@ public void program_typeProvider() throws Exception { standardCelBuilderWithMacros() .setTypeProvider( new DescriptorTypeProvider(ImmutableList.of(Timestamp.getDescriptor()))) - .setContainer("google") + .setContainer(CelContainer.ofName("google")) .setResultType(SimpleType.TIMESTAMP) .build(); CelRuntime.Program program = @@ -994,7 +995,8 @@ public void program_enumTypeDirectResolution(boolean resolveTypeDependencies) th .addFileTypes(StandaloneGlobalEnum.getDescriptor().getFile()) .setOptions( CelOptions.current().resolveTypeDependencies(resolveTypeDependencies).build()) - .setContainer("dev.cel.testing.testdata.proto3.StandaloneGlobalEnum") + .setContainer( + CelContainer.ofName("dev.cel.testing.testdata.proto3.StandaloneGlobalEnum")) .setResultType(SimpleType.BOOL) .build(); @@ -1018,7 +1020,7 @@ public void program_enumTypeReferenceResolution(boolean resolveTypeDependencies) CelOptions.current().resolveTypeDependencies(resolveTypeDependencies).build()) .addMessageTypes(Struct.getDescriptor()) .setResultType(StructTypeReference.create("google.protobuf.NullValue")) - .setContainer("google.protobuf") + .setContainer(CelContainer.ofName("google.protobuf")) .build(); // `Value` is defined in `Struct` proto and NullValue is an enum within this `Value` struct. @@ -1036,7 +1038,7 @@ public void program_enumTypeTransitiveResolution() throws Exception { .setOptions(CelOptions.current().resolveTypeDependencies(true).build()) .addMessageTypes(Proto2ExtensionScopedMessage.getDescriptor()) .setResultType(StructTypeReference.create("google.protobuf.NullValue")) - .setContainer("google.protobuf") + .setContainer(CelContainer.ofName("google.protobuf")) .build(); // 'Value' is a struct defined as a dependency of messages_proto2.proto and 'NullValue' is an @@ -1069,7 +1071,7 @@ public void compile_enumTypeTransitiveResolutionFailure() { .setOptions(CelOptions.current().resolveTypeDependencies(false).build()) .addMessageTypes(Proto2ExtensionScopedMessage.getDescriptor()) .setResultType(StructTypeReference.create("google.protobuf.NullValue")) - .setContainer("google.protobuf") + .setContainer(CelContainer.ofName("google.protobuf")) .build(); // 'Value' is a struct defined as a dependency of messages_proto2.proto and 'NullValue' is an @@ -1102,7 +1104,7 @@ public void compile_multipleInstancesOfEnumDescriptor_dedupedByFullName() throws FileDescriptor.buildFrom(enumFileDescriptorProto, new FileDescriptor[] {}); Cel cel = standardCelBuilderWithMacros() - .setContainer("dev.cel.testing.testdata") + .setContainer(CelContainer.ofName("dev.cel.testing.testdata")) .addFileTypes(enumFileDescriptor) .addFileTypes(StandaloneGlobalEnum.getDescriptor().getFile()) .build(); @@ -1340,7 +1342,7 @@ public void programAdvanceEvaluation_unknownsNamespaceSupport() throws Exception .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("com.google.a", SimpleType.BOOL) .addVar("com.google.b", SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1369,7 +1371,7 @@ public void programAdvanceEvaluation_unknownsIterativeEvalExample() throws Excep .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("com.google.a", SimpleType.BOOL) .addVar("com.google.b", SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1448,7 +1450,7 @@ public void programAdvanceEvaluation_argumentMergeErrorPriority() throws Excepti .setResultType( Type.newBuilder().setPrimitive(PrimitiveType.BOOL)))) .build()) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1491,7 +1493,7 @@ public void programAdvanceEvaluation_argumentMergeUnknowns() throws Exception { .setResultType( Type.newBuilder().setPrimitive(PrimitiveType.BOOL)))) .build()) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1518,7 +1520,7 @@ public void programAdvanceEvaluation_mapSelectUnknowns() throws Exception { standardCelBuilderWithMacros() .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("unk", MapType.create(SimpleType.STRING, SimpleType.BOOL)) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1544,7 +1546,7 @@ public void programAdvanceEvaluation_mapIndexUnknowns() throws Exception { standardCelBuilderWithMacros() .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("unk", MapType.create(SimpleType.STRING, SimpleType.BOOL)) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1573,7 +1575,7 @@ public void programAdvanceEvaluation_listIndexUnknowns() throws Exception { standardCelBuilderWithMacros() .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("unk", ListType.create(SimpleType.BOOL)) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1602,7 +1604,7 @@ public void programAdvanceEvaluation_indexOnUnknownContainer() throws Exception standardCelBuilderWithMacros() .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("unk", ListType.create(SimpleType.BOOL)) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1624,7 +1626,7 @@ public void programAdvanceEvaluation_unsupportedIndexIgnored() throws Exception standardCelBuilderWithMacros() .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("unk", MapType.create(SimpleType.STRING, SimpleType.BOOL)) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1661,7 +1663,7 @@ public void programAdvanceEvaluation_listIndexMacroTracking() throws Exception { standardCelBuilderWithMacros() .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("testList", ListType.create(SimpleType.BOOL)) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1694,7 +1696,7 @@ public void programAdvanceEvaluation_mapIndexMacroTracking() throws Exception { standardCelBuilderWithMacros() .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("testMap", MapType.create(SimpleType.STRING, SimpleType.BOOL)) - .setContainer("") + .setContainer(CelContainer.ofName("")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1744,7 +1746,7 @@ public void programAdvanceEvaluation_boolOperatorMergeUnknownPriority() throws E .addVarDeclarations( CelVarDecl.newVarDeclaration("unk", SimpleType.BOOL), CelVarDecl.newVarDeclaration("err", SimpleType.BOOL)) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .addFunctionBindings() .setResultType(SimpleType.BOOL) .build(); @@ -1769,7 +1771,7 @@ public void programAdvanceEvaluation_partialUnknownMapEntryPropagates() throws E ImmutableList.of( CelVarDecl.newVarDeclaration("partialList1", ListType.create(SimpleType.INT)), CelVarDecl.newVarDeclaration("partialList2", ListType.create(SimpleType.INT)))) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .addFunctionBindings() .build(); CelRuntime.Program program = @@ -1800,7 +1802,7 @@ public void programAdvanceEvaluation_partialUnknownListElementPropagates() throw .setOptions(CelOptions.current().enableUnknownTracking(true).build()) .addVar("partialList1", ListType.create(SimpleType.INT)) .addVar("partialList2", ListType.create(SimpleType.INT)) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .addFunctionBindings() .build(); CelRuntime.Program program = @@ -1836,7 +1838,7 @@ public void programAdvanceEvaluation_partialUnknownMessageFieldPropagates() thro StructTypeReference.create("cel.expr.conformance.proto3.TestAllTypes")) .setResultType( StructTypeReference.create("cel.expr.conformance.proto3.NestedTestAllTypes")) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .addFunctionBindings() .build(); Program program = diff --git a/checker/src/test/java/dev/cel/checker/CelProtoExprVisitorTest.java b/checker/src/test/java/dev/cel/checker/CelProtoExprVisitorTest.java index 37e734853..f4b389552 100644 --- a/checker/src/test/java/dev/cel/checker/CelProtoExprVisitorTest.java +++ b/checker/src/test/java/dev/cel/checker/CelProtoExprVisitorTest.java @@ -21,6 +21,7 @@ import dev.cel.expr.Expr; import com.google.auto.value.AutoValue; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.types.SimpleType; import dev.cel.compiler.CelCompiler; import dev.cel.compiler.CelCompilerFactory; @@ -163,7 +164,7 @@ public void visitSelect() throws Exception { CelCompiler celCompiler = CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer(TestAllTypes.getDescriptor().getFullName()) + .setContainer(CelContainer.ofName(TestAllTypes.getDescriptor().getFullName())) .build(); CelAbstractSyntaxTree ast = celCompiler.compile("TestAllTypes{}.single_int64").getAst(); @@ -215,7 +216,7 @@ public void visitCreateStruct() throws Exception { CelCompiler celCompiler = CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer(TestAllTypes.getDescriptor().getFullName()) + .setContainer(CelContainer.ofName(TestAllTypes.getDescriptor().getFullName())) .build(); CelAbstractSyntaxTree ast = celCompiler.compile("TestAllTypes{}").getAst(); diff --git a/codelab/src/main/codelab/solutions/BUILD.bazel b/codelab/src/main/codelab/solutions/BUILD.bazel index 5d3a37e30..eae465fa7 100644 --- a/codelab/src/main/codelab/solutions/BUILD.bazel +++ b/codelab/src/main/codelab/solutions/BUILD.bazel @@ -14,6 +14,7 @@ java_library( "//bundle:cel", "//common:cel_ast", "//common:compiler_common", + "//common:container", "//common:proto_json_adapter", "//common/ast", "//common/navigation", diff --git a/codelab/src/main/codelab/solutions/Exercise6.java b/codelab/src/main/codelab/solutions/Exercise6.java index beb9d27ee..9b6c59949 100644 --- a/codelab/src/main/codelab/solutions/Exercise6.java +++ b/codelab/src/main/codelab/solutions/Exercise6.java @@ -16,6 +16,7 @@ import com.google.rpc.context.AttributeContext.Request; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelValidationException; import dev.cel.common.types.SimpleType; import dev.cel.common.types.StructTypeReference; @@ -44,7 +45,7 @@ final class Exercise6 { CelAbstractSyntaxTree compile(String expression) { CelCompiler celCompiler = CelCompilerFactory.standardCelCompilerBuilder() - .setContainer("google.rpc.context.AttributeContext") + .setContainer(CelContainer.ofName("google.rpc.context.AttributeContext")) .addVar("jwt", SimpleType.DYN) .addVar("now", SimpleType.TIMESTAMP) .addMessageTypes(Request.getDescriptor()) diff --git a/common/src/test/java/dev/cel/common/ast/BUILD.bazel b/common/src/test/java/dev/cel/common/ast/BUILD.bazel index bf241d447..7e2fea525 100644 --- a/common/src/test/java/dev/cel/common/ast/BUILD.bazel +++ b/common/src/test/java/dev/cel/common/ast/BUILD.bazel @@ -14,6 +14,7 @@ java_library( "//:java_truth", "//common:cel_ast", "//common:compiler_common", + "//common:container", "//common:mutable_ast", "//common:mutable_source", "//common:options", diff --git a/common/src/test/java/dev/cel/common/ast/CelExprFormatterTest.java b/common/src/test/java/dev/cel/common/ast/CelExprFormatterTest.java index 8bab0ee5b..56b386ba3 100644 --- a/common/src/test/java/dev/cel/common/ast/CelExprFormatterTest.java +++ b/common/src/test/java/dev/cel/common/ast/CelExprFormatterTest.java @@ -19,6 +19,7 @@ import com.google.testing.junit.testparameterinjector.TestParameter; import com.google.testing.junit.testparameterinjector.TestParameterInjector; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelOptions; import dev.cel.common.CelOverloadDecl; @@ -174,7 +175,7 @@ public void list() throws Exception { public void struct() throws Exception { CelCompiler celCompiler = CelCompilerFactory.standardCelCompilerBuilder() - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .addMessageTypes(TestAllTypes.getDescriptor()) .addLibraries(CelOptionalLibrary.INSTANCE) .build(); @@ -224,7 +225,7 @@ public void struct() throws Exception { public void map() throws Exception { CelCompiler celCompiler = CelCompilerFactory.standardCelCompilerBuilder() - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .addMessageTypes(TestAllTypes.getDescriptor()) .addLibraries(CelOptionalLibrary.INSTANCE) .build(); diff --git a/common/src/test/java/dev/cel/common/ast/CelExprVisitorTest.java b/common/src/test/java/dev/cel/common/ast/CelExprVisitorTest.java index 9365eb61c..1610acb52 100644 --- a/common/src/test/java/dev/cel/common/ast/CelExprVisitorTest.java +++ b/common/src/test/java/dev/cel/common/ast/CelExprVisitorTest.java @@ -20,6 +20,7 @@ import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelOptions; import dev.cel.common.ast.CelExpr.CelCall; import dev.cel.common.ast.CelExpr.CelComprehension; @@ -195,7 +196,7 @@ public void visitSelect() throws Exception { CelCompiler celCompiler = CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer(TestAllTypes.getDescriptor().getFullName()) + .setContainer(CelContainer.ofName(TestAllTypes.getDescriptor().getFullName())) .build(); CelAbstractSyntaxTree ast = celCompiler.compile("TestAllTypes{}.single_int64").getAst(); @@ -246,9 +247,8 @@ public void visitCall() throws Exception { public void visitStruct_fieldkey() throws Exception { CelCompiler celCompiler = CelCompilerFactory.standardCelCompilerBuilder() - .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer(TestAllTypes.getDescriptor().getFullName()) + .setContainer(CelContainer.ofName(TestAllTypes.getDescriptor().getFullName())) .build(); CelAbstractSyntaxTree ast = celCompiler.compile("TestAllTypes{single_int64: 1}").getAst(); diff --git a/common/src/test/java/dev/cel/common/navigation/BUILD.bazel b/common/src/test/java/dev/cel/common/navigation/BUILD.bazel index 2a0fa4bfb..172e8f5ea 100644 --- a/common/src/test/java/dev/cel/common/navigation/BUILD.bazel +++ b/common/src/test/java/dev/cel/common/navigation/BUILD.bazel @@ -11,6 +11,7 @@ java_library( "//:java_truth", "//common:cel_ast", "//common:compiler_common", + "//common:container", "//common:mutable_ast", "//common:options", "//common/ast", diff --git a/common/src/test/java/dev/cel/common/navigation/CelNavigableExprVisitorTest.java b/common/src/test/java/dev/cel/common/navigation/CelNavigableExprVisitorTest.java index 0a4ba42bf..11bf79f27 100644 --- a/common/src/test/java/dev/cel/common/navigation/CelNavigableExprVisitorTest.java +++ b/common/src/test/java/dev/cel/common/navigation/CelNavigableExprVisitorTest.java @@ -26,6 +26,7 @@ import com.google.testing.junit.testparameterinjector.TestParameterInjector; import com.google.testing.junit.testparameterinjector.TestParameters; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelOptions; import dev.cel.common.ast.CelConstant; import dev.cel.common.ast.CelExpr; @@ -580,7 +581,7 @@ public void messageConstruction_allNodesReturned() throws Exception { CelCompiler compiler = CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .build(); CelAbstractSyntaxTree ast = compiler.compile("TestAllTypes{single_int64: 1}").getAst(); CelNavigableAst navigableAst = CelNavigableAst.fromAst(ast); @@ -603,7 +604,7 @@ public void messageConstruction_filterStruct_allNodesReturned() throws Exception CelCompiler compiler = CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .build(); CelAbstractSyntaxTree ast = compiler.compile("TestAllTypes{single_int64: 1}").getAst(); CelNavigableAst navigableAst = CelNavigableAst.fromAst(ast); @@ -631,7 +632,7 @@ public void messageConstruction_preOrder_heightSet() throws Exception { CelCompiler compiler = CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .build(); CelAbstractSyntaxTree ast = compiler.compile("TestAllTypes{single_int64: 1}").getAst(); CelNavigableAst navigableAst = CelNavigableAst.fromAst(ast); @@ -651,7 +652,7 @@ public void messageConstruction_postOrder_heightSet() throws Exception { CelCompiler compiler = CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .build(); CelAbstractSyntaxTree ast = compiler.compile("TestAllTypes{single_int64: 1}").getAst(); CelNavigableAst navigableAst = CelNavigableAst.fromAst(ast); @@ -672,7 +673,7 @@ public void messageConstruction_maxIdsSet(@TestParameter TraversalOrder traversa CelCompiler compiler = CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .build(); CelAbstractSyntaxTree ast = compiler.compile("TestAllTypes{single_int64: 1}").getAst(); CelNavigableAst navigableAst = CelNavigableAst.fromAst(ast); diff --git a/conformance/src/test/java/dev/cel/conformance/BUILD.bazel b/conformance/src/test/java/dev/cel/conformance/BUILD.bazel index 868e97af9..28bd42d85 100644 --- a/conformance/src/test/java/dev/cel/conformance/BUILD.bazel +++ b/conformance/src/test/java/dev/cel/conformance/BUILD.bazel @@ -18,6 +18,7 @@ java_library( "//:java_truth", "//checker:checker_builder", "//common:compiler_common", + "//common:container", "//common:options", "//common/types:cel_proto_types", "//compiler", diff --git a/conformance/src/test/java/dev/cel/conformance/ConformanceTest.java b/conformance/src/test/java/dev/cel/conformance/ConformanceTest.java index 11c151d4a..233c64866 100644 --- a/conformance/src/test/java/dev/cel/conformance/ConformanceTest.java +++ b/conformance/src/test/java/dev/cel/conformance/ConformanceTest.java @@ -30,6 +30,7 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; import dev.cel.checker.CelChecker; +import dev.cel.common.CelContainer; import dev.cel.common.CelOptions; import dev.cel.common.CelValidationResult; import dev.cel.common.types.CelProtoTypes; @@ -100,7 +101,7 @@ private static CelChecker getChecker(SimpleTest test) throws Exception { } return CelCompilerFactory.standardCelCheckerBuilder() .setOptions(OPTIONS) - .setContainer(test.getContainer()) + .setContainer(CelContainer.ofName(test.getContainer())) .addDeclarations(decls.build()) .addFileTypes(dev.cel.expr.conformance.proto2.TestAllTypesExtensions.getDescriptor()) .addLibraries( diff --git a/extensions/src/test/java/dev/cel/extensions/BUILD.bazel b/extensions/src/test/java/dev/cel/extensions/BUILD.bazel index 0fdcbf111..207444518 100644 --- a/extensions/src/test/java/dev/cel/extensions/BUILD.bazel +++ b/extensions/src/test/java/dev/cel/extensions/BUILD.bazel @@ -12,6 +12,7 @@ java_library( "//bundle:cel", "//common:cel_ast", "//common:compiler_common", + "//common:container", "//common:options", "//common/internal:proto_time_utils", "//common/types", diff --git a/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java b/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java index 03db44c75..fb9bdec36 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java @@ -30,6 +30,7 @@ import dev.cel.bundle.CelBuilder; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelOptions; import dev.cel.common.CelOverloadDecl; @@ -96,7 +97,7 @@ private static CelBuilder newCelBuilder() { return CelFactory.standardCelBuilder() .setOptions(CelOptions.current().enableTimestampEpoch(true).build()) .setStandardMacros(CelStandardMacro.STANDARD_MACROS) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .addMessageTypes(TestAllTypes.getDescriptor()) .addRuntimeLibraries(CelOptionalLibrary.INSTANCE) .addCompilerLibraries(CelOptionalLibrary.INSTANCE); diff --git a/extensions/src/test/java/dev/cel/extensions/CelProtoExtensionsTest.java b/extensions/src/test/java/dev/cel/extensions/CelProtoExtensionsTest.java index b182bfbd2..5587eff84 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelProtoExtensionsTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelProtoExtensionsTest.java @@ -28,6 +28,7 @@ import dev.cel.bundle.Cel; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelOverloadDecl; import dev.cel.common.CelValidationException; @@ -55,7 +56,7 @@ public final class CelProtoExtensionsTest { .setStandardMacros(CelStandardMacro.STANDARD_MACROS) .addFileTypes(TestAllTypesExtensions.getDescriptor()) .addVar("msg", StructTypeReference.create("cel.expr.conformance.proto2.TestAllTypes")) - .setContainer("cel.expr.conformance.proto2") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto2")) .build(); private static final CelRuntime CEL_RUNTIME = diff --git a/extensions/src/test/java/dev/cel/extensions/CelSetsExtensionsTest.java b/extensions/src/test/java/dev/cel/extensions/CelSetsExtensionsTest.java index 23d3c9efd..18712387c 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelSetsExtensionsTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelSetsExtensionsTest.java @@ -22,6 +22,7 @@ import com.google.testing.junit.testparameterinjector.TestParameterInjector; import com.google.testing.junit.testparameterinjector.TestParameters; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelOptions; import dev.cel.common.CelOverloadDecl; @@ -47,7 +48,7 @@ public final class CelSetsExtensionsTest { CelCompilerFactory.standardCelCompilerBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) .setOptions(CEL_OPTIONS) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .addLibraries(CelExtensions.sets(CEL_OPTIONS)) .addVar("list", ListType.create(SimpleType.INT)) .addVar("subList", ListType.create(SimpleType.INT)) diff --git a/optimizer/src/test/java/dev/cel/optimizer/AstMutatorTest.java b/optimizer/src/test/java/dev/cel/optimizer/AstMutatorTest.java index da8b53fc3..91995653e 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/AstMutatorTest.java +++ b/optimizer/src/test/java/dev/cel/optimizer/AstMutatorTest.java @@ -24,6 +24,7 @@ import dev.cel.bundle.Cel; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelMutableAst; import dev.cel.common.CelOptions; @@ -64,7 +65,7 @@ public class AstMutatorTest { .addMessageTypes(TestAllTypes.getDescriptor()) .addCompilerLibraries(CelOptionalLibrary.INSTANCE, CelExtensions.bindings()) .addRuntimeLibraries(CelOptionalLibrary.INSTANCE) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .addVar("msg", StructTypeReference.create(TestAllTypes.getDescriptor().getFullName())) .addVar("x", SimpleType.INT) .build(); diff --git a/optimizer/src/test/java/dev/cel/optimizer/BUILD.bazel b/optimizer/src/test/java/dev/cel/optimizer/BUILD.bazel index 4c8e4bd48..d81fba29f 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/BUILD.bazel +++ b/optimizer/src/test/java/dev/cel/optimizer/BUILD.bazel @@ -13,6 +13,7 @@ java_library( "//common:cel_ast", "//common:cel_source", "//common:compiler_common", + "//common:container", "//common:mutable_ast", "//common:options", "//common/ast", diff --git a/optimizer/src/test/java/dev/cel/optimizer/optimizers/BUILD.bazel b/optimizer/src/test/java/dev/cel/optimizer/optimizers/BUILD.bazel index a65404d26..8def5de7a 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/optimizers/BUILD.bazel +++ b/optimizer/src/test/java/dev/cel/optimizer/optimizers/BUILD.bazel @@ -14,6 +14,7 @@ java_library( "//common:cel_ast", "//common:cel_source", "//common:compiler_common", + "//common:container", "//common:mutable_ast", "//common:options", "//common/ast", diff --git a/optimizer/src/test/java/dev/cel/optimizer/optimizers/ConstantFoldingOptimizerTest.java b/optimizer/src/test/java/dev/cel/optimizer/optimizers/ConstantFoldingOptimizerTest.java index 16b05da75..d5d204834 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/optimizers/ConstantFoldingOptimizerTest.java +++ b/optimizer/src/test/java/dev/cel/optimizer/optimizers/ConstantFoldingOptimizerTest.java @@ -23,6 +23,7 @@ import dev.cel.bundle.Cel; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelOptions; import dev.cel.common.CelOverloadDecl; @@ -58,7 +59,7 @@ public class ConstantFoldingOptimizerTest { .addFunctionBindings( CelFunctionBinding.from("get_true_overload", ImmutableList.of(), unused -> true)) .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .addCompilerLibraries( CelExtensions.bindings(), CelOptionalLibrary.INSTANCE, diff --git a/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerBaselineTest.java b/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerBaselineTest.java index 1cfa87362..2d0e39177 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerBaselineTest.java +++ b/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerBaselineTest.java @@ -26,6 +26,7 @@ import dev.cel.bundle.CelBuilder; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelOptions; import dev.cel.common.types.OptionalType; @@ -319,7 +320,7 @@ private void runLargeTestCases(CelOptimizer celOptimizer) throws Exception { private static CelBuilder newCelBuilder() { return CelFactory.standardCelBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .setStandardMacros(CelStandardMacro.STANDARD_MACROS) .setOptions( CelOptions.current().enableTimestampEpoch(true).populateMacroCalls(true).build()) diff --git a/runtime/src/test/java/dev/cel/runtime/BUILD.bazel b/runtime/src/test/java/dev/cel/runtime/BUILD.bazel index 6e9685149..1374fd0ba 100644 --- a/runtime/src/test/java/dev/cel/runtime/BUILD.bazel +++ b/runtime/src/test/java/dev/cel/runtime/BUILD.bazel @@ -32,6 +32,7 @@ java_library( "//common:cel_exception", "//common:cel_source", "//common:compiler_common", + "//common:container", "//common:error_codes", "//common:options", "//common:proto_v1alpha1_ast", diff --git a/runtime/src/test/java/dev/cel/runtime/CelLiteRuntimeTest.java b/runtime/src/test/java/dev/cel/runtime/CelLiteRuntimeTest.java index 38f37404c..e71ae718c 100644 --- a/runtime/src/test/java/dev/cel/runtime/CelLiteRuntimeTest.java +++ b/runtime/src/test/java/dev/cel/runtime/CelLiteRuntimeTest.java @@ -41,6 +41,7 @@ import com.google.testing.junit.testparameterinjector.TestParameterInjector; import com.google.testing.junit.testparameterinjector.TestParameters; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelFunctionDecl; import dev.cel.common.CelOverloadDecl; import dev.cel.common.internal.ProtoTimeUtils; @@ -78,7 +79,7 @@ public class CelLiteRuntimeTest { .addVar("msg", StructTypeReference.create(TestAllTypes.getDescriptor().getFullName())) .addVar("content", SimpleType.DYN) .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .build(); private static final CelLiteRuntime CEL_RUNTIME = diff --git a/runtime/src/test/java/dev/cel/runtime/CelRuntimeTest.java b/runtime/src/test/java/dev/cel/runtime/CelRuntimeTest.java index 13199cbf3..f5487305c 100644 --- a/runtime/src/test/java/dev/cel/runtime/CelRuntimeTest.java +++ b/runtime/src/test/java/dev/cel/runtime/CelRuntimeTest.java @@ -34,6 +34,7 @@ import dev.cel.bundle.Cel; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelOptions; import dev.cel.common.CelProtoV1Alpha1AbstractSyntaxTree; import dev.cel.common.CelSource; @@ -279,7 +280,7 @@ public void trace_select() throws Exception { Cel cel = CelFactory.standardCelBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .build(); CelAbstractSyntaxTree ast = cel.compile("TestAllTypes{single_int64: 3}.single_int64").getAst(); @@ -298,7 +299,7 @@ public void trace_struct() throws Exception { Cel cel = CelFactory.standardCelBuilder() .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer("cel.expr.conformance.proto3") + .setContainer(CelContainer.ofName("cel.expr.conformance.proto3")) .build(); CelAbstractSyntaxTree ast = cel.compile("TestAllTypes{}").getAst(); diff --git a/runtime/src/test/java/dev/cel/runtime/DescriptorTypeResolverTest.java b/runtime/src/test/java/dev/cel/runtime/DescriptorTypeResolverTest.java index bce1f53e3..878576f94 100644 --- a/runtime/src/test/java/dev/cel/runtime/DescriptorTypeResolverTest.java +++ b/runtime/src/test/java/dev/cel/runtime/DescriptorTypeResolverTest.java @@ -23,6 +23,7 @@ import dev.cel.bundle.Cel; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelOptions; import dev.cel.common.types.OpaqueType; import dev.cel.common.types.OptionalType; @@ -48,7 +49,7 @@ public class DescriptorTypeResolverTest { .addCompilerLibraries(CelOptionalLibrary.INSTANCE) .addRuntimeLibraries(CelOptionalLibrary.INSTANCE) .addMessageTypes(TestAllTypes.getDescriptor()) - .setContainer(TestAllTypes.getDescriptor().getFullName()) + .setContainer(CelContainer.ofName(TestAllTypes.getDescriptor().getFullName())) .build(); @SuppressWarnings("ImmutableEnumChecker") // Test only diff --git a/runtime/src/test/java/dev/cel/runtime/async/BUILD.bazel b/runtime/src/test/java/dev/cel/runtime/async/BUILD.bazel index 49b5dfca0..99e9fd59c 100644 --- a/runtime/src/test/java/dev/cel/runtime/async/BUILD.bazel +++ b/runtime/src/test/java/dev/cel/runtime/async/BUILD.bazel @@ -13,6 +13,7 @@ java_library( # "//java/com/google/testing/testsize:annotations", "//bundle:cel", "//common:cel_ast", + "//common:container", "//common:options", "//common/testing", "//common/types", diff --git a/runtime/src/test/java/dev/cel/runtime/async/CelAsyncRuntimeImplTest.java b/runtime/src/test/java/dev/cel/runtime/async/CelAsyncRuntimeImplTest.java index 2597dc97f..ab2ba2004 100644 --- a/runtime/src/test/java/dev/cel/runtime/async/CelAsyncRuntimeImplTest.java +++ b/runtime/src/test/java/dev/cel/runtime/async/CelAsyncRuntimeImplTest.java @@ -31,6 +31,7 @@ import dev.cel.bundle.Cel; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; +import dev.cel.common.CelContainer; import dev.cel.common.CelOptions; import dev.cel.common.testing.RepeatedTestProvider; import dev.cel.common.types.SimpleType; @@ -68,7 +69,7 @@ public void asyncProgram_basicUnknownResolution() throws Exception { .addVar("com.google.var2", SimpleType.STRING) .addVar("com.google.var3", SimpleType.STRING) .setResultType(SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .build(); CelAsyncRuntime asyncRuntime = @@ -87,14 +88,14 @@ public void asyncProgram_basicUnknownResolution() throws Exception { AsyncProgram program = asyncRuntime.createProgram(ast); // Act - ListenableFuture future = program.evaluateToCompletion( - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), resolveName), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), resolveName), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), resolveName) - ); + ListenableFuture future = + program.evaluateToCompletion( + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), resolveName), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), resolveName), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), resolveName)); Object result = future.get(2, SECONDS); // Assert @@ -117,7 +118,7 @@ public void asyncProgram_basicAsyncResolver() throws Exception { .addVar("com.google.var2", SimpleType.STRING) .addVar("com.google.var3", SimpleType.STRING) .setResultType(SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .build(); CelAsyncRuntime asyncRuntime = @@ -169,7 +170,7 @@ public void asyncProgram_honorsCancellation() throws Exception { .addVar("com.google.var2", SimpleType.STRING) .addVar("com.google.var3", SimpleType.STRING) .setResultType(SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .build(); CelAsyncRuntime asyncRuntime = @@ -184,17 +185,17 @@ public void asyncProgram_honorsCancellation() throws Exception { AsyncProgram program = asyncRuntime.createProgram(ast); // Act - ListenableFuture future = program.evaluateToCompletion( - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), - CelUnknownAttributeValueResolver.fromAsyncResolver((attr) -> var1)), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), - CelUnknownAttributeValueResolver.fromAsyncResolver((attr) -> var2)), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), - CelUnknownAttributeValueResolver.fromAsyncResolver((attr) -> var3)) - ); + ListenableFuture future = + program.evaluateToCompletion( + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), + CelUnknownAttributeValueResolver.fromAsyncResolver((attr) -> var1)), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), + CelUnknownAttributeValueResolver.fromAsyncResolver((attr) -> var2)), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), + CelUnknownAttributeValueResolver.fromAsyncResolver((attr) -> var3))); var1.set("first"); future.cancel(true); assertThrows(CancellationException.class, () -> future.get(1, SECONDS)); @@ -220,7 +221,7 @@ public void asyncProgram_concurrency( .addVar("com.google.var2", SimpleType.STRING) .addVar("com.google.var3", SimpleType.STRING) .setResultType(SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .build(); ResolverFactory resolverFactory = @@ -243,17 +244,17 @@ public void asyncProgram_concurrency( AsyncProgram program = asyncRuntime.createProgram(ast); // Act - ListenableFuture future = program.evaluateToCompletion( - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), - resolverFactory.get("first")), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), - resolverFactory.get("second")), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), - resolverFactory.get("third")) - ); + ListenableFuture future = + program.evaluateToCompletion( + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), + resolverFactory.get("first")), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), + resolverFactory.get("second")), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), + resolverFactory.get("third"))); // Total wait is 2 times the worker delay. This is a little conservative for the size of the // threadpool executor above, but should prevent flakes. @@ -277,7 +278,7 @@ public void asyncProgram_elementResolver() throws Exception { .setElemType(Type.newBuilder().setPrimitive(PrimitiveType.STRING))) .build()) .setResultType(SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .build(); CelUnknownAttributeValueResolver resolver = @@ -296,14 +297,14 @@ public void asyncProgram_elementResolver() throws Exception { AsyncProgram program = asyncRuntime.createProgram(ast); // Act - ListenableFuture future = program.evaluateToCompletion( - CelResolvableAttributePattern.of( - CelAttributeParser.parsePattern("com.google.listVar[0]"), resolver), - CelResolvableAttributePattern.of( - CelAttributeParser.parsePattern("com.google.listVar[1]"), resolver), - CelResolvableAttributePattern.of( - CelAttributeParser.parsePattern("com.google.listVar[2]"), resolver) - ); + ListenableFuture future = + program.evaluateToCompletion( + CelResolvableAttributePattern.of( + CelAttributeParser.parsePattern("com.google.listVar[0]"), resolver), + CelResolvableAttributePattern.of( + CelAttributeParser.parsePattern("com.google.listVar[1]"), resolver), + CelResolvableAttributePattern.of( + CelAttributeParser.parsePattern("com.google.listVar[2]"), resolver)); Object result = future.get(1, SECONDS); // Assert @@ -322,7 +323,7 @@ public void asyncProgram_thrownExceptionPropagatesImmediately() throws Exception .addVar("com.google.var2", SimpleType.STRING) .addVar("com.google.var3", SimpleType.STRING) .setResultType(SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .build(); CelUnknownAttributeValueResolver resolveName = @@ -348,17 +349,18 @@ public void asyncProgram_thrownExceptionPropagatesImmediately() throws Exception AsyncProgram program = asyncRuntime.createProgram(ast); // Act - ListenableFuture future = program.evaluateToCompletion( - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), resolveName), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), + ListenableFuture future = + program.evaluateToCompletion( + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), resolveName), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), CelUnknownAttributeValueResolver.fromResolver( (attr) -> { throw new IllegalArgumentException("example_var2"); })), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), resolveName)); + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), resolveName)); // Assert ExecutionException e = assertThrows(ExecutionException.class, () -> future.get(2, SECONDS)); @@ -377,7 +379,7 @@ public void asyncProgram_returnedExceptionPropagatesToEvaluator() throws Excepti .addVar("com.google.var2", SimpleType.STRING) .addVar("com.google.var3", SimpleType.STRING) .setResultType(SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .build(); CelUnknownAttributeValueResolver resolveName = @@ -403,16 +405,16 @@ public void asyncProgram_returnedExceptionPropagatesToEvaluator() throws Excepti AsyncProgram program = asyncRuntime.createProgram(ast); // Act - ListenableFuture future = program.evaluateToCompletion( - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), resolveName), - CelResolvableAttributePattern.of( + ListenableFuture future = + program.evaluateToCompletion( + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), resolveName), + CelResolvableAttributePattern.of( CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), CelUnknownAttributeValueResolver.fromResolver( (attr) -> new IllegalStateException("example_var2"))), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), resolveName) - ); + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), resolveName)); // Assert ExecutionException e = assertThrows(ExecutionException.class, () -> future.get(2, SECONDS)); @@ -432,7 +434,7 @@ public void asyncProgram_returnedExceptionPropagatesToEvaluatorIsPruneable() thr .addVar("com.google.var2", SimpleType.STRING) .addVar("com.google.var3", SimpleType.STRING) .setResultType(SimpleType.BOOL) - .setContainer("com.google") + .setContainer(CelContainer.ofName("com.google")) .build(); CelUnknownAttributeValueResolver resolveName = @@ -455,16 +457,16 @@ public void asyncProgram_returnedExceptionPropagatesToEvaluatorIsPruneable() thr AsyncProgram program = asyncRuntime.createProgram(ast); // Act - ListenableFuture future = program.evaluateToCompletion( - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), resolveName), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), - CelUnknownAttributeValueResolver.fromResolver( - (attr) -> new IllegalStateException("example"))), - CelResolvableAttributePattern.of( - CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), resolveName) - ); + ListenableFuture future = + program.evaluateToCompletion( + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var1"), resolveName), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var2"), + CelUnknownAttributeValueResolver.fromResolver( + (attr) -> new IllegalStateException("example"))), + CelResolvableAttributePattern.of( + CelAttributePattern.fromQualifiedIdentifier("com.google.var3"), resolveName)); Object result = future.get(2, SECONDS); // Assert