google-cloud-platformgoogle-cloud-datastoregcloud-java

How to add a list property to an entity using gcloud Java client?


I can set a property to a new entity:

Entity.Builder builder = Entity.builder(actKey);
builder.set("name", someName);

I can see a method to add a list as a property:

List<Value<String>> aliases = new ArrayList<>();
builder.set("aliases", aliases);

I cannot find, however, how to create this Value<String>. There is a DatastoreHelper.makeValue() method in DatastoreV1, but it creates a different Value object.


Solution

  • Looking at the source code for gcloud, the answer is this:

    Builder aliases = ListValue.builder();
    while (someIterator.hasNext()) {
        aliases.addValue(StringValue.builder("some string").build());
    }
    builder.set("aliases", aliases.build());