Skip to content

Commit 87d3a4f

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

Some content is hidden

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

51 files changed

+441
-2654
lines changed

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

Lines changed: 1 addition & 30 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,11 +151,11 @@ 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",
@@ -191,7 +169,6 @@ cel_android_library(
191169
],
192170
deps = [
193171
":cel_byte_string",
194-
":cel_value_android",
195172
":values_android",
196173
"//common/annotations",
197174
"//common/internal:proto_time_utils_android",
@@ -209,7 +186,6 @@ java_library(
209186
],
210187
deps = [
211188
":base_proto_cel_value_converter",
212-
":cel_value",
213189
":values",
214190
"//:auto_value",
215191
"//common/annotations",
@@ -232,7 +208,6 @@ java_library(
232208
],
233209
deps = [
234210
":base_proto_message_value_provider",
235-
":cel_value",
236211
":proto_message_value",
237212
"//common:options",
238213
"//common/annotations",
@@ -254,7 +229,6 @@ java_library(
254229
],
255230
deps = [
256231
":base_proto_cel_value_converter",
257-
":cel_value",
258232
":values",
259233
"//:auto_value",
260234
"//common/annotations",
@@ -282,7 +256,6 @@ cel_android_library(
282256
],
283257
deps = [
284258
":base_proto_cel_value_converter_android",
285-
":cel_value_android",
286259
":values_android",
287260
"//:auto_value",
288261
"//common/annotations",
@@ -307,7 +280,6 @@ java_library(
307280
],
308281
deps = [
309282
":base_proto_message_value_provider",
310-
":cel_value",
311283
":proto_message_lite_value",
312284
"//common/annotations",
313285
"//common/internal:cel_lite_descriptor_pool",
@@ -327,7 +299,6 @@ cel_android_library(
327299
],
328300
deps = [
329301
":base_proto_message_value_provider_android",
330-
":cel_value_android",
331302
":proto_message_lite_value_android",
332303
"//common/annotations",
333304
"//common/internal:cel_lite_descriptor_pool_android",

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

Lines changed: 45 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +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;
29-
import com.google.protobuf.MessageLite;
33+
import com.google.protobuf.ListValue;
3034
import com.google.protobuf.MessageLiteOrBuilder;
3135
import com.google.protobuf.StringValue;
3236
import com.google.protobuf.Struct;
@@ -37,7 +41,6 @@
3741
import dev.cel.common.annotations.Internal;
3842
import dev.cel.common.internal.ProtoTimeUtils;
3943
import dev.cel.common.internal.WellKnownProto;
40-
import java.util.Optional;
4144

4245
/**
4346
* {@code BaseProtoCelValueConverter} contains the common logic for converting between native Java
@@ -51,77 +54,68 @@
5154
@Internal
5255
public abstract class BaseProtoCelValueConverter extends CelValueConverter {
5356

54-
public abstract CelValue fromProtoMessageToCelValue(MessageLite msg);
55-
5657
/** {@inheritDoc} Protobuf semantics take precedence for conversion. */
5758
@Override
58-
public CelValue fromJavaObjectToCelValue(Object value) {
59+
public Object toRuntimeValue(Object value) {
5960
Preconditions.checkNotNull(value);
6061

61-
Optional<WellKnownProto> wellKnownProto = WellKnownProto.getByClass(value.getClass());
62-
if (wellKnownProto.isPresent()) {
63-
return fromWellKnownProtoToCelValue((MessageLiteOrBuilder) value, wellKnownProto.get());
64-
}
65-
6662
if (value instanceof ByteString) {
67-
return BytesValue.create(CelByteString.of(((ByteString) value).toByteArray()));
63+
return CelByteString.of(((ByteString) value).toByteArray());
6864
} else if (value instanceof com.google.protobuf.NullValue) {
6965
return NullValue.NULL_VALUE;
7066
}
7167

72-
return super.fromJavaObjectToCelValue(value);
68+
return super.toRuntimeValue(value);
7369
}
7470

75-
protected CelValue fromWellKnownProtoToCelValue(
76-
MessageLiteOrBuilder message, WellKnownProto wellKnownProto) {
71+
protected Object fromWellKnownProto(MessageLiteOrBuilder message, WellKnownProto wellKnownProto) {
7772
switch (wellKnownProto) {
7873
case JSON_VALUE:
79-
return adaptJsonValueToCelValue((Value) message);
74+
return adaptJsonValue((Value) message);
8075
case JSON_STRUCT_VALUE:
81-
return adaptJsonStructToCelValue((Struct) message);
76+
return adaptJsonStruct((Struct) message);
8277
case JSON_LIST_VALUE:
83-
return adaptJsonListToCelValue((com.google.protobuf.ListValue) message);
78+
return adaptJsonList((ListValue) message);
8479
case DURATION:
85-
return DurationValue.create(ProtoTimeUtils.toJavaDuration((Duration) message));
80+
return ProtoTimeUtils.toJavaDuration((Duration) message);
8681
case TIMESTAMP:
87-
return TimestampValue.create(ProtoTimeUtils.toJavaInstant((Timestamp) message));
82+
return ProtoTimeUtils.toJavaInstant((Timestamp) message);
8883
case BOOL_VALUE:
89-
return fromJavaPrimitiveToCelValue(((BoolValue) message).getValue());
84+
return normalizePrimitive(((BoolValue) message).getValue());
9085
case BYTES_VALUE:
91-
return fromJavaPrimitiveToCelValue(
92-
((com.google.protobuf.BytesValue) message).getValue().toByteArray());
86+
return normalizePrimitive(((BytesValue) message).getValue().toByteArray());
9387
case DOUBLE_VALUE:
94-
return fromJavaPrimitiveToCelValue(((DoubleValue) message).getValue());
88+
return normalizePrimitive(((DoubleValue) message).getValue());
9589
case FLOAT_VALUE:
96-
return fromJavaPrimitiveToCelValue(((FloatValue) message).getValue());
90+
return normalizePrimitive(((FloatValue) message).getValue());
9791
case INT32_VALUE:
98-
return fromJavaPrimitiveToCelValue(((Int32Value) message).getValue());
92+
return normalizePrimitive(((Int32Value) message).getValue());
9993
case INT64_VALUE:
100-
return fromJavaPrimitiveToCelValue(((Int64Value) message).getValue());
94+
return normalizePrimitive(((Int64Value) message).getValue());
10195
case STRING_VALUE:
102-
return fromJavaPrimitiveToCelValue(((StringValue) message).getValue());
96+
return normalizePrimitive(((StringValue) message).getValue());
10397
case UINT32_VALUE:
104-
return UintValue.create(((UInt32Value) message).getValue());
98+
return UnsignedLong.valueOf(((UInt32Value) message).getValue());
10599
case UINT64_VALUE:
106-
return UintValue.create(((UInt64Value) message).getValue());
100+
return UnsignedLong.fromLongBits(((UInt64Value) message).getValue());
107101
default:
108102
throw new UnsupportedOperationException(
109-
"Unsupported message to CelValue conversion - " + message);
103+
"Unsupported well known proto conversion - " + wellKnownProto);
110104
}
111105
}
112106

113-
private CelValue adaptJsonValueToCelValue(Value value) {
107+
private Object adaptJsonValue(Value value) {
114108
switch (value.getKindCase()) {
115109
case BOOL_VALUE:
116-
return fromJavaPrimitiveToCelValue(value.getBoolValue());
110+
return normalizePrimitive(value.getBoolValue());
117111
case NUMBER_VALUE:
118-
return fromJavaPrimitiveToCelValue(value.getNumberValue());
112+
return normalizePrimitive(value.getNumberValue());
119113
case STRING_VALUE:
120-
return fromJavaPrimitiveToCelValue(value.getStringValue());
114+
return normalizePrimitive(value.getStringValue());
121115
case LIST_VALUE:
122-
return adaptJsonListToCelValue(value.getListValue());
116+
return adaptJsonList(value.getListValue());
123117
case STRUCT_VALUE:
124-
return adaptJsonStructToCelValue(value.getStructValue());
118+
return adaptJsonStruct(value.getStructValue());
125119
case NULL_VALUE:
126120
case KIND_NOT_SET: // Fall-through is intended
127121
return NullValue.NULL_VALUE;
@@ -130,28 +124,23 @@ private CelValue adaptJsonValueToCelValue(Value value) {
130124
"Unsupported Json to CelValue conversion: " + value.getKindCase());
131125
}
132126

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()));
127+
private ImmutableList<Object> adaptJsonList(ListValue listValue) {
128+
return listValue.getValuesList().stream().map(this::adaptJsonValue).collect(toImmutableList());
138129
}
139130

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()))));
131+
private ImmutableMap<String, Object> adaptJsonStruct(Struct struct) {
132+
return struct.getFieldsMap().entrySet().stream()
133+
.collect(
134+
toImmutableMap(
135+
e -> {
136+
Object key = toRuntimeValue(e.getKey());
137+
if (!(key instanceof String)) {
138+
throw new IllegalStateException(
139+
"Expected a string type for the key, but instead got: " + key);
140+
}
141+
return (String) key;
142+
},
143+
e -> adaptJsonValue(e.getValue())));
155144
}
156145

157146
protected BaseProtoCelValueConverter() {}

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

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

0 commit comments

Comments
 (0)