/** * Recursively parses a TypedValue while it is an array. */ static Object parseArray(Common.TypedValue array) { List<Object> convertedArray = new ArrayList<>(array.getArrayValueCount()); for (Common.TypedValue arrayElement : array.getArrayValueList()) { if (Common.Rep.ARRAY == arrayElement.getType()) { // Recurse convertedArray.add(parseArray(arrayElement)); } else { // The component type of this array is a scalar. convertedArray.add(deserializeScalarValue(arrayElement)); } } return convertedArray; }
/** * Recursively parses a TypedValue while it is an array. */ static Object parseArray(Common.TypedValue array) { List<Object> convertedArray = new ArrayList<>(array.getArrayValueCount()); for (Common.TypedValue arrayElement : array.getArrayValueList()) { if (Common.Rep.ARRAY == arrayElement.getType()) { // Recurse convertedArray.add(parseArray(arrayElement)); } else { // The component type of this array is a scalar. convertedArray.add(deserializeScalarValue(arrayElement)); } } return convertedArray; }
/** * Parses the value for a ColumnValue using the separated array and scalar attributes. * * @param column The protobuf ColumnValue object * @return The parse value for this column */ static Object parseColumn(Common.ColumnValue column) { // Verify that we have one or the other (scalar or array) validateColumnValue(column); if (!column.hasField(SCALAR_VALUE_DESCRIPTOR)) { // The column in this row is an Array (has multiple values) List<Object> array = new ArrayList<>(column.getArrayValueCount()); for (Common.TypedValue arrayValue : column.getArrayValueList()) { // Duplicative because of the ColumnValue/TypedValue difference. if (Common.Rep.ARRAY == arrayValue.getType()) { // Each element in this Array is an Array. array.add(parseArray(arrayValue)); } else { // The array element is a scalar. array.add(deserializeScalarValue(arrayValue)); } } return array; } else { // Scalar return deserializeScalarValue(column.getScalarValue()); } }
/** * Parses the value for a ColumnValue using the separated array and scalar attributes. * * @param column The protobuf ColumnValue object * @return The parse value for this column */ static Object parseColumn(Common.ColumnValue column) { // Verify that we have one or the other (scalar or array) validateColumnValue(column); if (!column.hasField(SCALAR_VALUE_DESCRIPTOR)) { // The column in this row is an Array (has multiple values) List<Object> array = new ArrayList<>(column.getArrayValueCount()); for (Common.TypedValue arrayValue : column.getArrayValueList()) { // Duplicative because of the ColumnValue/TypedValue difference. if (Common.Rep.ARRAY == arrayValue.getType()) { // Each element in this Array is an Array. array.add(parseArray(arrayValue)); } else { // The array element is a scalar. array.add(deserializeScalarValue(arrayValue)); } } return array; } else { // Scalar return deserializeScalarValue(column.getScalarValue()); } }