Skip to content

Draft: Protolite evaluation over wire format #651

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 25 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
64e0f9a
Internal Changes
l46kok Jan 2, 2025
79b3875
Macos FIX
l46kok Mar 27, 2025
138b5f6
Specify runtime_deps on cel_lite_descriptor_generator to prevent it f…
l46kok Mar 27, 2025
1f92fc6
Remove superflous CelOptions propagation in CelValue related adapters
l46kok Mar 27, 2025
b8b46f9
Accept set of descriptors on ProtoMessageLiteValueProvider
l46kok Mar 27, 2025
cb92110
Message selection working with lite runtime with reflection approach
l46kok Mar 27, 2025
2cdb928
Remove class name lookups from all lite descriptors
l46kok Mar 31, 2025
137d6f4
Refactor throw invalid field selection
l46kok Mar 31, 2025
c38da7a
Replace with CelLiteDescriptorPool
l46kok Mar 31, 2025
95071fd
Remove references to class names
l46kok Mar 31, 2025
abd84fd
Reading from wire working for primitives and wrappers
l46kok Apr 1, 2025
7877382
Change WellKnownProto lookup to be optional
l46kok Apr 2, 2025
901331f
Handle wrappers more generally by accepting a msg builder
l46kok Apr 2, 2025
0a6b343
Memoize ProtoMessageLiteValue to avoid recomputing field values
l46kok Apr 2, 2025
5310fcb
Read repeated fields
l46kok Apr 2, 2025
356623e
Read maps
l46kok Apr 3, 2025
7eb771d
Default values for enum, repeated and map fields
l46kok Apr 3, 2025
72fa253
Remove guard on new builder
l46kok Apr 3, 2025
edac09a
Add timestamp/duration wkt handling
l46kok Apr 4, 2025
6d858fe
Add test cases for json
l46kok Apr 4, 2025
7f0a71e
Include message lite builders to lite descriptors
l46kok Apr 4, 2025
d96943d
Support empty message creation
l46kok Apr 4, 2025
fbed5fb
Codegen metadata
l46kok Apr 4, 2025
853b77c
Remove any tests for now
l46kok Apr 11, 2025
40b65d0
Fix presence test interpreter test. Exclude non passing ones
l46kok Apr 11, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .bazelrc
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,7 @@ build --java_language_version=11

# Hide Java 8 deprecation warnings.
common --javacopt=-Xlint:-options

# MacOS Fix https://github.com/protocolbuffers/protobuf/issues/16944
build --host_cxxopt=-std=c++14
build --cxxopt=-std=c++14
2 changes: 1 addition & 1 deletion BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ java_package_configuration(
"-Xep:ProtoFieldPreconditionsCheckNotNull:ERROR",
"-Xep:ProtocolBufferOrdinal:ERROR",
"-Xep:ReferenceEquality:ERROR",
"-Xep:RemoveUnusedImports:ERROR",
# "-Xep:RemoveUnusedImports:ERROR",
"-Xep:RequiredModifiers:ERROR",
"-Xep:ShortCircuitBoolean:ERROR",
"-Xep:SimpleDateFormatConstant:ERROR",
Expand Down
4 changes: 2 additions & 2 deletions WORKSPACE
Original file line number Diff line number Diff line change
Expand Up @@ -242,11 +242,11 @@ http_archive(
)

# cel-spec api/expr canonical protos
CEL_SPEC_VERSION = "0.20.0"
CEL_SPEC_VERSION = "0.22.1"

http_archive(
name = "cel_spec",
sha256 = "9f4acb83116f68af8a6b6acf700561a22a1bd8a9ad2f49bf642b7f9b8f285043",
sha256 = "1f1ad32bce5d31cf82e9c8f40685b1902de3ab07c78403601e7a43c3fb4de9a6",
strip_prefix = "cel-spec-" + CEL_SPEC_VERSION,
urls = [
"https://github.com/google/cel-spec/archive/" +
Expand Down
1 change: 1 addition & 0 deletions bundle/src/test/java/dev/cel/bundle/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ java_library(
"@maven//:com_google_truth_extensions_truth_proto_extension",
"@maven//:junit_junit",
"@maven//:org_jspecify_jspecify",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand Down
1 change: 0 additions & 1 deletion bundle/src/test/java/dev/cel/bundle/CelImplTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -320,7 +320,6 @@ public void compile_customTypesWithAliasingCombinedProviders() throws Exception

@Test
public void compile_customTypesWithAliasingSelfContainedProvider() throws Exception {

// The custom type provider sets up an alias from "Condition" to "google.type.Expr".
TypeProvider customTypeProvider =
aliasingProvider(
Expand Down
1 change: 1 addition & 0 deletions codelab/src/main/codelab/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,6 @@ java_library(
"@maven//:com_google_guava_guava", # unuseddeps: keep
"@maven//:com_google_protobuf_protobuf_java", # unuseddeps: keep
"@maven//:com_google_protobuf_protobuf_java_util", # unuseddeps: keep
"@maven_android//:com_google_protobuf_protobuf_javalite", # unuseddeps: keep
],
)
1 change: 1 addition & 0 deletions codelab/src/main/codelab/solutions/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -40,5 +40,6 @@ java_library(
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:com_google_protobuf_protobuf_java_util",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)
37 changes: 36 additions & 1 deletion common/internal/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,11 @@ java_library(
exports = ["//common/src/main/java/dev/cel/common/internal:well_known_proto"],
)

cel_android_library(
name = "well_known_proto_android",
exports = ["//common/src/main/java/dev/cel/common/internal:well_known_proto_android"],
)

java_library(
name = "proto_message_factory",
exports = ["//common/src/main/java/dev/cel/common/internal:proto_message_factory"],
Expand All @@ -87,6 +92,26 @@ java_library(
exports = ["//common/src/main/java/dev/cel/common/internal:cel_descriptor_pools"],
)

java_library(
name = "cel_lite_descriptor_pool",
exports = ["//common/src/main/java/dev/cel/common/internal:cel_lite_descriptor_pool"],
)

cel_android_library(
name = "cel_lite_descriptor_pool_android",
exports = ["//common/src/main/java/dev/cel/common/internal:cel_lite_descriptor_pool_android"],
)

java_library(
name = "default_lite_descriptor_pool",
exports = ["//common/src/main/java/dev/cel/common/internal:default_lite_descriptor_pool"],
)

cel_android_library(
name = "default_lite_descriptor_pool_android",
exports = ["//common/src/main/java/dev/cel/common/internal:default_lite_descriptor_pool_android"],
)

java_library(
name = "safe_string_formatter",
# used_by_android
Expand All @@ -95,6 +120,16 @@ java_library(

cel_android_library(
name = "internal_android",
visibility = ["//:android_allow_list"],
exports = ["//common/src/main/java/dev/cel/common/internal:internal_android"],
)

java_library(
name = "proto_java_qualified_names",
exports = ["//common/src/main/java/dev/cel/common/internal:proto_java_qualified_names"],
)

java_library(
name = "reflection_util",
# used_by_android
exports = ["//common/src/main/java/dev/cel/common/internal:reflection_util"],
)
1 change: 1 addition & 0 deletions common/src/main/java/dev/cel/common/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -208,6 +208,7 @@ java_library(
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:com_google_protobuf_protobuf_java_util",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand Down
4 changes: 2 additions & 2 deletions common/src/main/java/dev/cel/common/ast/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ java_library(
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:org_jspecify_jspecify",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand Down Expand Up @@ -114,7 +115,7 @@ java_library(
":ast",
"//common/annotations",
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand All @@ -138,7 +139,6 @@ cel_android_library(
"//:auto_value",
"//common/annotations",
"@maven//:com_google_errorprone_error_prone_annotations",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:org_jspecify_jspecify",
"@maven_android//:com_google_guava_guava",
"@maven_android//:com_google_protobuf_protobuf_javalite",
Expand Down
79 changes: 77 additions & 2 deletions common/src/main/java/dev/cel/common/internal/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ java_library(
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:org_antlr_antlr4_runtime",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand All @@ -61,7 +62,6 @@ cel_android_library(
"//common/ast:ast_android",
"@maven//:com_google_errorprone_error_prone_annotations",
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:org_antlr_antlr4_runtime",
"@maven_android//:com_google_guava_guava",
"@maven_android//:com_google_protobuf_protobuf_javalite",
Expand Down Expand Up @@ -140,6 +140,7 @@ java_library(
":proto_java_qualified_names",
"//common/annotations",
"@maven//:com_google_protobuf_protobuf_java",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand All @@ -152,7 +153,7 @@ java_library(
":reflection_util",
"//common/annotations",
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand All @@ -174,6 +175,7 @@ java_library(
"@maven//:com_google_errorprone_error_prone_annotations",
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand All @@ -191,6 +193,7 @@ java_library(
"@maven//:com_google_errorprone_error_prone_annotations",
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand All @@ -207,6 +210,7 @@ java_library(
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
"@maven//:org_jspecify_jspecify",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

Expand Down Expand Up @@ -249,6 +253,19 @@ java_library(
],
)

cel_android_library(
name = "well_known_proto_android",
srcs = ["WellKnownProto.java"],
tags = [
],
deps = [
"//common/annotations",
"@maven//:org_jspecify_jspecify",
"@maven_android//:com_google_guava_guava",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

java_library(
name = "default_message_factory",
srcs = ["DefaultMessageFactory.java"],
Expand Down Expand Up @@ -291,6 +308,62 @@ java_library(
],
)

java_library(
name = "cel_lite_descriptor_pool",
srcs = ["CelLiteDescriptorPool.java"],
tags = [
],
deps = [
"//protobuf:cel_lite_descriptor",
"@maven//:com_google_errorprone_error_prone_annotations",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

cel_android_library(
name = "cel_lite_descriptor_pool_android",
srcs = ["CelLiteDescriptorPool.java"],
tags = [
],
deps = [
"//protobuf:cel_lite_descriptor",
"@maven//:com_google_errorprone_error_prone_annotations",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

java_library(
name = "default_lite_descriptor_pool",
srcs = ["DefaultLiteDescriptorPool.java"],
tags = [
],
deps = [
":cel_lite_descriptor_pool",
"//common/annotations",
"//common/internal:well_known_proto",
"//protobuf:cel_lite_descriptor",
"@maven//:com_google_errorprone_error_prone_annotations",
"@maven//:com_google_guava_guava",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

cel_android_library(
name = "default_lite_descriptor_pool_android",
srcs = ["DefaultLiteDescriptorPool.java"],
tags = [
],
deps = [
":cel_lite_descriptor_pool_android",
"//common/annotations",
"//common/internal:well_known_proto_android",
"//protobuf:cel_lite_descriptor",
"@maven//:com_google_errorprone_error_prone_annotations",
"@maven_android//:com_google_guava_guava",
"@maven_android//:com_google_protobuf_protobuf_javalite",
],
)

java_library(
name = "safe_string_formatter",
srcs = ["SafeStringFormatter.java"],
Expand All @@ -309,6 +382,7 @@ java_library(
tags = [
],
deps = [
"//common/annotations",
"@maven//:com_google_guava_guava",
"@maven//:com_google_protobuf_protobuf_java",
],
Expand All @@ -317,6 +391,7 @@ java_library(
java_library(
name = "reflection_util",
srcs = ["ReflectionUtil.java"],
# used_by_android
deps = [
"//common/annotations",
],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
// Copyright 2025 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.common.internal;

import com.google.errorprone.annotations.Immutable;
import dev.cel.protobuf.CelLiteDescriptor.MessageLiteDescriptor;
import java.util.Optional;

/** TODO: Replace with CelLiteDescriptor */
@Immutable
public interface CelLiteDescriptorPool {
Optional<MessageLiteDescriptor> findDescriptor(String protoTypeName);
MessageLiteDescriptor getDescriptorOrThrow(String protoTypeName);
}
Loading
Loading