int size = message.getRepeatedFieldCount(fieldDescriptor); for (int index=0; index<size; index++) { Object repeatedField = message.getRepeatedField(fieldDescriptor, index);
@Override @Nullable public <M extends Message> Boolean evalMessage(@Nonnull FDBRecordStoreBase<M> store, @Nonnull EvaluationContext context, @Nullable FDBRecord<M> record, @Nullable Message message) { if (message == null) { return null; } final int count = message.getRepeatedFieldCount(findFieldDescriptor(message)); if (isEmpty) { return (count == 0); } else { return (count > 0); } }
int sizeBeforeMerge = configBuilder.getRepeatedFieldCount(fieldInLocationsToMerge) - messageToMergeForm.getRepeatedFieldCount(fieldInLocationsToMerge); keyToMerge = new LocationKey(keyToMerge.field, sizeBeforeMerge + (int) keyToMerge.elementKey);
int sizeBeforeMerge = configBuilder.getRepeatedFieldCount(fieldInLocationsToMerge) - messageToMergeForm.getRepeatedFieldCount(fieldInLocationsToMerge); keyToMerge = new LocationKey(keyToMerge.field, sizeBeforeMerge + (int) keyToMerge.elementKey);
/** * Retrieves and converts Protobuf fields from a Message. * <p> * If the field in the {@link com.google.protobuf.Descriptors.Descriptor} exists in the {@link Message}, the value is * retrieved and converted using {@link #getFieldValue(Descriptors.FieldDescriptor, Object, DataType)}. * Otherwise, the field value is {@code null}. * The extraction honors the order of the {@code Descriptor}. * * @param dsc the Protobuf Descriptor with all fields * @param msg the Message with the current field values * @param schema the Dataset schema derived from the Descriptor * @return a list of converted values */ public static List<Object> buildRowValues(Descriptors.Descriptor dsc, Message msg, StructType schema) { List<Object> values = new ArrayList<>(); Object val; for (Descriptors.FieldDescriptor fd : dsc.getFields()) { if ( (!fd.isRepeated() && msg.hasField(fd)) || (fd.isRepeated() && msg.getRepeatedFieldCount(fd) > 0) ) { val = getFieldValue(fd, msg.getField(fd), schema.apply(fd.getName()).dataType()); } else { LOG.trace("FieldDescriptor[{}] => not found", fd.getFullName()); val = null; } values.add(val); } return values; }
@Nonnull @Override public <M extends Message> List<Key.Evaluated> evaluateFunction(@Nullable FDBRecord<M> record, @Nullable Message message, @Nonnull Key.Evaluated arguments) { if (message == null) { return Collections.emptyList(); } List<Key.Evaluated> keys = new ArrayList<>(); Descriptors.Descriptor descriptor = message.getDescriptorForType(); Descriptors.FieldDescriptor strField = descriptor.findFieldByNumber(TypesRecord.STR_VALUE_FIELD_NUMBER); Descriptors.FieldDescriptor strListField = descriptor.findFieldByNumber(TypesRecord.STR_LIST_VALUE_FIELD_NUMBER); if (message.hasField(strField)) { keys.add(toKey((String) message.getField(strField))); } final int len = message.getRepeatedFieldCount(strListField); for (int i = 0; i < len; i++) { keys.add(toKey((String) message.getRepeatedField(strListField, i))); } return keys; }
if (message.getRepeatedFieldCount(fieldDescriptor) > 0) { values = (List<Object>)message.getField(fieldDescriptor); } else {