diff --git a/bundle/src/main/java/dev/cel/bundle/BUILD.bazel b/bundle/src/main/java/dev/cel/bundle/BUILD.bazel index 32c9fe9d1..c83d70942 100644 --- a/bundle/src/main/java/dev/cel/bundle/BUILD.bazel +++ b/bundle/src/main/java/dev/cel/bundle/BUILD.bazel @@ -39,7 +39,6 @@ java_library( "//parser:macro", "//parser:parser_builder", "//runtime", - "//runtime:function_binding", "@cel_spec//proto/cel/expr:checked_java_proto", "@maven//:com_google_code_findbugs_annotations", "@maven//:com_google_errorprone_error_prone_annotations", diff --git a/bundle/src/main/java/dev/cel/bundle/CelBuilder.java b/bundle/src/main/java/dev/cel/bundle/CelBuilder.java index 271cb2912..eb54c2ff6 100644 --- a/bundle/src/main/java/dev/cel/bundle/CelBuilder.java +++ b/bundle/src/main/java/dev/cel/bundle/CelBuilder.java @@ -33,7 +33,7 @@ import dev.cel.compiler.CelCompilerLibrary; import dev.cel.parser.CelMacro; import dev.cel.parser.CelStandardMacro; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime; import dev.cel.runtime.CelRuntimeLibrary; import java.util.function.Function; @@ -144,20 +144,20 @@ public interface CelBuilder { CelBuilder addProtoTypeMasks(Iterable typeMasks); /** - * Add one or more {@link CelFunctionBinding} objects to the CEL runtime. + * Add one or more {@link CelRuntime.CelFunctionBinding} objects to the CEL runtime. * *

Functions with duplicate overload ids will be replaced in favor of the new overload. */ @CanIgnoreReturnValue - CelBuilder addFunctionBindings(CelFunctionBinding... bindings); + CelBuilder addFunctionBindings(CelRuntime.CelFunctionBinding... bindings); /** - * Bind a collection of {@link CelFunctionBinding} objects to the runtime. + * Bind a collection of {@link CelRuntime.CelFunctionBinding} objects to the runtime. * *

Functions with duplicate overload ids will be replaced in favor of the new overload. */ @CanIgnoreReturnValue - CelBuilder addFunctionBindings(Iterable bindings); + CelBuilder addFunctionBindings(Iterable bindings); /** Set the expected {@code resultType} for the type-checked expression. */ @CanIgnoreReturnValue diff --git a/bundle/src/main/java/dev/cel/bundle/CelImpl.java b/bundle/src/main/java/dev/cel/bundle/CelImpl.java index ef9834098..616a20e83 100644 --- a/bundle/src/main/java/dev/cel/bundle/CelImpl.java +++ b/bundle/src/main/java/dev/cel/bundle/CelImpl.java @@ -255,13 +255,13 @@ public CelBuilder addProtoTypeMasks(Iterable typeMasks) { } @Override - public CelBuilder addFunctionBindings(dev.cel.runtime.CelFunctionBinding... bindings) { + public CelBuilder addFunctionBindings(CelRuntime.CelFunctionBinding... bindings) { runtimeBuilder.addFunctionBindings(bindings); return this; } @Override - public CelBuilder addFunctionBindings(Iterable bindings) { + public CelBuilder addFunctionBindings(Iterable bindings) { runtimeBuilder.addFunctionBindings(bindings); return this; } diff --git a/bundle/src/test/java/dev/cel/bundle/BUILD.bazel b/bundle/src/test/java/dev/cel/bundle/BUILD.bazel index b9afb5405..e9a94635f 100644 --- a/bundle/src/test/java/dev/cel/bundle/BUILD.bazel +++ b/bundle/src/test/java/dev/cel/bundle/BUILD.bazel @@ -43,7 +43,6 @@ java_library( "//runtime", "//runtime:evaluation_exception_builder", "//runtime:evaluation_listener", - "//runtime:function_binding", "//runtime:unknown_attributes", "@cel_spec//proto/cel/expr:checked_java_proto", "@cel_spec//proto/cel/expr:syntax_java_proto", diff --git a/bundle/src/test/java/dev/cel/bundle/CelEnvironmentYamlParserTest.java b/bundle/src/test/java/dev/cel/bundle/CelEnvironmentYamlParserTest.java index 34e1e2f6b..20520506f 100644 --- a/bundle/src/test/java/dev/cel/bundle/CelEnvironmentYamlParserTest.java +++ b/bundle/src/test/java/dev/cel/bundle/CelEnvironmentYamlParserTest.java @@ -38,7 +38,7 @@ import dev.cel.parser.CelUnparserFactory; import dev.cel.runtime.CelEvaluationListener; import dev.cel.runtime.CelLateFunctionBindings; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import java.io.IOException; import java.net.URL; import java.util.Optional; diff --git a/bundle/src/test/java/dev/cel/bundle/CelImplTest.java b/bundle/src/test/java/dev/cel/bundle/CelImplTest.java index 0efe75cd5..2b4132c15 100644 --- a/bundle/src/test/java/dev/cel/bundle/CelImplTest.java +++ b/bundle/src/test/java/dev/cel/bundle/CelImplTest.java @@ -95,8 +95,8 @@ import dev.cel.runtime.CelAttributePattern; import dev.cel.runtime.CelEvaluationException; import dev.cel.runtime.CelEvaluationExceptionBuilder; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntime.Program; import dev.cel.runtime.CelRuntimeFactory; import dev.cel.runtime.CelRuntimeLegacyImpl; diff --git a/codelab/src/main/codelab/solutions/BUILD.bazel b/codelab/src/main/codelab/solutions/BUILD.bazel index c94072fb3..458fbe0b4 100644 --- a/codelab/src/main/codelab/solutions/BUILD.bazel +++ b/codelab/src/main/codelab/solutions/BUILD.bazel @@ -28,7 +28,6 @@ java_library( "//optimizer/optimizers:constant_folding", "//parser:macro", "//runtime", - "//runtime:function_binding", "//validator", "//validator:ast_validator", "//validator:validator_builder", diff --git a/codelab/src/main/codelab/solutions/Exercise4.java b/codelab/src/main/codelab/solutions/Exercise4.java index b3cc82a24..33366a1e4 100644 --- a/codelab/src/main/codelab/solutions/Exercise4.java +++ b/codelab/src/main/codelab/solutions/Exercise4.java @@ -28,8 +28,8 @@ import dev.cel.compiler.CelCompiler; import dev.cel.compiler.CelCompilerFactory; import dev.cel.runtime.CelEvaluationException; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeFactory; import java.util.Map; diff --git a/compiler/src/test/java/dev/cel/compiler/tools/BUILD.bazel b/compiler/src/test/java/dev/cel/compiler/tools/BUILD.bazel index 1e0476a0b..9ad4243ef 100644 --- a/compiler/src/test/java/dev/cel/compiler/tools/BUILD.bazel +++ b/compiler/src/test/java/dev/cel/compiler/tools/BUILD.bazel @@ -61,7 +61,6 @@ java_library( "//extensions", "//extensions:optional_library", "//runtime", - "//runtime:function_binding", "@cel_spec//proto/cel/expr:checked_java_proto", "@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto", "@maven//:com_google_guava_guava", diff --git a/compiler/src/test/java/dev/cel/compiler/tools/CelCompilerToolTest.java b/compiler/src/test/java/dev/cel/compiler/tools/CelCompilerToolTest.java index 9efc4f807..92233f135 100644 --- a/compiler/src/test/java/dev/cel/compiler/tools/CelCompilerToolTest.java +++ b/compiler/src/test/java/dev/cel/compiler/tools/CelCompilerToolTest.java @@ -28,7 +28,7 @@ import dev.cel.extensions.CelExtensions; import dev.cel.extensions.CelOptionalLibrary; import dev.cel.runtime.CelRuntime; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeFactory; import java.net.URL; import java.util.List; diff --git a/extensions/src/main/java/dev/cel/extensions/BUILD.bazel b/extensions/src/main/java/dev/cel/extensions/BUILD.bazel index 0f93bc084..4400b0df0 100644 --- a/extensions/src/main/java/dev/cel/extensions/BUILD.bazel +++ b/extensions/src/main/java/dev/cel/extensions/BUILD.bazel @@ -41,7 +41,6 @@ java_library( "//compiler:compiler_builder", "//runtime", "//runtime:evaluation_exception_builder", - "//runtime:function_binding", "@maven//:com_google_errorprone_error_prone_annotations", "@maven//:com_google_guava_guava", ], @@ -78,7 +77,6 @@ java_library( "//parser:macro", "//parser:parser_builder", "//runtime", - "//runtime:function_binding", "@maven//:com_google_errorprone_error_prone_annotations", "@maven//:com_google_guava_guava", ], @@ -107,7 +105,6 @@ java_library( "//common/types", "//compiler:compiler_builder", "//runtime", - "//runtime:function_binding", "@maven//:com_google_errorprone_error_prone_annotations", "@maven//:com_google_guava_guava", "@maven//:com_google_protobuf_protobuf_java", @@ -131,7 +128,6 @@ java_library( "//parser:operator", "//parser:parser_builder", "//runtime", - "//runtime:function_binding", "@maven//:com_google_guava_guava", "@maven//:com_google_protobuf_protobuf_java", ], @@ -151,7 +147,6 @@ java_library( "//common/types", "//compiler:compiler_builder", "//runtime", - "//runtime:function_binding", "//runtime:proto_message_runtime_equality", "@maven//:com_google_errorprone_error_prone_annotations", "@maven//:com_google_guava_guava", @@ -169,7 +164,6 @@ java_library( "//common/types", "//compiler:compiler_builder", "//runtime", - "//runtime:function_binding", "@maven//:com_google_guava_guava", ], ) diff --git a/extensions/src/main/java/dev/cel/extensions/CelEncoderExtensions.java b/extensions/src/main/java/dev/cel/extensions/CelEncoderExtensions.java index 9ba2de6ed..bc882aa0e 100644 --- a/extensions/src/main/java/dev/cel/extensions/CelEncoderExtensions.java +++ b/extensions/src/main/java/dev/cel/extensions/CelEncoderExtensions.java @@ -22,7 +22,7 @@ import dev.cel.common.CelOverloadDecl; import dev.cel.common.types.SimpleType; import dev.cel.compiler.CelCompilerLibrary; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime; import dev.cel.runtime.CelRuntimeBuilder; import dev.cel.runtime.CelRuntimeLibrary; import java.util.Base64; @@ -45,7 +45,7 @@ enum Function { CelOverloadDecl.newGlobalOverload( "base64_decode_string", SimpleType.BYTES, SimpleType.STRING)), ImmutableSet.of( - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "base64_decode_string", String.class, str -> ByteString.copyFrom(BASE64_DECODER.decode(str))))), @@ -55,20 +55,22 @@ enum Function { CelOverloadDecl.newGlobalOverload( "base64_encode_bytes", SimpleType.STRING, SimpleType.BYTES)), ImmutableSet.of( - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "base64_encode_bytes", ByteString.class, bytes -> BASE64_ENCODER.encodeToString(bytes.toByteArray())))), ; private final CelFunctionDecl functionDecl; - private final ImmutableSet functionBindings; + private final ImmutableSet functionBindings; String getFunction() { return functionDecl.name(); } - Function(CelFunctionDecl functionDecl, ImmutableSet functionBindings) { + Function( + CelFunctionDecl functionDecl, + ImmutableSet functionBindings) { this.functionDecl = functionDecl; this.functionBindings = functionBindings; } diff --git a/extensions/src/main/java/dev/cel/extensions/CelListsExtensions.java b/extensions/src/main/java/dev/cel/extensions/CelListsExtensions.java index bbee2183e..55b5c723e 100644 --- a/extensions/src/main/java/dev/cel/extensions/CelListsExtensions.java +++ b/extensions/src/main/java/dev/cel/extensions/CelListsExtensions.java @@ -24,7 +24,8 @@ import dev.cel.common.types.SimpleType; import dev.cel.common.types.TypeParamType; import dev.cel.compiler.CelCompilerLibrary; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeBuilder; import dev.cel.runtime.CelRuntimeLibrary; import java.util.Collection; @@ -52,8 +53,9 @@ public enum Function { ListType.create(SimpleType.DYN), ListType.create(SimpleType.DYN), SimpleType.INT)), - CelFunctionBinding.from("list_flatten", Collection.class, list -> flatten(list, 1)), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( + "list_flatten", Collection.class, list -> flatten(list, 1)), + CelRuntime.CelFunctionBinding.from( "list_flatten_list_int", Collection.class, Long.class, CelListsExtensions::flatten)); private final CelFunctionDecl functionDecl; @@ -63,7 +65,7 @@ String getFunction() { return functionDecl.name(); } - Function(CelFunctionDecl functionDecl, CelFunctionBinding... functionBindings) { + Function(CelFunctionDecl functionDecl, CelRuntime.CelFunctionBinding... functionBindings) { this.functionDecl = functionDecl; this.functionBindings = ImmutableSet.copyOf(functionBindings); } diff --git a/extensions/src/main/java/dev/cel/extensions/CelMathExtensions.java b/extensions/src/main/java/dev/cel/extensions/CelMathExtensions.java index 059fdc7ba..ef1877b4c 100644 --- a/extensions/src/main/java/dev/cel/extensions/CelMathExtensions.java +++ b/extensions/src/main/java/dev/cel/extensions/CelMathExtensions.java @@ -37,7 +37,7 @@ import dev.cel.parser.CelMacro; import dev.cel.parser.CelMacroExprFactory; import dev.cel.parser.CelParserBuilder; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime; import dev.cel.runtime.CelRuntimeBuilder; import dev.cel.runtime.CelRuntimeLibrary; import java.util.List; @@ -175,50 +175,50 @@ enum Function { SimpleType.DYN, ListType.create(SimpleType.DYN))), ImmutableSet.of( - CelFunctionBinding.from("math_@max_double", Double.class, x -> x), - CelFunctionBinding.from("math_@max_int", Long.class, x -> x), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from("math_@max_double", Double.class, x -> x), + CelRuntime.CelFunctionBinding.from("math_@max_int", Long.class, x -> x), + CelRuntime.CelFunctionBinding.from( "math_@max_double_double", Double.class, Double.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_int_int", Long.class, Long.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_int_double", Long.class, Double.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_double_int", Double.class, Long.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_list_dyn", List.class, CelMathExtensions::maxList)), ImmutableSet.of( - CelFunctionBinding.from("math_@max_uint", Long.class, x -> x), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from("math_@max_uint", Long.class, x -> x), + CelRuntime.CelFunctionBinding.from( "math_@max_uint_uint", Long.class, Long.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_double_uint", Double.class, Long.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_uint_int", Long.class, Long.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_uint_double", Long.class, Double.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_int_uint", Long.class, Long.class, CelMathExtensions::maxPair)), ImmutableSet.of( - CelFunctionBinding.from("math_@max_uint", UnsignedLong.class, x -> x), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from("math_@max_uint", UnsignedLong.class, x -> x), + CelRuntime.CelFunctionBinding.from( "math_@max_uint_uint", UnsignedLong.class, UnsignedLong.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_double_uint", Double.class, UnsignedLong.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_uint_int", UnsignedLong.class, Long.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_uint_double", UnsignedLong.class, Double.class, CelMathExtensions::maxPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@max_int_uint", Long.class, UnsignedLong.class, CelMathExtensions::maxPair))), MIN( CelFunctionDecl.newFunctionDeclaration( @@ -290,56 +290,56 @@ enum Function { SimpleType.DYN, ListType.create(SimpleType.DYN))), ImmutableSet.of( - CelFunctionBinding.from("math_@min_double", Double.class, x -> x), - CelFunctionBinding.from("math_@min_int", Long.class, x -> x), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from("math_@min_double", Double.class, x -> x), + CelRuntime.CelFunctionBinding.from("math_@min_int", Long.class, x -> x), + CelRuntime.CelFunctionBinding.from( "math_@min_double_double", Double.class, Double.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_int_int", Long.class, Long.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_int_double", Long.class, Double.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_double_int", Double.class, Long.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_list_dyn", List.class, CelMathExtensions::minList)), ImmutableSet.of( - CelFunctionBinding.from("math_@min_uint", Long.class, x -> x), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from("math_@min_uint", Long.class, x -> x), + CelRuntime.CelFunctionBinding.from( "math_@min_uint_uint", Long.class, Long.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_double_uint", Double.class, Long.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_uint_int", Long.class, Long.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_uint_double", Long.class, Double.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_int_uint", Long.class, Long.class, CelMathExtensions::minPair)), ImmutableSet.of( - CelFunctionBinding.from("math_@min_uint", UnsignedLong.class, x -> x), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from("math_@min_uint", UnsignedLong.class, x -> x), + CelRuntime.CelFunctionBinding.from( "math_@min_uint_uint", UnsignedLong.class, UnsignedLong.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_double_uint", Double.class, UnsignedLong.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_uint_int", UnsignedLong.class, Long.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_uint_double", UnsignedLong.class, Double.class, CelMathExtensions::minPair), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "math_@min_int_uint", Long.class, UnsignedLong.class, CelMathExtensions::minPair))); private final CelFunctionDecl functionDecl; - private final ImmutableSet functionBindings; - private final ImmutableSet functionBindingsULongSigned; - private final ImmutableSet functionBindingsULongUnsigned; + private final ImmutableSet functionBindings; + private final ImmutableSet functionBindingsULongSigned; + private final ImmutableSet functionBindingsULongUnsigned; String getFunction() { return functionDecl.name(); @@ -347,9 +347,9 @@ String getFunction() { Function( CelFunctionDecl functionDecl, - ImmutableSet functionBindings, - ImmutableSet functionBindingsULongSigned, - ImmutableSet functionBindingsULongUnsigned) { + ImmutableSet functionBindings, + ImmutableSet functionBindingsULongSigned, + ImmutableSet functionBindingsULongUnsigned) { this.functionDecl = functionDecl; this.functionBindings = functionBindings; this.functionBindingsULongSigned = functionBindingsULongSigned; diff --git a/extensions/src/main/java/dev/cel/extensions/CelOptionalLibrary.java b/extensions/src/main/java/dev/cel/extensions/CelOptionalLibrary.java index 79fe06ec6..6398f9965 100644 --- a/extensions/src/main/java/dev/cel/extensions/CelOptionalLibrary.java +++ b/extensions/src/main/java/dev/cel/extensions/CelOptionalLibrary.java @@ -42,7 +42,7 @@ import dev.cel.parser.CelMacroExprFactory; import dev.cel.parser.CelParserBuilder; import dev.cel.parser.Operator; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime; import dev.cel.runtime.CelRuntimeBuilder; import dev.cel.runtime.CelRuntimeLibrary; import java.util.Collection; @@ -174,8 +174,8 @@ public void setCheckerOptions(CelCheckerBuilder checkerBuilder) { @SuppressWarnings("unchecked") public void setRuntimeOptions(CelRuntimeBuilder runtimeBuilder) { runtimeBuilder.addFunctionBindings( - CelFunctionBinding.from("optional_of", Object.class, Optional::of), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from("optional_of", Object.class, Optional::of), + CelRuntime.CelFunctionBinding.from( "optional_ofNonZeroValue", Object.class, val -> { @@ -184,11 +184,13 @@ public void setRuntimeOptions(CelRuntimeBuilder runtimeBuilder) { } return Optional.of(val); }), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "optional_unwrap_list", Collection.class, CelOptionalLibrary::elideOptionalCollection), - CelFunctionBinding.from("optional_none", ImmutableList.of(), val -> Optional.empty()), - CelFunctionBinding.from("optional_value", Object.class, val -> ((Optional) val).get()), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( + "optional_none", ImmutableList.of(), val -> Optional.empty()), + CelRuntime.CelFunctionBinding.from( + "optional_value", Object.class, val -> ((Optional) val).get()), + CelRuntime.CelFunctionBinding.from( "optional_hasValue", Object.class, val -> ((Optional) val).isPresent())); } diff --git a/extensions/src/main/java/dev/cel/extensions/CelSetsExtensions.java b/extensions/src/main/java/dev/cel/extensions/CelSetsExtensions.java index e6669741e..f52c394ed 100644 --- a/extensions/src/main/java/dev/cel/extensions/CelSetsExtensions.java +++ b/extensions/src/main/java/dev/cel/extensions/CelSetsExtensions.java @@ -26,7 +26,7 @@ import dev.cel.common.types.SimpleType; import dev.cel.common.types.TypeParamType; import dev.cel.compiler.CelCompilerLibrary; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime; import dev.cel.runtime.CelRuntimeBuilder; import dev.cel.runtime.CelRuntimeLibrary; import dev.cel.runtime.ProtoMessageRuntimeEquality; @@ -132,7 +132,7 @@ public void setRuntimeOptions(CelRuntimeBuilder runtimeBuilder) { switch (function) { case CONTAINS: runtimeBuilder.addFunctionBindings( - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "list_sets_contains_list", Collection.class, Collection.class, @@ -140,7 +140,7 @@ public void setRuntimeOptions(CelRuntimeBuilder runtimeBuilder) { break; case EQUIVALENT: runtimeBuilder.addFunctionBindings( - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "list_sets_equivalent_list", Collection.class, Collection.class, @@ -148,7 +148,7 @@ public void setRuntimeOptions(CelRuntimeBuilder runtimeBuilder) { break; case INTERSECTS: runtimeBuilder.addFunctionBindings( - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "list_sets_intersects_list", Collection.class, Collection.class, diff --git a/extensions/src/main/java/dev/cel/extensions/CelStringExtensions.java b/extensions/src/main/java/dev/cel/extensions/CelStringExtensions.java index 8dd0fc714..67aa461ef 100644 --- a/extensions/src/main/java/dev/cel/extensions/CelStringExtensions.java +++ b/extensions/src/main/java/dev/cel/extensions/CelStringExtensions.java @@ -33,7 +33,7 @@ import dev.cel.compiler.CelCompilerLibrary; import dev.cel.runtime.CelEvaluationException; import dev.cel.runtime.CelEvaluationExceptionBuilder; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime; import dev.cel.runtime.CelRuntimeBuilder; import dev.cel.runtime.CelRuntimeLibrary; import java.util.ArrayList; @@ -56,7 +56,7 @@ public enum Function { + " greater than the length of the string, the function will produce an error.", SimpleType.STRING, ImmutableList.of(SimpleType.STRING, SimpleType.INT))), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_char_at_int", String.class, Long.class, CelStringExtensions::charAt)), INDEX_OF( CelFunctionDecl.newFunctionDeclaration( @@ -75,9 +75,9 @@ public enum Function { + " is returned (zero or custom).", SimpleType.INT, ImmutableList.of(SimpleType.STRING, SimpleType.STRING, SimpleType.INT))), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_index_of_string", String.class, String.class, CelStringExtensions::indexOf), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_index_of_string_int", ImmutableList.of(String.class, String.class, Long.class), CelStringExtensions::indexOf)), @@ -95,8 +95,8 @@ public enum Function { + " separator.", SimpleType.STRING, ImmutableList.of(ListType.create(SimpleType.STRING), SimpleType.STRING))), - CelFunctionBinding.from("list_join", List.class, CelStringExtensions::join), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from("list_join", List.class, CelStringExtensions::join), + CelRuntime.CelFunctionBinding.from( "list_join_string", List.class, String.class, CelStringExtensions::join)), LAST_INDEX_OF( CelFunctionDecl.newFunctionDeclaration( @@ -115,12 +115,12 @@ public enum Function { + " returned (string length or custom).", SimpleType.INT, ImmutableList.of(SimpleType.STRING, SimpleType.STRING, SimpleType.INT))), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_last_index_of_string", String.class, String.class, CelStringExtensions::lastIndexOf), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_last_index_of_string_int", ImmutableList.of(String.class, String.class, Long.class), CelStringExtensions::lastIndexOf)), @@ -134,7 +134,7 @@ public enum Function { + " range.", SimpleType.STRING, SimpleType.STRING)), - CelFunctionBinding.from("string_lower_ascii", String.class, Ascii::toLowerCase)), + CelRuntime.CelFunctionBinding.from("string_lower_ascii", String.class, Ascii::toLowerCase)), REPLACE( CelFunctionDecl.newFunctionDeclaration( "replace", @@ -154,11 +154,11 @@ public enum Function { SimpleType.STRING, ImmutableList.of( SimpleType.STRING, SimpleType.STRING, SimpleType.STRING, SimpleType.INT))), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_replace_string_string", ImmutableList.of(String.class, String.class, String.class), CelStringExtensions::replaceAll), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_replace_string_string_int", ImmutableList.of(String.class, String.class, String.class, Long.class), CelStringExtensions::replace)), @@ -176,9 +176,9 @@ public enum Function { + " the specified limit on the number of substrings produced by the split.", ListType.create(SimpleType.STRING), ImmutableList.of(SimpleType.STRING, SimpleType.STRING, SimpleType.INT))), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_split_string", String.class, String.class, CelStringExtensions::split), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_split_string_int", ImmutableList.of(String.class, String.class, Long.class), CelStringExtensions::split)), @@ -198,9 +198,9 @@ public enum Function { + " Thus the length of the substring is {@code endIndex-beginIndex}.", SimpleType.STRING, ImmutableList.of(SimpleType.STRING, SimpleType.INT, SimpleType.INT))), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_substring_int", String.class, Long.class, CelStringExtensions::substring), - CelFunctionBinding.from( + CelRuntime.CelFunctionBinding.from( "string_substring_int_int", ImmutableList.of(String.class, Long.class, Long.class), CelStringExtensions::substring)), @@ -214,7 +214,7 @@ public enum Function { + " which does not include the zero-width spaces. ", SimpleType.STRING, SimpleType.STRING)), - CelFunctionBinding.from("string_trim", String.class, CelStringExtensions::trim)), + CelRuntime.CelFunctionBinding.from("string_trim", String.class, CelStringExtensions::trim)), UPPER_ASCII( CelFunctionDecl.newFunctionDeclaration( "upperAscii", @@ -225,16 +225,16 @@ public enum Function { + " range.", SimpleType.STRING, SimpleType.STRING)), - CelFunctionBinding.from("string_upper_ascii", String.class, Ascii::toUpperCase)); + CelRuntime.CelFunctionBinding.from("string_upper_ascii", String.class, Ascii::toUpperCase)); private final CelFunctionDecl functionDecl; - private final ImmutableSet functionBindings; + private final ImmutableSet functionBindings; String getFunction() { return functionDecl.name(); } - Function(CelFunctionDecl functionDecl, CelFunctionBinding... functionBindings) { + Function(CelFunctionDecl functionDecl, CelRuntime.CelFunctionBinding... functionBindings) { this.functionDecl = functionDecl; this.functionBindings = ImmutableSet.copyOf(functionBindings); } diff --git a/extensions/src/test/java/dev/cel/extensions/BUILD.bazel b/extensions/src/test/java/dev/cel/extensions/BUILD.bazel index cb14e97eb..9ec11cd7c 100644 --- a/extensions/src/test/java/dev/cel/extensions/BUILD.bazel +++ b/extensions/src/test/java/dev/cel/extensions/BUILD.bazel @@ -24,7 +24,6 @@ java_library( "//extensions:strings", "//parser:macro", "//runtime", - "//runtime:function_binding", "//runtime:interpreter_util", "@cel_spec//proto/cel/expr/conformance/proto2:test_all_types_java_proto", "@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto", diff --git a/extensions/src/test/java/dev/cel/extensions/CelBindingsExtensionsTest.java b/extensions/src/test/java/dev/cel/extensions/CelBindingsExtensionsTest.java index d0bcb398d..a1ec3f6ae 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelBindingsExtensionsTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelBindingsExtensionsTest.java @@ -32,8 +32,8 @@ import dev.cel.compiler.CelCompilerFactory; import dev.cel.expr.conformance.proto3.TestAllTypes; import dev.cel.parser.CelStandardMacro; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeFactory; import java.util.Arrays; import java.util.concurrent.atomic.AtomicInteger; diff --git a/extensions/src/test/java/dev/cel/extensions/CelMathExtensionsTest.java b/extensions/src/test/java/dev/cel/extensions/CelMathExtensionsTest.java index 1b5536e88..65b7542cd 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelMathExtensionsTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelMathExtensionsTest.java @@ -32,8 +32,8 @@ import dev.cel.compiler.CelCompiler; import dev.cel.compiler.CelCompilerFactory; import dev.cel.runtime.CelEvaluationException; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeFactory; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java b/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java index 55156a7cc..06f748a47 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java @@ -47,8 +47,8 @@ import dev.cel.expr.conformance.proto3.TestAllTypes.NestedMessage; import dev.cel.parser.CelStandardMacro; import dev.cel.runtime.CelEvaluationException; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.InterpreterUtil; import java.util.List; import java.util.Map; diff --git a/extensions/src/test/java/dev/cel/extensions/CelProtoExtensionsTest.java b/extensions/src/test/java/dev/cel/extensions/CelProtoExtensionsTest.java index b182bfbd2..e7d58574b 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelProtoExtensionsTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelProtoExtensionsTest.java @@ -40,8 +40,8 @@ import dev.cel.expr.conformance.proto2.TestAllTypes.NestedEnum; import dev.cel.expr.conformance.proto2.TestAllTypesExtensions; import dev.cel.parser.CelStandardMacro; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeFactory; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/extensions/src/test/java/dev/cel/extensions/CelSetsExtensionsTest.java b/extensions/src/test/java/dev/cel/extensions/CelSetsExtensionsTest.java index a873b479b..808cc50f8 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelSetsExtensionsTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelSetsExtensionsTest.java @@ -34,8 +34,8 @@ import dev.cel.expr.conformance.proto3.TestAllTypes; import dev.cel.extensions.CelSetsExtensions.Function; import dev.cel.runtime.CelEvaluationException; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeFactory; import java.util.List; import org.junit.Test; 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 37e2af3b3..f378c6d44 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/optimizers/BUILD.bazel +++ b/optimizer/src/test/java/dev/cel/optimizer/optimizers/BUILD.bazel @@ -29,7 +29,6 @@ java_library( "//parser:operator", "//parser:unparser", "//runtime", - "//runtime:function_binding", "//testing:baseline_test_case", "@maven//:junit_junit", "@maven//:com_google_testparameterinjector_test_parameter_injector", 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 4fd3343e8..14aabe50c 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/optimizers/ConstantFoldingOptimizerTest.java +++ b/optimizer/src/test/java/dev/cel/optimizer/optimizers/ConstantFoldingOptimizerTest.java @@ -39,7 +39,7 @@ import dev.cel.parser.CelStandardMacro; import dev.cel.parser.CelUnparser; import dev.cel.parser.CelUnparserFactory; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import org.junit.Test; import org.junit.runner.RunWith; 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..794af6802 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerBaselineTest.java +++ b/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerBaselineTest.java @@ -41,7 +41,7 @@ import dev.cel.parser.CelStandardMacro; import dev.cel.parser.CelUnparser; import dev.cel.parser.CelUnparserFactory; -import dev.cel.runtime.CelFunctionBinding; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.testing.BaselineTestCase; import java.util.Optional; import org.junit.Before; diff --git a/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerTest.java b/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerTest.java index 3a7b53922..84515f0d6 100644 --- a/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerTest.java +++ b/optimizer/src/test/java/dev/cel/optimizer/optimizers/SubexpressionOptimizerTest.java @@ -55,8 +55,8 @@ import dev.cel.parser.CelUnparser; import dev.cel.parser.CelUnparserFactory; import dev.cel.parser.Operator; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeFactory; import java.util.Optional; import java.util.concurrent.atomic.AtomicInteger; diff --git a/policy/src/test/java/dev/cel/policy/BUILD.bazel b/policy/src/test/java/dev/cel/policy/BUILD.bazel index 6dd8c58f3..3457f89f5 100644 --- a/policy/src/test/java/dev/cel/policy/BUILD.bazel +++ b/policy/src/test/java/dev/cel/policy/BUILD.bazel @@ -32,7 +32,6 @@ java_library( "//policy:source", "//policy:validation_exception", "//runtime", - "//runtime:function_binding", "@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto", "@maven//:com_google_guava_guava", "@maven//:com_google_testparameterinjector_test_parameter_injector", diff --git a/policy/src/test/java/dev/cel/policy/CelPolicyCompilerImplTest.java b/policy/src/test/java/dev/cel/policy/CelPolicyCompilerImplTest.java index d319345eb..efa148574 100644 --- a/policy/src/test/java/dev/cel/policy/CelPolicyCompilerImplTest.java +++ b/policy/src/test/java/dev/cel/policy/CelPolicyCompilerImplTest.java @@ -41,8 +41,8 @@ import dev.cel.policy.PolicyTestHelper.PolicyTestSuite.PolicyTestSection.PolicyTestCase; import dev.cel.policy.PolicyTestHelper.PolicyTestSuite.PolicyTestSection.PolicyTestCase.PolicyTestInput; import dev.cel.policy.PolicyTestHelper.TestYamlPolicy; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelLateFunctionBindings; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import java.io.IOException; import java.util.Map; import java.util.Optional; diff --git a/runtime/BUILD.bazel b/runtime/BUILD.bazel index 1ca1e59c9..665d6f32d 100644 --- a/runtime/BUILD.bazel +++ b/runtime/BUILD.bazel @@ -51,6 +51,7 @@ java_library( java_library( name = "function_binding", + visibility = ["//:internal"], exports = [ "//runtime/src/main/java/dev/cel/runtime:function_binding", ], diff --git a/runtime/src/main/java/dev/cel/runtime/CelLateFunctionBindings.java b/runtime/src/main/java/dev/cel/runtime/CelLateFunctionBindings.java index 7f83e38fd..125950161 100644 --- a/runtime/src/main/java/dev/cel/runtime/CelLateFunctionBindings.java +++ b/runtime/src/main/java/dev/cel/runtime/CelLateFunctionBindings.java @@ -41,20 +41,20 @@ public Optional findOverload( return DefaultDispatcher.findOverload(functionName, overloadIds, functions, args); } - public static CelLateFunctionBindings from(CelFunctionBinding... functions) { + public static CelLateFunctionBindings from(CelRuntime.CelFunctionBinding... functions) { return from(Arrays.asList(functions)); } - public static CelLateFunctionBindings from(List functions) { + public static CelLateFunctionBindings from(List functions) { return new CelLateFunctionBindings( functions.stream() .collect( toImmutableMap( - CelFunctionBinding::getOverloadId, + CelRuntime.CelFunctionBinding::getOverloadId, CelLateFunctionBindings::createResolvedOverload))); } - private static ResolvedOverload createResolvedOverload(CelFunctionBinding binding) { + private static ResolvedOverload createResolvedOverload(CelRuntime.CelFunctionBinding binding) { return CelResolvedOverload.of( binding.getOverloadId(), binding.getArgTypes(), diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntime.java b/runtime/src/main/java/dev/cel/runtime/CelRuntime.java index 784f0f835..f24b2f3a2 100644 --- a/runtime/src/main/java/dev/cel/runtime/CelRuntime.java +++ b/runtime/src/main/java/dev/cel/runtime/CelRuntime.java @@ -229,13 +229,26 @@ static Program from(Interpretable interpretable, CelOptions options) { } /** - * Deprecated. Do not use. + * Binding consisting of an overload id, a Java-native argument signature, and an overload + * definition. * - * @deprecated {@link dev.cel.runtime.CelFunctionBinding} instead. - *

TODO: Migrate users to dev.cel.runtime.CelFunctionBinding + *

While the CEL function has a human-readable {@code camelCase} name, overload ids should use + * the following convention where all {@code } names should be ASCII lower-cased. For types + * prefer the unparameterized simple name of time, or unqualified name of any proto-based type: + * + *

+ * + *

Examples: string_startsWith_string, mathMax_list, lessThan_money_money + * + *

TODO: Migrate users to dev.cel.runtime.CelFunctionBinding */ @Immutable - @Deprecated final class CelFunctionBinding implements dev.cel.runtime.CelFunctionBinding { private final dev.cel.runtime.CelFunctionBinding functionBinding; @@ -263,7 +276,8 @@ public CelFunctionOverload getDefinition() { */ public static CelFunctionBinding from( String overloadId, Class arg, CelFunctionOverload.Unary impl) { - return new CelFunctionBinding(dev.cel.runtime.CelFunctionBinding.from(overloadId, arg, impl)); + return new CelRuntime.CelFunctionBinding( + dev.cel.runtime.CelFunctionBinding.from(overloadId, arg, impl)); } /** @@ -275,7 +289,7 @@ public static CelFunctionBinding from( Class arg1, Class arg2, CelFunctionOverload.Binary impl) { - return new CelFunctionBinding( + return new CelRuntime.CelFunctionBinding( dev.cel.runtime.CelFunctionBinding.from(overloadId, arg1, arg2, impl)); } @@ -284,7 +298,7 @@ public static CelFunctionBinding from( */ public static CelFunctionBinding from( String overloadId, Iterable> argTypes, CelFunctionOverload impl) { - return new CelFunctionBinding( + return new CelRuntime.CelFunctionBinding( dev.cel.runtime.CelFunctionBinding.from(overloadId, argTypes, impl)); } } diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeBuilder.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeBuilder.java index 28c0ae0e6..22b4844f5 100644 --- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeBuilder.java +++ b/runtime/src/main/java/dev/cel/runtime/CelRuntimeBuilder.java @@ -33,20 +33,20 @@ public interface CelRuntimeBuilder { CelRuntimeBuilder setOptions(CelOptions options); /** - * Add one or more {@link CelFunctionBinding} objects to the CEL runtime. + * Add one or more {@link CelRuntime.CelFunctionBinding} objects to the CEL runtime. * *

Functions with duplicate overload ids will be replaced in favor of the new overload. */ @CanIgnoreReturnValue - CelRuntimeBuilder addFunctionBindings(CelFunctionBinding... bindings); + CelRuntimeBuilder addFunctionBindings(CelRuntime.CelFunctionBinding... bindings); /** - * Bind a collection of {@link CelFunctionBinding} objects to the runtime. + * Bind a collection of {@link CelRuntime.CelFunctionBinding} objects to the runtime. * *

Functions with duplicate overload ids will be replaced in favor of the new overload. */ @CanIgnoreReturnValue - CelRuntimeBuilder addFunctionBindings(Iterable bindings); + CelRuntimeBuilder addFunctionBindings(Iterable bindings); /** * Add message {@link Descriptor}s to the builder for type-checking and object creation at diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeLegacyImpl.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeLegacyImpl.java index aea1128f5..32170009c 100644 --- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeLegacyImpl.java +++ b/runtime/src/main/java/dev/cel/runtime/CelRuntimeLegacyImpl.java @@ -90,7 +90,7 @@ public static CelRuntimeBuilder newBuilder() { public static final class Builder implements CelRuntimeBuilder { private final ImmutableSet.Builder fileTypes; - private final HashMap customFunctionBindings; + private final HashMap customFunctionBindings; private final ImmutableSet.Builder celRuntimeLibraries; @SuppressWarnings("unused") @@ -109,13 +109,12 @@ public CelRuntimeBuilder setOptions(CelOptions options) { } @Override - public CelRuntimeBuilder addFunctionBindings(dev.cel.runtime.CelFunctionBinding... bindings) { + public CelRuntimeBuilder addFunctionBindings(CelFunctionBinding... bindings) { return addFunctionBindings(Arrays.asList(bindings)); } @Override - public CelRuntimeBuilder addFunctionBindings( - Iterable bindings) { + public CelRuntimeBuilder addFunctionBindings(Iterable bindings) { bindings.forEach(o -> customFunctionBindings.putIfAbsent(o.getOverloadId(), o)); return this; } @@ -194,7 +193,7 @@ public CelRuntimeBuilder setExtensionRegistry(ExtensionRegistry extensionRegistr // The following getters exist for asserting immutability for collections held by this builder, // and shouldn't be exposed to the public. @VisibleForTesting - Map getFunctionBindings() { + Map getFunctionBindings() { return this.customFunctionBindings; } diff --git a/runtime/src/test/java/dev/cel/runtime/CelLateFunctionBindingsTest.java b/runtime/src/test/java/dev/cel/runtime/CelLateFunctionBindingsTest.java index 03bed8ae6..e5a715af3 100644 --- a/runtime/src/test/java/dev/cel/runtime/CelLateFunctionBindingsTest.java +++ b/runtime/src/test/java/dev/cel/runtime/CelLateFunctionBindingsTest.java @@ -20,6 +20,7 @@ import com.google.common.primitives.UnsignedLong; import dev.cel.common.CelErrorCode; import dev.cel.expr.conformance.proto3.TestAllTypes; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import java.util.Optional; import org.junit.Assert; import org.junit.Test; diff --git a/runtime/src/test/java/dev/cel/runtime/CelRuntimeLegacyImplTest.java b/runtime/src/test/java/dev/cel/runtime/CelRuntimeLegacyImplTest.java index 65fc8579e..f4790cd42 100644 --- a/runtime/src/test/java/dev/cel/runtime/CelRuntimeLegacyImplTest.java +++ b/runtime/src/test/java/dev/cel/runtime/CelRuntimeLegacyImplTest.java @@ -20,6 +20,7 @@ import dev.cel.compiler.CelCompiler; import dev.cel.compiler.CelCompilerFactory; import dev.cel.expr.conformance.proto3.TestAllTypes; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; diff --git a/testing/src/main/java/dev/cel/testing/BUILD.bazel b/testing/src/main/java/dev/cel/testing/BUILD.bazel index 0869c4e42..6fa78cf9f 100644 --- a/testing/src/main/java/dev/cel/testing/BUILD.bazel +++ b/testing/src/main/java/dev/cel/testing/BUILD.bazel @@ -107,7 +107,6 @@ java_library( "//common/types:type_providers", "//extensions:optional_library", "//runtime", - "//runtime:function_binding", "//runtime:unknown_attributes", "@cel_spec//proto/cel/expr:checked_java_proto", "@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto", diff --git a/testing/src/main/java/dev/cel/testing/BaseInterpreterTest.java b/testing/src/main/java/dev/cel/testing/BaseInterpreterTest.java index 1494c2197..be57a0de4 100644 --- a/testing/src/main/java/dev/cel/testing/BaseInterpreterTest.java +++ b/testing/src/main/java/dev/cel/testing/BaseInterpreterTest.java @@ -69,9 +69,9 @@ import dev.cel.expr.conformance.proto3.TestAllTypes.NestedMessage; import dev.cel.extensions.CelOptionalLibrary; import dev.cel.runtime.CelEvaluationException; -import dev.cel.runtime.CelFunctionBinding; import dev.cel.runtime.CelLateFunctionBindings; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntime.CelFunctionBinding; import dev.cel.runtime.CelRuntimeFactory; import dev.cel.runtime.CelUnknownSet; import dev.cel.runtime.CelVariableResolver; @@ -2355,7 +2355,7 @@ private static CelVariableResolver extend(CelVariableResolver primary, Map