Skip to content

Commit e4c8bc6

Browse files
l46kokcopybara-github
authored andcommitted
Remove primitives, list and map variants of CelValue
PiperOrigin-RevId: 833651450
1 parent 02ac761 commit e4c8bc6

53 files changed

Lines changed: 377 additions & 2568 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

common/src/main/java/dev/cel/common/values/BUILD.bazel

Lines changed: 3 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -12,27 +12,13 @@ package(
1212

1313
# keep sorted
1414
CEL_VALUES_SOURCES = [
15-
"BoolValue.java",
16-
"BytesValue.java",
1715
"CelValueConverter.java",
18-
"DoubleValue.java",
19-
"DurationValue.java",
20-
"EnumValue.java",
2116
"ErrorValue.java",
22-
"ImmutableListValue.java",
23-
"ImmutableMapValue.java",
24-
"IntValue.java",
25-
"ListValue.java",
26-
"MapValue.java",
2717
"NullValue.java",
2818
"OpaqueValue.java",
2919
"OptionalValue.java",
3020
"SelectableValue.java",
31-
"StringValue.java",
3221
"StructValue.java",
33-
"TimestampValue.java",
34-
"TypeValue.java",
35-
"UintValue.java",
3622
]
3723

3824
# keep sorted
@@ -71,7 +57,6 @@ java_library(
7157
tags = [
7258
],
7359
deps = [
74-
":cel_value",
7560
"@maven//:com_google_errorprone_error_prone_annotations",
7661
"@maven//:com_google_guava_guava",
7762
],
@@ -83,7 +68,6 @@ cel_android_library(
8368
tags = [
8469
],
8570
deps = [
86-
":cel_value_android",
8771
"@maven//:com_google_errorprone_error_prone_annotations",
8872
"@maven_android//:com_google_guava_guava",
8973
],
@@ -95,7 +79,6 @@ java_library(
9579
tags = [
9680
],
9781
deps = [
98-
"//common/values:cel_value",
9982
"//common/values:cel_value_provider",
10083
"@maven//:com_google_errorprone_error_prone_annotations",
10184
"@maven//:com_google_guava_guava",
@@ -108,7 +91,6 @@ cel_android_library(
10891
tags = [
10992
],
11093
deps = [
111-
":cel_value_android",
11294
"//common/values:cel_value_provider_android",
11395
"@maven//:com_google_errorprone_error_prone_annotations",
11496
"@maven_android//:com_google_guava_guava",
@@ -124,8 +106,6 @@ java_library(
124106
":cel_byte_string",
125107
":cel_value",
126108
"//:auto_value",
127-
"//common:error_codes",
128-
"//common:runtime_exception",
129109
"//common/annotations",
130110
"//common/types",
131111
"//common/types:type_providers",
@@ -144,8 +124,6 @@ cel_android_library(
144124
":cel_byte_string",
145125
":cel_value_android",
146126
"//:auto_value",
147-
"//common:error_codes",
148-
"//common:runtime_exception",
149127
"//common/annotations",
150128
"//common/types:type_providers_android",
151129
"//common/types:types_android",
@@ -173,14 +151,15 @@ java_library(
173151
],
174152
deps = [
175153
":cel_byte_string",
176-
":cel_value",
177154
":values",
178155
"//common/annotations",
179156
"//common/internal:proto_time_utils",
180157
"//common/internal:well_known_proto",
158+
"//common/values",
181159
"@maven//:com_google_errorprone_error_prone_annotations",
182160
"@maven//:com_google_guava_guava",
183161
"@maven//:com_google_protobuf_protobuf_java",
162+
"@maven_android//:com_google_protobuf_protobuf_javalite",
184163
],
185164
)
186165

@@ -191,7 +170,6 @@ cel_android_library(
191170
],
192171
deps = [
193172
":cel_byte_string",
194-
":cel_value_android",
195173
":values_android",
196174
"//common/annotations",
197175
"//common/internal:proto_time_utils_android",
@@ -209,7 +187,6 @@ java_library(
209187
],
210188
deps = [
211189
":base_proto_cel_value_converter",
212-
":cel_value",
213190
":values",
214191
"//:auto_value",
215192
"//common/annotations",
@@ -222,6 +199,7 @@ java_library(
222199
"@maven//:com_google_guava_guava",
223200
"@maven//:com_google_protobuf_protobuf_java",
224201
"@maven//:org_jspecify_jspecify",
202+
"@maven_android//:com_google_protobuf_protobuf_javalite",
225203
],
226204
)
227205

@@ -232,7 +210,6 @@ java_library(
232210
],
233211
deps = [
234212
":base_proto_message_value_provider",
235-
":cel_value",
236213
":proto_message_value",
237214
"//common:options",
238215
"//common/annotations",
@@ -254,7 +231,6 @@ java_library(
254231
],
255232
deps = [
256233
":base_proto_cel_value_converter",
257-
":cel_value",
258234
":values",
259235
"//:auto_value",
260236
"//common/annotations",
@@ -282,7 +258,6 @@ cel_android_library(
282258
],
283259
deps = [
284260
":base_proto_cel_value_converter_android",
285-
":cel_value_android",
286261
":values_android",
287262
"//:auto_value",
288263
"//common/annotations",

common/src/main/java/dev/cel/common/values/BaseProtoCelValueConverter.java

Lines changed: 39 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,19 @@
1818
import static com.google.common.collect.ImmutableMap.toImmutableMap;
1919

2020
import com.google.common.base.Preconditions;
21+
import com.google.common.collect.ImmutableList;
22+
import com.google.common.collect.ImmutableMap;
23+
import com.google.common.primitives.UnsignedLong;
2124
import com.google.errorprone.annotations.Immutable;
2225
import com.google.protobuf.BoolValue;
2326
import com.google.protobuf.ByteString;
27+
import com.google.protobuf.BytesValue;
2428
import com.google.protobuf.DoubleValue;
2529
import com.google.protobuf.Duration;
2630
import com.google.protobuf.FloatValue;
2731
import com.google.protobuf.Int32Value;
2832
import com.google.protobuf.Int64Value;
33+
import com.google.protobuf.ListValue;
2934
import com.google.protobuf.MessageLite;
3035
import com.google.protobuf.MessageLiteOrBuilder;
3136
import com.google.protobuf.StringValue;
@@ -37,7 +42,6 @@
3742
import dev.cel.common.annotations.Internal;
3843
import dev.cel.common.internal.ProtoTimeUtils;
3944
import dev.cel.common.internal.WellKnownProto;
40-
import java.util.Optional;
4145

4246
/**
4347
* {@code BaseProtoCelValueConverter} contains the common logic for converting between native Java
@@ -51,45 +55,41 @@
5155
@Internal
5256
public abstract class BaseProtoCelValueConverter extends CelValueConverter {
5357

54-
public abstract CelValue fromProtoMessageToCelValue(MessageLite msg);
58+
public abstract Object fromProtoMessageToCelValue(MessageLite msg);
5559

5660
/** {@inheritDoc} Protobuf semantics take precedence for conversion. */
5761
@Override
58-
public CelValue fromJavaObjectToCelValue(Object value) {
62+
public Object fromJavaObjectToCelValue(Object value) {
5963
Preconditions.checkNotNull(value);
6064

61-
Optional<WellKnownProto> wellKnownProto = WellKnownProto.getByClass(value.getClass());
62-
if (wellKnownProto.isPresent()) {
63-
return fromWellKnownProtoToCelValue((MessageLiteOrBuilder) value, wellKnownProto.get());
64-
}
65-
66-
if (value instanceof ByteString) {
67-
return BytesValue.create(CelByteString.of(((ByteString) value).toByteArray()));
65+
if (value instanceof MessageLite) {
66+
return fromProtoMessageToCelValue((MessageLite) value);
67+
} else if (value instanceof ByteString) {
68+
return CelByteString.of(((ByteString) value).toByteArray());
6869
} else if (value instanceof com.google.protobuf.NullValue) {
6970
return NullValue.NULL_VALUE;
7071
}
7172

7273
return super.fromJavaObjectToCelValue(value);
7374
}
7475

75-
protected CelValue fromWellKnownProtoToCelValue(
76+
protected Object fromWellKnownProtoToCelValue(
7677
MessageLiteOrBuilder message, WellKnownProto wellKnownProto) {
7778
switch (wellKnownProto) {
7879
case JSON_VALUE:
79-
return adaptJsonValueToCelValue((Value) message);
80+
return adaptJsonValue((Value) message);
8081
case JSON_STRUCT_VALUE:
81-
return adaptJsonStructToCelValue((Struct) message);
82+
return adaptJsonStruct((Struct) message);
8283
case JSON_LIST_VALUE:
83-
return adaptJsonListToCelValue((com.google.protobuf.ListValue) message);
84+
return adaptJsonList((ListValue) message);
8485
case DURATION:
85-
return DurationValue.create(ProtoTimeUtils.toJavaDuration((Duration) message));
86+
return ProtoTimeUtils.toJavaDuration((Duration) message);
8687
case TIMESTAMP:
87-
return TimestampValue.create(ProtoTimeUtils.toJavaInstant((Timestamp) message));
88+
return ProtoTimeUtils.toJavaInstant((Timestamp) message);
8889
case BOOL_VALUE:
8990
return fromJavaPrimitiveToCelValue(((BoolValue) message).getValue());
9091
case BYTES_VALUE:
91-
return fromJavaPrimitiveToCelValue(
92-
((com.google.protobuf.BytesValue) message).getValue().toByteArray());
92+
return fromJavaPrimitiveToCelValue(((BytesValue) message).getValue().toByteArray());
9393
case DOUBLE_VALUE:
9494
return fromJavaPrimitiveToCelValue(((DoubleValue) message).getValue());
9595
case FLOAT_VALUE:
@@ -101,16 +101,16 @@ protected CelValue fromWellKnownProtoToCelValue(
101101
case STRING_VALUE:
102102
return fromJavaPrimitiveToCelValue(((StringValue) message).getValue());
103103
case UINT32_VALUE:
104-
return UintValue.create(((UInt32Value) message).getValue());
104+
return UnsignedLong.valueOf(((UInt32Value) message).getValue());
105105
case UINT64_VALUE:
106-
return UintValue.create(((UInt64Value) message).getValue());
106+
return UnsignedLong.fromLongBits(((UInt64Value) message).getValue());
107107
default:
108108
throw new UnsupportedOperationException(
109-
"Unsupported message to CelValue conversion - " + message);
109+
"Unsupported well known proto conversion - " + wellKnownProto);
110110
}
111111
}
112112

113-
private CelValue adaptJsonValueToCelValue(Value value) {
113+
private Object adaptJsonValue(Value value) {
114114
switch (value.getKindCase()) {
115115
case BOOL_VALUE:
116116
return fromJavaPrimitiveToCelValue(value.getBoolValue());
@@ -119,9 +119,9 @@ private CelValue adaptJsonValueToCelValue(Value value) {
119119
case STRING_VALUE:
120120
return fromJavaPrimitiveToCelValue(value.getStringValue());
121121
case LIST_VALUE:
122-
return adaptJsonListToCelValue(value.getListValue());
122+
return adaptJsonList(value.getListValue());
123123
case STRUCT_VALUE:
124-
return adaptJsonStructToCelValue(value.getStructValue());
124+
return adaptJsonStruct(value.getStructValue());
125125
case NULL_VALUE:
126126
case KIND_NOT_SET: // Fall-through is intended
127127
return NullValue.NULL_VALUE;
@@ -130,28 +130,23 @@ private CelValue adaptJsonValueToCelValue(Value value) {
130130
"Unsupported Json to CelValue conversion: " + value.getKindCase());
131131
}
132132

133-
private ListValue<CelValue> adaptJsonListToCelValue(com.google.protobuf.ListValue listValue) {
134-
return ImmutableListValue.create(
135-
listValue.getValuesList().stream()
136-
.map(this::adaptJsonValueToCelValue)
137-
.collect(toImmutableList()));
133+
private ImmutableList<Object> adaptJsonList(ListValue listValue) {
134+
return listValue.getValuesList().stream().map(this::adaptJsonValue).collect(toImmutableList());
138135
}
139136

140-
private MapValue<dev.cel.common.values.StringValue, CelValue> adaptJsonStructToCelValue(
141-
Struct struct) {
142-
return ImmutableMapValue.create(
143-
struct.getFieldsMap().entrySet().stream()
144-
.collect(
145-
toImmutableMap(
146-
e -> {
147-
CelValue key = fromJavaObjectToCelValue(e.getKey());
148-
if (!(key instanceof dev.cel.common.values.StringValue)) {
149-
throw new IllegalStateException(
150-
"Expected a string type for the key, but instead got: " + key);
151-
}
152-
return (dev.cel.common.values.StringValue) key;
153-
},
154-
e -> adaptJsonValueToCelValue(e.getValue()))));
137+
private ImmutableMap<String, Object> adaptJsonStruct(Struct struct) {
138+
return struct.getFieldsMap().entrySet().stream()
139+
.collect(
140+
toImmutableMap(
141+
e -> {
142+
Object key = fromJavaObjectToCelValue(e.getKey());
143+
if (!(key instanceof String)) {
144+
throw new IllegalStateException(
145+
"Expected a string type for the key, but instead got: " + key);
146+
}
147+
return (String) key;
148+
},
149+
e -> adaptJsonValue(e.getValue())));
155150
}
156151

157152
protected BaseProtoCelValueConverter() {}

common/src/main/java/dev/cel/common/values/BoolValue.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

common/src/main/java/dev/cel/common/values/BytesValue.java

Lines changed: 0 additions & 43 deletions
This file was deleted.

0 commit comments

Comments
 (0)