diff --git a/runtime/BUILD.bazel b/runtime/BUILD.bazel index e1acc4261..5e99be180 100644 --- a/runtime/BUILD.bazel +++ b/runtime/BUILD.bazel @@ -204,12 +204,6 @@ cel_android_library( exports = ["//runtime/src/main/java/dev/cel/runtime:type_resolver_android"], ) -java_library( - name = "descriptor_type_resolver", - visibility = ["//:internal"], - exports = ["//runtime/src/main/java/dev/cel/runtime:descriptor_type_resolver"], -) - java_library( name = "unknown_attributes", exports = ["//runtime/src/main/java/dev/cel/runtime:unknown_attributes"], diff --git a/runtime/src/main/java/dev/cel/runtime/BUILD.bazel b/runtime/src/main/java/dev/cel/runtime/BUILD.bazel index 3cd371f55..e844c6e84 100644 --- a/runtime/src/main/java/dev/cel/runtime/BUILD.bazel +++ b/runtime/src/main/java/dev/cel/runtime/BUILD.bazel @@ -239,6 +239,7 @@ java_library( name = "descriptor_type_resolver", srcs = ["DescriptorTypeResolver.java"], tags = [ + "avoid_dep", ], deps = [ ":type_resolver", @@ -250,7 +251,6 @@ java_library( "@maven//:com_google_errorprone_error_prone_annotations", "@maven//:com_google_guava_guava", "@maven//:com_google_protobuf_protobuf_java", - "@maven//:org_jspecify_jspecify", ], ) @@ -828,7 +828,6 @@ java_library( ], deps = [ ":async_options", - ":descriptor_type_resolver", ":dispatcher", ":evaluation_exception", ":evaluation_listener", diff --git a/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java b/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java index 4d13ca354..61e6ead60 100644 --- a/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java +++ b/runtime/src/main/java/dev/cel/runtime/CelRuntimeImpl.java @@ -558,14 +558,12 @@ public CelRuntime build() { new CelTypeProvider.CombinedCelTypeProvider(combinedTypeProvider, typeProvider()); } - DescriptorTypeResolver descriptorTypeResolver = - DescriptorTypeResolver.create(combinedTypeProvider, celValueConverter); - TypeFunction typeFunction = TypeFunction.create(descriptorTypeResolver); - mutableFunctionBindings.putAll(functionBindings()); for (CelFunctionBinding binding : - typeFunction.newFunctionBindings(options(), runtimeEquality)) { + TypeFunction.create() + .newFunctionBindings( + options(), runtimeEquality, combinedTypeProvider, celValueConverter)) { mutableFunctionBindings.put(binding.getOverloadId(), binding); } diff --git a/runtime/src/main/java/dev/cel/runtime/DescriptorTypeResolver.java b/runtime/src/main/java/dev/cel/runtime/DescriptorTypeResolver.java index 263c5dea3..8846a0710 100644 --- a/runtime/src/main/java/dev/cel/runtime/DescriptorTypeResolver.java +++ b/runtime/src/main/java/dev/cel/runtime/DescriptorTypeResolver.java @@ -20,47 +20,32 @@ import com.google.protobuf.MessageOrBuilder; import dev.cel.common.annotations.Internal; import dev.cel.common.types.CelType; -import dev.cel.common.types.CelTypeProvider; import dev.cel.common.types.DefaultTypeProvider; import dev.cel.common.types.StructTypeReference; import dev.cel.common.types.TypeType; import dev.cel.common.values.CelValueConverter; -import java.util.NoSuchElementException; import java.util.Optional; -import org.jspecify.annotations.Nullable; /** * {@code DescriptorTypeResolver} extends {@link TypeResolver} and additionally resolves incoming * protobuf message types using descriptors. * *

CEL Library Internals. Do Not Use. + * + * @deprecated This only exists to maintain support for the legacy runtime. Use {@link TypeResolver} + * instead. */ +@Deprecated @Immutable @Internal -public final class DescriptorTypeResolver extends TypeResolver { - - private final @Nullable CelTypeProvider typeProvider; +final class DescriptorTypeResolver extends TypeResolver { /** * Creates a {@code DescriptorTypeResolver}. All protobuf messages are resolved as a type of * {@link StructTypeReference}. - * - * @deprecated This only exists to maintain support for the legacy runtime. Use {@link - * #create(CelTypeProvider, CelValueConverter)} instead. */ - @Deprecated static DescriptorTypeResolver create(CelValueConverter celValueConverter) { - return new DescriptorTypeResolver(null, celValueConverter); - } - - /** - * Creates a {@code DescriptorTypeResolver}. If the protobuf message to be resolved can be found - * in the provided {@link CelTypeProvider}, the message is resolved as a concrete {@code - * ProtoMessageType} instead of a {@link StructTypeReference}. - */ - public static DescriptorTypeResolver create( - CelTypeProvider typeProvider, CelValueConverter celValueConverter) { - return new DescriptorTypeResolver(typeProvider, celValueConverter); + return new DescriptorTypeResolver(celValueConverter); } @Override @@ -73,25 +58,15 @@ public TypeType resolveObjectType(Object obj, CelType typeCheckedType) { } if (obj instanceof MessageOrBuilder) { - MessageOrBuilder msg = (MessageOrBuilder) obj; - String typeName = msg.getDescriptorForType().getFullName(); - if (typeProvider != null) { - return typeProvider - .findType(typeName) - .map(TypeType::create) - .orElseThrow(() -> new NoSuchElementException("Could not find type: " + typeName)); - } else { - return TypeType.create(StructTypeReference.create(typeName)); - } + return TypeType.create( + StructTypeReference.create( + ((MessageOrBuilder) obj).getDescriptorForType().getFullName())); } return super.resolveObjectType(obj, typeCheckedType); } - private DescriptorTypeResolver( - @Nullable CelTypeProvider typeProvider, CelValueConverter celValueConverter) { - super( - typeProvider != null ? typeProvider : DefaultTypeProvider.getInstance(), celValueConverter); - this.typeProvider = typeProvider; + private DescriptorTypeResolver(CelValueConverter celValueConverter) { + super(DefaultTypeProvider.getInstance(), celValueConverter); } } diff --git a/runtime/src/main/java/dev/cel/runtime/standard/BUILD.bazel b/runtime/src/main/java/dev/cel/runtime/standard/BUILD.bazel index e801158c2..5a40dda79 100644 --- a/runtime/src/main/java/dev/cel/runtime/standard/BUILD.bazel +++ b/runtime/src/main/java/dev/cel/runtime/standard/BUILD.bazel @@ -1418,7 +1418,6 @@ java_library( "//runtime:type_resolver", "@maven//:com_google_errorprone_error_prone_annotations", "@maven//:com_google_guava_guava", - "@maven//:org_jspecify_jspecify", ], ) @@ -1438,7 +1437,6 @@ cel_android_library( "//runtime:runtime_equality_android", "//runtime:type_resolver_android", "@maven//:com_google_errorprone_error_prone_annotations", - "@maven//:org_jspecify_jspecify", "@maven_android//:com_google_guava_guava", ], ) diff --git a/runtime/src/main/java/dev/cel/runtime/standard/TypeFunction.java b/runtime/src/main/java/dev/cel/runtime/standard/TypeFunction.java index fae5489e1..b4a8f764f 100644 --- a/runtime/src/main/java/dev/cel/runtime/standard/TypeFunction.java +++ b/runtime/src/main/java/dev/cel/runtime/standard/TypeFunction.java @@ -14,8 +14,6 @@ package dev.cel.runtime.standard; -import static com.google.common.base.Preconditions.checkNotNull; - import com.google.common.collect.ImmutableSet; import com.google.errorprone.annotations.Immutable; import dev.cel.common.CelOptions; @@ -27,15 +25,12 @@ import dev.cel.runtime.RuntimeEquality; import dev.cel.runtime.TypeResolver; import java.util.Arrays; -import org.jspecify.annotations.Nullable; /** Standard function for the {@code type} function. */ @Immutable public final class TypeFunction extends CelStandardFunction { private static final TypeFunction ALL_OVERLOADS = create(TypeOverload.values()); - private final @Nullable TypeResolver typeResolver; - public static TypeFunction create() { return ALL_OVERLOADS; } @@ -45,11 +40,7 @@ public static TypeFunction create(TypeFunction.TypeOverload... overloads) { } public static TypeFunction create(Iterable overloads) { - return new TypeFunction(ImmutableSet.copyOf(overloads), /* typeResolver= */ null); - } - - public static TypeFunction create(TypeResolver typeResolver) { - return new TypeFunction(ImmutableSet.copyOf(TypeOverload.values()), checkNotNull(typeResolver)); + return new TypeFunction(ImmutableSet.copyOf(overloads)); } /** Overloads for the standard {@code type} function. */ @@ -67,22 +58,13 @@ public CelFunctionBinding newFunctionBinding( } } - @Override - public ImmutableSet newFunctionBindings( - CelOptions celOptions, RuntimeEquality runtimeEquality) { - return newFunctionBindings(checkNotNull(typeResolver)); - } - @Override public ImmutableSet newFunctionBindings( CelOptions celOptions, RuntimeEquality runtimeEquality, CelTypeProvider celTypeProvider, CelValueConverter celValueConverter) { - return newFunctionBindings(TypeResolver.create(celTypeProvider, celValueConverter)); - } - - private static ImmutableSet newFunctionBindings(TypeResolver typeResolver) { + TypeResolver typeResolver = TypeResolver.create(celTypeProvider, celValueConverter); CelFunctionBinding binding = CelFunctionBinding.from( "type", @@ -92,9 +74,7 @@ private static ImmutableSet newFunctionBindings(TypeResolver return CelFunctionBinding.fromOverloads("type", binding); } - private TypeFunction( - ImmutableSet overloads, @Nullable TypeResolver typeResolver) { + private TypeFunction(ImmutableSet overloads) { super("type", overloads); - this.typeResolver = typeResolver; } } \ No newline at end of file diff --git a/runtime/src/test/java/dev/cel/runtime/planner/BUILD.bazel b/runtime/src/test/java/dev/cel/runtime/planner/BUILD.bazel index 886937527..e883bfde8 100644 --- a/runtime/src/test/java/dev/cel/runtime/planner/BUILD.bazel +++ b/runtime/src/test/java/dev/cel/runtime/planner/BUILD.bazel @@ -50,7 +50,6 @@ java_library( "//parser:macro", "//runtime", "//runtime:accumulated_unknowns", - "//runtime:descriptor_type_resolver", "//runtime:dispatcher", "//runtime:function_binding", "//runtime:function_resolver", diff --git a/runtime/src/test/java/dev/cel/runtime/planner/ProgramPlannerTest.java b/runtime/src/test/java/dev/cel/runtime/planner/ProgramPlannerTest.java index dbe0a2f1d..f643f5c44 100644 --- a/runtime/src/test/java/dev/cel/runtime/planner/ProgramPlannerTest.java +++ b/runtime/src/test/java/dev/cel/runtime/planner/ProgramPlannerTest.java @@ -87,7 +87,6 @@ import dev.cel.runtime.CelStandardFunctions.StandardFunction; import dev.cel.runtime.CelUnknownSet; import dev.cel.runtime.DefaultDispatcher; -import dev.cel.runtime.DescriptorTypeResolver; import dev.cel.runtime.InternalCelFunctionBinding; import dev.cel.runtime.PartialVars; import dev.cel.runtime.Program; @@ -246,11 +245,10 @@ private static DefaultDispatcher newDispatcher(CelOptions celOptions) { addBindingsToDispatcher( builder, stdFunctions.newFunctionBindings(RUNTIME_EQUALITY, celOptions)); - TypeFunction typeFunction = - TypeFunction.create( - DescriptorTypeResolver.create(TYPE_PROVIDER, CelValueConverter.getDefaultInstance())); addBindingsToDispatcher( - builder, typeFunction.newFunctionBindings(celOptions, RUNTIME_EQUALITY)); + builder, + TypeFunction.create() + .newFunctionBindings(celOptions, RUNTIME_EQUALITY, TYPE_PROVIDER, CEL_VALUE_CONVERTER)); addBindingsToDispatcher( builder, CelFunctionBinding.fromOverloads(