Skip to content

Commit

Permalink
Create CelProtoMessageTypes for handling proto based types that requi…
Browse files Browse the repository at this point in the history
…re a full protobuf dependency

PiperOrigin-RevId: 720645313
  • Loading branch information
l46kok authored and copybara-github committed Jan 28, 2025
1 parent 1ac9c4b commit 9819ef3
Show file tree
Hide file tree
Showing 6 changed files with 90 additions and 1 deletion.
12 changes: 12 additions & 0 deletions common/src/main/java/dev/cel/common/types/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,18 @@ java_library(
],
)

java_library(
name = "cel_proto_message_types",
srcs = ["CelProtoMessageTypes.java"],
tags = [
],
deps = [
"//common/types:cel_proto_types",
"@cel_spec//proto/cel/expr:expr_java_proto",
"@maven//:com_google_protobuf_protobuf_java",
],
)

java_library(
name = "cel_v1alpha1_types",
srcs = ["CelV1AlphaTypes.java"],
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// 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.types;

import dev.cel.expr.Type;
import com.google.protobuf.Descriptors.Descriptor;

/**
* Utility class for working with {@link Type} that require a full protobuf dependency (i.e:
* descriptors).
*/
public final class CelProtoMessageTypes {

/** Create a message {@code Type} for {@code Descriptor}. */
public static Type createMessage(Descriptor descriptor) {
return CelProtoTypes.createMessage(descriptor.getFullName());
}

private CelProtoMessageTypes() {}
}
5 changes: 4 additions & 1 deletion common/src/main/java/dev/cel/common/types/CelProtoTypes.java
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,10 @@ public static Type createMessage(String messageName) {
return Type.newBuilder().setMessageType(messageName).build();
}

/** Create a message {@code Type} for {@code Descriptor}. */
/**
* @deprecated Use {@link CelProtoMessageTypes#createMessage} instead.
*/
@Deprecated
public static Type createMessage(Descriptor descriptor) {
return createMessage(descriptor.getFullName());
}
Expand Down
1 change: 1 addition & 0 deletions common/src/test/java/dev/cel/common/types/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ java_library(
"//:java_truth",
"//common/types",
"//common/types:cel_internal_types",
"//common/types:cel_proto_message_types",
"//common/types:cel_proto_types",
"//common/types:cel_types",
"//common/types:message_type_provider",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// 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.types;

import static com.google.common.truth.Truth.assertThat;

import dev.cel.expr.Type;
import com.google.testing.junit.testparameterinjector.TestParameterInjector;
import dev.cel.expr.conformance.proto3.TestAllTypes;
import org.junit.Test;
import org.junit.runner.RunWith;

@RunWith(TestParameterInjector.class)
public final class CelProtoMessageTypesTest {

@Test
public void createMessage_fromDescriptor() {
Type type = CelProtoMessageTypes.createMessage(TestAllTypes.getDescriptor());

assertThat(type)
.isEqualTo(
Type.newBuilder().setMessageType(TestAllTypes.getDescriptor().getFullName()).build());
}
}
5 changes: 5 additions & 0 deletions common/types/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,11 @@ java_library(
exports = ["//common/src/main/java/dev/cel/common/types:cel_proto_types"],
)

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

java_library(
name = "cel_v1alpha1_types",
visibility = ["//visibility:public"],
Expand Down

0 comments on commit 9819ef3

Please sign in to comment.