aboutsummaryrefslogtreecommitdiff
path: root/icing/util/document-validator.cc
diff options
context:
space:
mode:
authorJiayu Hu <hujiayu@google.com>2023-12-02 02:09:35 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2023-12-02 02:09:35 +0000
commitd7786c1d006962c09f64a08525386e5fb4b9450c (patch)
tree0d83b3880be27e055a77217411e8c3bb327cf5d9 /icing/util/document-validator.cc
parent8fe5f19051d2cf565afc1918acca448b133b5c03 (diff)
parent77a3d7acfd36b403ebec87d7cbc7cf6486b71941 (diff)
downloadicing-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.cc67
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(), ")."));