Class ProtoAdapter
- java.lang.Object
-
- dev.cel.common.internal.ProtoAdapter
-
@Immutable @CheckReturnValue @Internal public final class ProtoAdapter extends java.lang.Object
TheProtoAdapterutilities handle conversion between native Java objects which represent CEL values and well-known protobuf counterparts.How a protobuf is adapted can depend on both the set of
Descriptorvalues as well as on feature-flags. Whereas in the past such conversions were performed as static method calls, this class represents an evolving trend toward conditional conversion.CEL Library Internals. Do Not Use.
-
-
Field Summary
Fields Modifier and Type Field Description static BidiConverter<java.lang.Number,java.lang.Number>DOUBLE_CONVERTERDouble converter handles bidirectional conversions between float32 <-> float64 values.static BidiConverter<java.lang.Number,java.lang.Number>INT_CONVERTERInt converter handles bidirectional conversions between int32 <-> int64 values.static BidiConverter<java.lang.Number,java.lang.Number>SIGNED_UINT32_CONVERTERSigned uint converter handles bidirectional conversions between uint32 <-> uint64 values.static BidiConverter<java.lang.Number,java.lang.Number>UNSIGNED_UINT32_CONVERTERUnigned uint converter handles bidirectional conversions between uint32 <-> uint64 values.static BidiConverter<java.lang.Number,java.lang.Number>UNSIGNED_UINT64_CONVERTERUnsigned uint64 converter which adapts from alongvalue on the wire to anUnsignedLong.
-
Constructor Summary
Constructors Constructor Description ProtoAdapter(DynamicProto dynamicProto, boolean enableUnsignedLongs)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Optional<java.lang.Object>adaptFieldToValue(Descriptors.FieldDescriptor fieldDescriptor, java.lang.Object fieldValue)java.lang.ObjectadaptProtoToValue(MessageOrBuilder proto)Adapts a protobufMessageOrBuilderinto a Java object understood by CEL.java.util.Optional<java.lang.Object>adaptValueToFieldType(Descriptors.FieldDescriptor fieldDescriptor, java.lang.Object fieldValue)java.util.Optional<Message>adaptValueToProto(java.lang.Object value, java.lang.String protoTypeName)Adapt the Java objectvalueto the given protobufprotoTypeNameif possible.
-
-
-
Field Detail
-
INT_CONVERTER
public static final BidiConverter<java.lang.Number,java.lang.Number> INT_CONVERTER
Int converter handles bidirectional conversions between int32 <-> int64 values.Note: Unlike the
RuntimeHelpers#INT32_TO_INT64andRuntimeHelpers#INT64_TO_INT32converter objects, the converter takes aNumberas input and produces aNumberas output in an effort to make the coverters more tolerant of Java native values which may enter the evaluation viaDYNinputs.
-
SIGNED_UINT32_CONVERTER
public static final BidiConverter<java.lang.Number,java.lang.Number> SIGNED_UINT32_CONVERTER
Signed uint converter handles bidirectional conversions between uint32 <-> uint64 values.Note: Unlike the
RuntimeHelpers#UINT32_TO_UINT64andRuntimeHelpers#UINT64_TO_UINT32converter objects, the converter takes aNumberas input and produces aNumberas output in an effort to make the coverters more tolerant of Java native values which may enter the evaluation viaDYNinputs.If the long being converted to a uint exceeds 32 bits, an
IllegalArgumentExceptionwill be thrown.
-
UNSIGNED_UINT32_CONVERTER
public static final BidiConverter<java.lang.Number,java.lang.Number> UNSIGNED_UINT32_CONVERTER
Unigned uint converter handles bidirectional conversions between uint32 <-> uint64 values.Note: Unlike the
RuntimeHelpers#UINT32_TO_UINT64andRuntimeHelpers#UINT64_TO_UINT32converter objects, the converter takes aNumberas input and produces aNumberas output in an effort to make the coverters more tolerant of Java native values which may enter the evaluation viaDYNinputs.If the long being converted to a uint exceeds 32 bits, an
IllegalArgumentExceptionwill be thrown.
-
UNSIGNED_UINT64_CONVERTER
public static final BidiConverter<java.lang.Number,java.lang.Number> UNSIGNED_UINT64_CONVERTER
Unsigned uint64 converter which adapts from alongvalue on the wire to anUnsignedLong.
-
DOUBLE_CONVERTER
public static final BidiConverter<java.lang.Number,java.lang.Number> DOUBLE_CONVERTER
Double converter handles bidirectional conversions between float32 <-> float64 values.Note: Unlike the
RuntimeHelpers#FLOAT_TO_DOUBLEandRuntimeHelpers#DOUBLE_TO_FLOATconverter objects, the converter takes aNumberas input and produces aNumberas output in an effort to make the coverters more tolerant of Java native values which may enter the evaluation viaDYNinputs.
-
-
Constructor Detail
-
ProtoAdapter
public ProtoAdapter(DynamicProto dynamicProto, boolean enableUnsignedLongs)
-
-
Method Detail
-
adaptProtoToValue
public java.lang.Object adaptProtoToValue(MessageOrBuilder proto)
Adapts a protobufMessageOrBuilderinto a Java object understood by CEL.In some instances the input message is also the output value.
-
adaptFieldToValue
public java.util.Optional<java.lang.Object> adaptFieldToValue(Descriptors.FieldDescriptor fieldDescriptor, java.lang.Object fieldValue)
-
adaptValueToFieldType
public java.util.Optional<java.lang.Object> adaptValueToFieldType(Descriptors.FieldDescriptor fieldDescriptor, java.lang.Object fieldValue)
-
adaptValueToProto
public java.util.Optional<Message> adaptValueToProto(java.lang.Object value, java.lang.String protoTypeName)
Adapt the Java objectvalueto the given protobufprotoTypeNameif possible.If the Java value can be represented as a proto
Message, then a conversion will be performed. In some cases, the inputvaluewill be aMessage, but theprotoTypeNamewill indicate an alternative packaging of the value which needs to be considered, such as a packing angoogle.protobuf.StringValueinto aAnyvalue.
-
-