From cd71e408cea826ff4bfd08e9d677f9ba4f100061 Mon Sep 17 00:00:00 2001 From: Sokwhan Huh Date: Thu, 23 Apr 2026 18:48:18 -0700 Subject: [PATCH] Promote planner runtime builders to the main factories PiperOrigin-RevId: 904740634 --- bundle/BUILD.bazel | 8 --- .../src/main/java/dev/cel/bundle/BUILD.bazel | 19 ------- .../cel/bundle/CelExperimentalFactory.java | 57 ------------------- .../main/java/dev/cel/bundle/CelFactory.java | 25 ++++++++ .../test/java/dev/cel/extensions/BUILD.bazel | 1 - .../extensions/CelOptionalLibraryTest.java | 3 +- publish/BUILD.bazel | 2 - runtime/BUILD.bazel | 8 --- .../src/main/java/dev/cel/runtime/BUILD.bazel | 12 ---- .../CelRuntimeExperimentalFactory.java | 48 ---------------- .../dev/cel/runtime/CelRuntimeFactory.java | 19 +++++++ .../java/dev/cel/runtime/CelRuntimeImpl.java | 3 +- .../src/test/java/dev/cel/runtime/BUILD.bazel | 1 - .../cel/runtime/PlannerInterpreterTest.java | 2 +- .../src/main/java/dev/cel/testing/BUILD.bazel | 2 - .../dev/cel/testing/CelRuntimeFlavor.java | 3 +- 16 files changed, 49 insertions(+), 164 deletions(-) delete mode 100644 bundle/src/main/java/dev/cel/bundle/CelExperimentalFactory.java delete mode 100644 runtime/src/main/java/dev/cel/runtime/CelRuntimeExperimentalFactory.java diff --git a/bundle/BUILD.bazel b/bundle/BUILD.bazel index 11e0b8a6d..1eaf0bec8 100644 --- a/bundle/BUILD.bazel +++ b/bundle/BUILD.bazel @@ -13,14 +13,6 @@ java_library( ], ) -java_library( - name = "cel_experimental_factory", - visibility = ["//:internal"], - exports = [ - "//bundle/src/main/java/dev/cel/bundle:cel_experimental_factory", - ], -) - java_library( name = "environment", exports = ["//bundle/src/main/java/dev/cel/bundle:environment"], diff --git a/bundle/src/main/java/dev/cel/bundle/BUILD.bazel b/bundle/src/main/java/dev/cel/bundle/BUILD.bazel index 822511e4c..742f718f1 100644 --- a/bundle/src/main/java/dev/cel/bundle/BUILD.bazel +++ b/bundle/src/main/java/dev/cel/bundle/BUILD.bazel @@ -35,7 +35,6 @@ java_library( "@cel_spec//proto/cel/expr:checked_java_proto", "@maven//:com_google_code_findbugs_annotations", "@maven//:com_google_errorprone_error_prone_annotations", - "@maven//:com_google_guava_guava", "@maven//:com_google_protobuf_protobuf_java", ], ) @@ -54,22 +53,6 @@ java_library( "//compiler:compiler_builder", "//parser", "//runtime", - ], -) - -java_library( - name = "cel_experimental_factory", - srcs = ["CelExperimentalFactory.java"], - tags = [ - ], - deps = [ - ":cel", - ":cel_impl", - "//checker", - "//common:options", - "//common/annotations", - "//compiler", - "//parser", "//runtime:runtime_planner_impl", ], ) @@ -117,7 +100,6 @@ java_library( tags = [ ], deps = [ - ":cel_factory", ":environment_exception", ":required_fields_checker", "//:auto_value", @@ -190,7 +172,6 @@ java_library( "//common:options", "//common/internal:env_visitor", "//common/types:cel_proto_types", - "//common/types:cel_types", "//common/types:type_providers", "//compiler:compiler_builder", "//extensions", diff --git a/bundle/src/main/java/dev/cel/bundle/CelExperimentalFactory.java b/bundle/src/main/java/dev/cel/bundle/CelExperimentalFactory.java deleted file mode 100644 index 9a3e95dd8..000000000 --- a/bundle/src/main/java/dev/cel/bundle/CelExperimentalFactory.java +++ /dev/null @@ -1,57 +0,0 @@ -// Copyright 2026 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package dev.cel.bundle; - -import dev.cel.checker.CelCheckerLegacyImpl; -import dev.cel.common.CelOptions; -import dev.cel.common.annotations.Beta; -import dev.cel.compiler.CelCompilerImpl; -import dev.cel.parser.CelParserImpl; -import dev.cel.runtime.CelRuntimeImpl; - -/** - * Experimental helper class to configure the entire CEL stack in a common interface, backed by the - * new {@code ProgramPlanner} architecture. - * - *

All APIs and behaviors surfaced here are subject to change. - */ -@Beta -public final class CelExperimentalFactory { - - /** - * Creates a builder for configuring CEL for the parsing, optional type-checking, and evaluation - * of expressions using the Program Planner. - * - *

The {@code ProgramPlanner} architecture provides key benefits over the legacy runtime: - * - *

- */ - public static CelBuilder plannerCelBuilder() { - return CelImpl.newBuilder( - CelCompilerImpl.newBuilder( - CelParserImpl.newBuilder(), - CelCheckerLegacyImpl.newBuilder().setStandardEnvironmentEnabled(true)), - CelRuntimeImpl.newBuilder()) - // CEL-Internal-2 - .setOptions(CelOptions.current().enableHeterogeneousNumericComparisons(true).build()); - } - - private CelExperimentalFactory() {} -} diff --git a/bundle/src/main/java/dev/cel/bundle/CelFactory.java b/bundle/src/main/java/dev/cel/bundle/CelFactory.java index 6cc6d8192..ac589cfe6 100644 --- a/bundle/src/main/java/dev/cel/bundle/CelFactory.java +++ b/bundle/src/main/java/dev/cel/bundle/CelFactory.java @@ -20,6 +20,7 @@ import dev.cel.compiler.CelCompilerImpl; import dev.cel.parser.CelParserImpl; import dev.cel.runtime.CelRuntime; +import dev.cel.runtime.CelRuntimeImpl; import dev.cel.runtime.CelRuntimeLegacyImpl; /** Helper class to configure the entire CEL stack in a common interface. */ @@ -44,6 +45,30 @@ public static CelBuilder standardCelBuilder() { .setStandardEnvironmentEnabled(true); } + /** + * Creates a builder for configuring CEL for the parsing, optional type-checking, and evaluation + * of expressions using the Program Planner. + * + *

The {@code ProgramPlanner} architecture provides key benefits over the {@link + * #standardCelBuilder()}: + * + *

+ */ + public static CelBuilder plannerCelBuilder() { + return CelImpl.newBuilder( + CelCompilerImpl.newBuilder( + CelParserImpl.newBuilder(), + CelCheckerLegacyImpl.newBuilder().setStandardEnvironmentEnabled(true)), + CelRuntimeImpl.newBuilder()) + // CEL-Internal-2 + .setOptions(CelOptions.current().enableHeterogeneousNumericComparisons(true).build()); + } + /** Combines a prebuilt {@link CelCompiler} and {@link CelRuntime} into {@link Cel}. */ public static Cel combine(CelCompiler celCompiler, CelRuntime celRuntime) { return CelImpl.combine(celCompiler, celRuntime); diff --git a/extensions/src/test/java/dev/cel/extensions/BUILD.bazel b/extensions/src/test/java/dev/cel/extensions/BUILD.bazel index eed240317..f926e25b6 100644 --- a/extensions/src/test/java/dev/cel/extensions/BUILD.bazel +++ b/extensions/src/test/java/dev/cel/extensions/BUILD.bazel @@ -10,7 +10,6 @@ java_library( deps = [ "//:java_truth", "//bundle:cel", - "//bundle:cel_experimental_factory", "//common:cel_ast", "//common:cel_exception", "//common:compiler_common", diff --git a/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java b/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java index 4f348c12a..34c7f89f9 100644 --- a/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java +++ b/extensions/src/test/java/dev/cel/extensions/CelOptionalLibraryTest.java @@ -26,7 +26,6 @@ import com.google.testing.junit.testparameterinjector.TestParameters; import dev.cel.bundle.Cel; import dev.cel.bundle.CelBuilder; -import dev.cel.bundle.CelExperimentalFactory; import dev.cel.bundle.CelFactory; import dev.cel.common.CelAbstractSyntaxTree; import dev.cel.common.CelContainer; @@ -113,7 +112,7 @@ private CelBuilder newCelBuilder(int version) { switch (testMode) { case PLANNER_PARSE_ONLY: case PLANNER_CHECKED: - celBuilder = CelExperimentalFactory.plannerCelBuilder(); + celBuilder = CelFactory.plannerCelBuilder(); break; case LEGACY_CHECKED: celBuilder = CelFactory.standardCelBuilder(); diff --git a/publish/BUILD.bazel b/publish/BUILD.bazel index d905edc4b..69622aada 100644 --- a/publish/BUILD.bazel +++ b/publish/BUILD.bazel @@ -32,7 +32,6 @@ RUNTIME_TARGETS = [ "//runtime/src/main/java/dev/cel/runtime:base", "//runtime/src/main/java/dev/cel/runtime:interpreter", "//runtime/src/main/java/dev/cel/runtime:late_function_binding", - "//runtime/src/main/java/dev/cel/runtime:runtime_experimental_factory", "//runtime/src/main/java/dev/cel/runtime:runtime_factory", "//runtime/src/main/java/dev/cel/runtime:runtime_helpers", "//runtime/src/main/java/dev/cel/runtime:runtime_legacy_impl", @@ -125,7 +124,6 @@ EXTENSION_TARGETS = [ # keep sorted BUNDLE_TARGETS = [ "//bundle/src/main/java/dev/cel/bundle:cel", - "//bundle/src/main/java/dev/cel/bundle:cel_experimental_factory", "//bundle/src/main/java/dev/cel/bundle:environment", "//bundle/src/main/java/dev/cel/bundle:environment_yaml_parser", ] diff --git a/runtime/BUILD.bazel b/runtime/BUILD.bazel index 3e183d236..f4a150ff3 100644 --- a/runtime/BUILD.bazel +++ b/runtime/BUILD.bazel @@ -29,14 +29,6 @@ java_library( ], ) -java_library( - name = "runtime_experimental_factory", - visibility = ["//:internal"], - exports = [ - "//runtime/src/main/java/dev/cel/runtime:runtime_experimental_factory", - ], -) - java_library( name = "runtime_legacy_impl", visibility = ["//:internal"], diff --git a/runtime/src/main/java/dev/cel/runtime/BUILD.bazel b/runtime/src/main/java/dev/cel/runtime/BUILD.bazel index 0da68d548..5178ae27c 100644 --- a/runtime/src/main/java/dev/cel/runtime/BUILD.bazel +++ b/runtime/src/main/java/dev/cel/runtime/BUILD.bazel @@ -916,20 +916,8 @@ java_library( deps = [ ":runtime", ":runtime_legacy_impl", - "//common:options", - ], -) - -java_library( - name = "runtime_experimental_factory", - srcs = ["CelRuntimeExperimentalFactory.java"], - tags = [ - ], - deps = [ - ":runtime", ":runtime_planner_impl", "//common:options", - "//common/annotations", ], ) diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeExperimentalFactory.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeExperimentalFactory.java deleted file mode 100644 index 743f90669..000000000 --- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeExperimentalFactory.java +++ /dev/null @@ -1,48 +0,0 @@ -// Copyright 2026 Google LLC -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// https://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package dev.cel.runtime; - -import dev.cel.common.CelOptions; -import dev.cel.common.annotations.Beta; - -/** - * Experimental helper class to construct new {@code CelRuntime} instances backed by the new {@code - * ProgramPlanner} architecture. - * - *

All APIs and behaviors surfaced here are subject to change. - */ -@Beta -public final class CelRuntimeExperimentalFactory { - - /** - * Create a new builder for constructing a {@code CelRuntime} instance. - * - *

The {@code ProgramPlanner} architecture provides key benefits over the legacy runtime: - * - *

- */ - public static CelRuntimeBuilder plannerRuntimeBuilder() { - return CelRuntimeImpl.newBuilder() - // CEL-Internal-2 - .setOptions(CelOptions.current().enableHeterogeneousNumericComparisons(true).build()); - } - - private CelRuntimeExperimentalFactory() {} -} diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeFactory.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeFactory.java index 322985b22..6615b59e0 100644 --- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeFactory.java +++ b/runtime/src/main/java/dev/cel/runtime/CelRuntimeFactory.java @@ -32,5 +32,24 @@ public static CelRuntimeBuilder standardCelRuntimeBuilder() { .setStandardEnvironmentEnabled(true); } + /** + * Create a new builder for constructing a {@code CelRuntime} instance. + * + *

The {@code ProgramPlanner} architecture provides key benefits over the {@link + * #standardCelRuntimeBuilder()}: + * + *

+ */ + public static CelRuntimeBuilder plannerRuntimeBuilder() { + return CelRuntimeImpl.newBuilder() + // CEL-Internal-2 + .setOptions(CelOptions.current().enableHeterogeneousNumericComparisons(true).build()); + } + private CelRuntimeFactory() {} } diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java index ed203d612..dcdf3be52 100644 --- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java +++ b/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java @@ -474,7 +474,8 @@ private static CelDescriptorPool newDescriptorPool( @Override public CelRuntime build() { - assertAllowedCelOptions(options()); + CelOptions options = options(); + assertAllowedCelOptions(options); CelDescriptors celDescriptors = CelDescriptorUtil.getAllDescriptorsFromFileDescriptor(fileDescriptorsBuilder().build()); diff --git a/runtime/src/test/java/dev/cel/runtime/BUILD.bazel b/runtime/src/test/java/dev/cel/runtime/BUILD.bazel index 3200a80e0..e886c3d8a 100644 --- a/runtime/src/test/java/dev/cel/runtime/BUILD.bazel +++ b/runtime/src/test/java/dev/cel/runtime/BUILD.bazel @@ -146,7 +146,6 @@ java_library( "//extensions", "//runtime", "//runtime:function_binding", - "//runtime:runtime_experimental_factory", "//runtime:unknown_attributes", "//testing:base_interpreter_test", "@cel_spec//proto/cel/expr/conformance/proto3:test_all_types_java_proto", diff --git a/runtime/src/test/java/dev/cel/runtime/PlannerInterpreterTest.java b/runtime/src/test/java/dev/cel/runtime/PlannerInterpreterTest.java index c0b0f76c4..9ae8590d5 100644 --- a/runtime/src/test/java/dev/cel/runtime/PlannerInterpreterTest.java +++ b/runtime/src/test/java/dev/cel/runtime/PlannerInterpreterTest.java @@ -42,7 +42,7 @@ public class PlannerInterpreterTest extends BaseInterpreterTest { @Override protected CelRuntimeBuilder newBaseRuntimeBuilder(CelOptions celOptions) { - return CelRuntimeExperimentalFactory.plannerRuntimeBuilder() + return CelRuntimeFactory.plannerRuntimeBuilder() .addLateBoundFunctions("record") .setOptions(celOptions) .addLibraries(CelExtensions.optional()) diff --git a/testing/src/main/java/dev/cel/testing/BUILD.bazel b/testing/src/main/java/dev/cel/testing/BUILD.bazel index b52026ec4..69765b549 100644 --- a/testing/src/main/java/dev/cel/testing/BUILD.bazel +++ b/testing/src/main/java/dev/cel/testing/BUILD.bazel @@ -102,7 +102,6 @@ java_library( "@maven//:com_google_protobuf_protobuf_java", "@maven//:com_google_protobuf_protobuf_java_util", "@maven//:junit_junit", - "@maven_android//:com_google_protobuf_protobuf_javalite", ], ) @@ -113,6 +112,5 @@ java_library( ], deps = [ "//bundle:cel", - "//bundle:cel_experimental_factory", ], ) diff --git a/testing/src/main/java/dev/cel/testing/CelRuntimeFlavor.java b/testing/src/main/java/dev/cel/testing/CelRuntimeFlavor.java index 576e0c1d3..66ce8d802 100644 --- a/testing/src/main/java/dev/cel/testing/CelRuntimeFlavor.java +++ b/testing/src/main/java/dev/cel/testing/CelRuntimeFlavor.java @@ -15,7 +15,6 @@ package dev.cel.testing; import dev.cel.bundle.CelBuilder; -import dev.cel.bundle.CelExperimentalFactory; import dev.cel.bundle.CelFactory; /** Enumeration of supported CEL runtime environments for testing. */ @@ -29,7 +28,7 @@ public CelBuilder builder() { PLANNER { @Override public CelBuilder builder() { - return CelExperimentalFactory.plannerCelBuilder(); + return CelFactory.plannerCelBuilder(); } };