diff options
author | Jiayu Hu <hujiayu@google.com> | 2023-12-02 02:09:35 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2023-12-02 02:09:35 +0000 |
commit | d7786c1d006962c09f64a08525386e5fb4b9450c (patch) | |
tree | 0d83b3880be27e055a77217411e8c3bb327cf5d9 /icing/util/document-validator.cc | |
parent | 8fe5f19051d2cf565afc1918acca448b133b5c03 (diff) | |
parent | 77a3d7acfd36b403ebec87d7cbc7cf6486b71941 (diff) | |
download | icing-d7786c1d006962c09f64a08525386e5fb4b9450c.tar.gz |
Merge remote-tracking branch 'aosp/upstream-master' into androidx-main am: 77a3d7acfd
Original change: https://android-review.googlesource.com/c/platform/external/icing/+/2856025
Change-Id: I907cab2a8467672883f4a8572024c8d40e2aef05
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
Diffstat (limited to 'icing/util/document-validator.cc')
-rw-r--r-- | icing/util/document-validator.cc | 67 |
1 files changed, 54 insertions, 13 deletions
diff --git a/icing/util/document-validator.cc b/icing/util/document-validator.cc index 9d5fea7..ebdb0d7 100644 --- a/icing/util/document-validator.cc +++ b/icing/util/document-validator.cc @@ -104,24 +104,65 @@ libtextclassifier3::Status DocumentValidator::Validate( } const PropertyConfigProto& property_config = *property_iter->second; - // Get the property value size according to data type. + // Validate the property data type and get the property value size according + // to data type. int value_size = 0; - if (property_config.data_type() == PropertyConfigProto::DataType::STRING) { + if (property.string_values_size() > 0) { + if (property_config.data_type() != + PropertyConfigProto::DataType::STRING) { + return absl_ports::InvalidArgumentError(absl_ports::StrCat( + "The data type of property name '", property.name(), + "' is not STRING for key: (", document.namespace_(), ", ", + document.uri(), ").")); + } value_size = property.string_values_size(); - } else if (property_config.data_type() == - PropertyConfigProto::DataType::INT64) { + } + if (property.int64_values_size() > 0) { + if (property_config.data_type() != PropertyConfigProto::DataType::INT64) { + return absl_ports::InvalidArgumentError(absl_ports::StrCat( + "The data type of property name '", property.name(), + "' is not INT64 for key: (", document.namespace_(), ", ", + document.uri(), ").")); + } value_size = property.int64_values_size(); - } else if (property_config.data_type() == - PropertyConfigProto::DataType::DOUBLE) { + } + if (property.double_values_size() > 0) { + if (property_config.data_type() != + PropertyConfigProto::DataType::DOUBLE) { + return absl_ports::InvalidArgumentError(absl_ports::StrCat( + "The data type of property name '", property.name(), + "' is not DOUBLE for key: (", document.namespace_(), ", ", + document.uri(), ").")); + } value_size = property.double_values_size(); - } else if (property_config.data_type() == - PropertyConfigProto::DataType::BOOLEAN) { + } + if (property.boolean_values_size() > 0) { + if (property_config.data_type() != + PropertyConfigProto::DataType::BOOLEAN) { + return absl_ports::InvalidArgumentError(absl_ports::StrCat( + "The data type of property name '", property.name(), + "' is not BOOLEAN for key: (", document.namespace_(), ", ", + document.uri(), ").")); + } value_size = property.boolean_values_size(); - } else if (property_config.data_type() == - PropertyConfigProto::DataType::BYTES) { + } + if (property.bytes_values_size() > 0) { + if (property_config.data_type() != PropertyConfigProto::DataType::BYTES) { + return absl_ports::InvalidArgumentError(absl_ports::StrCat( + "The data type of property name '", property.name(), + "' is not BYTES for key: (", document.namespace_(), ", ", + document.uri(), ").")); + } value_size = property.bytes_values_size(); - } else if (property_config.data_type() == - PropertyConfigProto::DataType::DOCUMENT) { + } + if (property.document_values_size() > 0) { + if (property_config.data_type() != + PropertyConfigProto::DataType::DOCUMENT) { + return absl_ports::InvalidArgumentError(absl_ports::StrCat( + "The data type of property name '", property.name(), + "' is not DOCUMENT for key: (", document.namespace_(), ", ", + document.uri(), ").")); + } value_size = property.document_values_size(); } @@ -172,7 +213,7 @@ libtextclassifier3::Status DocumentValidator::Validate( } } if (num_required_properties_actual < - parsed_property_configs.num_required_properties) { + parsed_property_configs.required_properties.size()) { return absl_ports::InvalidArgumentError( absl_ports::StrCat("One or more required fields missing for key: (", document.namespace_(), ", ", document.uri(), ").")); |