use of com.google.storage.onestore.v3.OnestoreEntity.Path in project appengine-java-standard by GoogleCloudPlatform.
the class EntityStorageConversions method flattenIndexedEntityValues.
/**
* Recursively walk the given entity value and flattens all leaf sub-properties into
* flattenedProperties. In the top level call pathPrefix and multiplePath should be respectively
* the name and the multiple bit of the property enclosing the entity value. This method is
* designed for internal use, do not make it public.
*
* @param pathPrefix Prefix to be added to property names for the current recursion level.
* @param multiplePath Whether a multiple property has been encountered in the path.
* @param currentSerializedEntityValue The serialized entity value to inspect recursively.
* @param flattenedProperties The list where flattened sub-properties are to be added.
*/
private static void flattenIndexedEntityValues(String pathPrefix, boolean multiplePath, byte[] currentSerializedEntityValue, ImmutableList.Builder<Property> flattenedProperties) {
checkArgument(!Strings.isNullOrEmpty(pathPrefix));
EntityProto currentEntityValue = deserializeEmbeddedEntityProto(currentSerializedEntityValue, pathPrefix);
if (currentEntityValue.getKey().getPath().elementSize() > 0) {
// Path is not empty
flattenedProperties.add(new Property().setName(pathPrefix + Kinds.PROPERTY_PATH_DELIMITER_AND_KEY_SUFFIX).setValue(ReferenceValues.toReferenceProperty(currentEntityValue.getKey())).setMultiple(multiplePath).setComputed(true));
}
for (Property property : currentEntityValue.propertys()) {
if (isEntityValue(property)) {
// This is a nested entity value.
flattenIndexedEntityValues(pathPrefix + Kinds.PROPERTY_PATH_DELIMITER + property.getName(), multiplePath || property.isMultiple(), property.getValue().getStringValueAsBytes(), flattenedProperties);
} else {
// This is a leaf sub-property.
flattenedProperties.add(property.setName(pathPrefix + Kinds.PROPERTY_PATH_DELIMITER + property.getName()).setMultiple(multiplePath || property.isMultiple()).setComputed(true));
}
}
}
Aggregations