Skip to content

Commit c70d9d7

Browse files
committed
Merge pull request #833 from ajkannan/merge-v1beta3
Merge v1beta3
2 parents 5fea95f + bf918e5 commit c70d9d7

File tree

79 files changed

+1711
-1484
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

79 files changed

+1711
-1484
lines changed

gcloud-java-datastore/pom.xml

+8-10
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,14 @@
2222
<version>${project.version}</version>
2323
</dependency>
2424
<dependency>
25-
<groupId>com.google.apis</groupId>
26-
<artifactId>google-api-services-datastore-protobuf</artifactId>
27-
<version>v1beta2-rev1-4.0.0</version>
28-
<scope>compile</scope>
29-
<exclusions>
30-
<exclusion>
31-
<groupId>com.google.api-client</groupId>
32-
<artifactId>google-api-client</artifactId>
33-
</exclusion>
34-
</exclusions>
25+
<groupId>com.google.cloud.datastore</groupId>
26+
<artifactId>datastore-v1beta3-protos</artifactId>
27+
<version>1.0.0-beta</version>
28+
</dependency>
29+
<dependency>
30+
<groupId>com.google.cloud.datastore</groupId>
31+
<artifactId>datastore-v1beta3-proto-client</artifactId>
32+
<version>1.0.0-beta</version>
3533
</dependency>
3634
<dependency>
3735
<groupId>${project.groupId}</groupId>

gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/BaseDatastoreBatchWriter.java

+17-12
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
package com.google.gcloud.datastore;
1818

19-
import com.google.api.services.datastore.DatastoreV1;
2019
import com.google.common.base.Preconditions;
2120
import com.google.common.collect.Iterables;
2221
import com.google.common.collect.Lists;
2322

23+
import java.util.ArrayList;
2424
import java.util.Collections;
2525
import java.util.Iterator;
2626
import java.util.LinkedHashMap;
@@ -88,9 +88,7 @@ public final List<Entity> add(FullEntity<?>... entities) {
8888
for (FullEntity<?> entity : entities) {
8989
IncompleteKey key = entity.key();
9090
Preconditions.checkArgument(key != null, "Entity must have a key");
91-
if (key instanceof Key) {
92-
addInternal((FullEntity<Key>) entity);
93-
} else {
91+
if (!(key instanceof Key)) {
9492
incompleteKeys.add(key);
9593
}
9694
}
@@ -104,6 +102,7 @@ public final List<Entity> add(FullEntity<?>... entities) {
104102
List<Entity> answer = Lists.newArrayListWithExpectedSize(entities.length);
105103
for (FullEntity<?> entity : entities) {
106104
if (entity.key() instanceof Key) {
105+
addInternal((FullEntity<Key>) entity);
107106
answer.add(Entity.convert((FullEntity<Key>) entity));
108107
} else {
109108
Entity entityWithAllocatedId = Entity.builder(allocated.next(), entity).build();
@@ -199,24 +198,30 @@ protected DatastoreException newInvalidRequest(String msg, Object... params) {
199198
return DatastoreException.throwInvalidRequest(String.format(msg, params));
200199
}
201200

202-
DatastoreV1.Mutation.Builder toMutationPb() {
203-
DatastoreV1.Mutation.Builder mutationPb = DatastoreV1.Mutation.newBuilder();
201+
protected List<com.google.datastore.v1beta3.Mutation> toMutationPbList() {
202+
List<com.google.datastore.v1beta3.Mutation> mutationsPb =
203+
new ArrayList<>();
204204
for (FullEntity<IncompleteKey> entity : toAddAutoId()) {
205-
mutationPb.addInsertAutoId(entity.toPb());
205+
mutationsPb.add(
206+
com.google.datastore.v1beta3.Mutation.newBuilder().setInsert(entity.toPb()).build());
206207
}
207208
for (FullEntity<Key> entity : toAdd().values()) {
208-
mutationPb.addInsert(entity.toPb());
209+
mutationsPb.add(
210+
com.google.datastore.v1beta3.Mutation.newBuilder().setInsert(entity.toPb()).build());
209211
}
210212
for (FullEntity<Key> entity : toUpdate().values()) {
211-
mutationPb.addUpdate(entity.toPb());
213+
mutationsPb.add(
214+
com.google.datastore.v1beta3.Mutation.newBuilder().setUpdate(entity.toPb()).build());
212215
}
213216
for (FullEntity<Key> entity : toPut().values()) {
214-
mutationPb.addUpsert(entity.toPb());
217+
mutationsPb.add(
218+
com.google.datastore.v1beta3.Mutation.newBuilder().setUpsert(entity.toPb()).build());
215219
}
216220
for (Key key : toDelete()) {
217-
mutationPb.addDelete(key.toPb());
221+
mutationsPb.add(
222+
com.google.datastore.v1beta3.Mutation.newBuilder().setDelete(key.toPb()).build());
218223
}
219-
return mutationPb;
224+
return mutationsPb;
220225
}
221226

222227
protected abstract Datastore datastore();

gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/BaseEntity.java

+54-12
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,12 @@
2222
import static com.google.gcloud.datastore.DoubleValue.of;
2323
import static com.google.gcloud.datastore.EntityValue.of;
2424
import static com.google.gcloud.datastore.KeyValue.of;
25+
import static com.google.gcloud.datastore.LatLngValue.of;
2526
import static com.google.gcloud.datastore.ListValue.of;
2627
import static com.google.gcloud.datastore.LongValue.of;
2728
import static com.google.gcloud.datastore.NullValue.of;
2829
import static com.google.gcloud.datastore.StringValue.of;
2930

30-
import com.google.api.services.datastore.DatastoreV1;
3131
import com.google.common.collect.ImmutableSortedMap;
3232
import com.google.common.collect.Maps;
3333
import com.google.protobuf.InvalidProtocolBufferException;
@@ -49,7 +49,8 @@
4949
* @see <a href="https://cloud.google.com/datastore/docs/concepts/entities">Google Cloud Datastore
5050
* Entities, Properties, and Keys</a>
5151
*/
52-
public abstract class BaseEntity<K extends IncompleteKey> extends Serializable<DatastoreV1.Entity> {
52+
public abstract class BaseEntity<K extends IncompleteKey>
53+
extends Serializable<com.google.datastore.v1beta3.Entity> {
5354

5455
private static final long serialVersionUID = 8175618724683792766L;
5556

@@ -91,10 +92,11 @@ private B self() {
9192
}
9293

9394
@SuppressWarnings("unchecked")
94-
B fill(DatastoreV1.Entity entityPb) {
95+
B fill(com.google.datastore.v1beta3.Entity entityPb) {
9596
Map<String, Value<?>> copiedProperties = Maps.newHashMap();
96-
for (DatastoreV1.Property property : entityPb.getPropertyList()) {
97-
copiedProperties.put(property.getName(), Value.fromPb(property.getValue()));
97+
for (Map.Entry<String, com.google.datastore.v1beta3.Value> entry :
98+
entityPb.getProperties().entrySet()) {
99+
copiedProperties.put(entry.getKey(), Value.fromPb(entry.getValue()));
98100
}
99101
properties(copiedProperties);
100102
if (entityPb.hasKey()) {
@@ -290,6 +292,36 @@ public B set(String name, DateTime first, DateTime second, DateTime... others) {
290292
return self();
291293
}
292294

295+
/**
296+
* Sets a property of type {@link LatLng}.
297+
*
298+
* @param name name of the property
299+
* @param value value associated with the property
300+
*/
301+
public B set(String name, LatLng value) {
302+
properties.put(name, of(value));
303+
return self();
304+
}
305+
306+
/**
307+
* Sets a list property containing elements of type {@link LatLng}.
308+
*
309+
* @param name name of the property
310+
* @param first the first {@link LatLng} in the list
311+
* @param second the second {@link LatLng} in the list
312+
* @param others other {@link LatLng}s in the list
313+
*/
314+
public B set(String name, LatLng first, LatLng second, LatLng... others) {
315+
List<LatLngValue> values = new LinkedList<>();
316+
values.add(of(first));
317+
values.add(of(second));
318+
for (LatLng other : others) {
319+
values.add(of(other));
320+
}
321+
properties.put(name, of(values));
322+
return self();
323+
}
324+
293325
/**
294326
* Sets a property of type {@link KeyValue}.
295327
*
@@ -545,6 +577,17 @@ public DateTime getDateTime(String name) {
545577
return ((Value<DateTime>) getValue(name)).get();
546578
}
547579

580+
/**
581+
* Returns the property value as a LatLng.
582+
*
583+
* @throws DatastoreException if not such property.
584+
* @throws ClassCastException if value is not a LatLng.
585+
*/
586+
@SuppressWarnings("unchecked")
587+
public LatLng getLatLng(String name) {
588+
return ((Value<LatLng>) getValue(name)).get();
589+
}
590+
548591
/**
549592
* Returns the property value as a Key.
550593
*
@@ -603,20 +646,19 @@ ImmutableSortedMap<String, Value<?>> properties() {
603646
@Override
604647
Object fromPb(byte[] bytesPb) throws InvalidProtocolBufferException {
605648
Builder<?, ?> builder = emptyBuilder();
606-
builder.fill(DatastoreV1.Entity.parseFrom(bytesPb));
649+
builder.fill(com.google.datastore.v1beta3.Entity.parseFrom(bytesPb));
607650
return builder.build();
608651
}
609652

610653
protected abstract Builder<?, ?> emptyBuilder();
611654

612655
@Override
613-
final DatastoreV1.Entity toPb() {
614-
DatastoreV1.Entity.Builder entityPb = DatastoreV1.Entity.newBuilder();
656+
final com.google.datastore.v1beta3.Entity toPb() {
657+
com.google.datastore.v1beta3.Entity.Builder entityPb =
658+
com.google.datastore.v1beta3.Entity.newBuilder();
659+
Map<String, com.google.datastore.v1beta3.Value> propertiesPb = entityPb.getMutableProperties();
615660
for (Map.Entry<String, Value<?>> entry : properties.entrySet()) {
616-
DatastoreV1.Property.Builder propertyPb = DatastoreV1.Property.newBuilder();
617-
propertyPb.setName(entry.getKey());
618-
propertyPb.setValue(entry.getValue().toPb());
619-
entityPb.addProperty(propertyPb.build());
661+
propertiesPb.put(entry.getKey(), entry.getValue().toPb());
620662
}
621663
if (key != null) {
622664
entityPb.setKey(key.toPb());

gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/BaseKey.java

+11-17
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import static com.google.gcloud.datastore.Validator.validateKind;
2121
import static com.google.gcloud.datastore.Validator.validateNamespace;
2222

23-
import com.google.api.services.datastore.DatastoreV1;
2423
import com.google.common.base.Preconditions;
2524
import com.google.common.collect.ImmutableList;
2625

@@ -31,7 +30,7 @@
3130
/**
3231
* Base class for keys.
3332
*/
34-
public abstract class BaseKey extends Serializable<DatastoreV1.Key> {
33+
public abstract class BaseKey extends Serializable<com.google.datastore.v1beta3.Key> {
3534

3635
private static final long serialVersionUID = -4671243265877410635L;
3736

@@ -46,8 +45,8 @@ public abstract class BaseKey extends Serializable<DatastoreV1.Key> {
4645
*/
4746
protected abstract static class Builder<B extends Builder<B>> {
4847

49-
String projectId;
50-
String namespace;
48+
String projectId = "";
49+
String namespace = "";
5150
String kind;
5251
final List<PathElement> ancestors;
5352

@@ -179,20 +178,15 @@ public boolean equals(Object obj) {
179178
}
180179

181180
@Override
182-
DatastoreV1.Key toPb() {
183-
DatastoreV1.Key.Builder keyPb = DatastoreV1.Key.newBuilder();
184-
DatastoreV1.PartitionId.Builder partitionIdPb = DatastoreV1.PartitionId.newBuilder();
185-
if (projectId != null) {
186-
partitionIdPb.setDatasetId(projectId);
187-
}
188-
if (namespace != null) {
189-
partitionIdPb.setNamespace(namespace);
190-
}
191-
if (partitionIdPb.hasDatasetId() || partitionIdPb.hasNamespace()) {
192-
keyPb.setPartitionId(partitionIdPb.build());
193-
}
181+
com.google.datastore.v1beta3.Key toPb() {
182+
com.google.datastore.v1beta3.Key.Builder keyPb = com.google.datastore.v1beta3.Key.newBuilder();
183+
com.google.datastore.v1beta3.PartitionId.Builder partitionIdPb =
184+
com.google.datastore.v1beta3.PartitionId.newBuilder();
185+
partitionIdPb.setProjectId(projectId);
186+
partitionIdPb.setNamespaceId(namespace);
187+
keyPb.setPartitionId(partitionIdPb.build());
194188
for (PathElement pathEntry : path) {
195-
keyPb.addPathElement(pathEntry.toPb());
189+
keyPb.addPath(pathEntry.toPb());
196190
}
197191
return keyPb.build();
198192
}

gcloud-java-datastore/src/main/java/com/google/gcloud/datastore/BatchImpl.java

+21-31
Original file line numberDiff line numberDiff line change
@@ -16,63 +16,53 @@
1616

1717
package com.google.gcloud.datastore;
1818

19-
import com.google.api.services.datastore.DatastoreV1;
20-
import com.google.common.base.Function;
21-
import com.google.common.collect.Lists;
22-
import com.google.gcloud.datastore.BatchOption.ForceWrites;
23-
19+
import java.util.ArrayList;
20+
import java.util.Iterator;
2421
import java.util.List;
25-
import java.util.Map;
2622

2723

2824
class BatchImpl extends BaseDatastoreBatchWriter implements Batch {
2925

3026
private final DatastoreImpl datastore;
31-
private final boolean force;
3227

3328
static class ResponseImpl implements Batch.Response {
3429

35-
private final DatastoreV1.CommitResponse response;
30+
private final com.google.datastore.v1beta3.CommitResponse response;
31+
private final int numAutoAllocatedIds;
3632

37-
ResponseImpl(DatastoreV1.CommitResponse response) {
33+
ResponseImpl(com.google.datastore.v1beta3.CommitResponse response, int numAutoAllocatedIds) {
3834
this.response = response;
35+
this.numAutoAllocatedIds = numAutoAllocatedIds;
3936
}
4037

4138
@Override
4239
public List<Key> generatedKeys() {
43-
return Lists.transform(response.getMutationResult().getInsertAutoIdKeyList(),
44-
new Function<DatastoreV1.Key, Key>() {
45-
@Override public Key apply(DatastoreV1.Key keyPb) {
46-
return Key.fromPb(keyPb);
47-
}
48-
});
40+
Iterator<com.google.datastore.v1beta3.MutationResult> results =
41+
response.getMutationResultsList().iterator();
42+
List<Key> generated = new ArrayList<>(numAutoAllocatedIds);
43+
for (int i = 0; i < numAutoAllocatedIds; i++) {
44+
generated.add(Key.fromPb(results.next().getKey()));
45+
}
46+
return generated;
4947
}
5048
}
5149

52-
BatchImpl(DatastoreImpl datastore, BatchOption... options) {
50+
BatchImpl(DatastoreImpl datastore) {
5351
super("batch");
5452
this.datastore = datastore;
55-
Map<Class<? extends BatchOption>, BatchOption> optionsMap = BatchOption.asImmutableMap(options);
56-
if (optionsMap.containsKey(ForceWrites.class)) {
57-
force = ((ForceWrites) optionsMap.get(ForceWrites.class)).force();
58-
} else {
59-
force = datastore.options().force();
60-
}
6153
}
6254

6355
@Override
6456
public Batch.Response submit() {
6557
validateActive();
66-
DatastoreV1.Mutation.Builder mutationPb = toMutationPb();
67-
if (force) {
68-
mutationPb.setForce(force);
69-
}
70-
DatastoreV1.CommitRequest.Builder requestPb = DatastoreV1.CommitRequest.newBuilder();
71-
requestPb.setMode(DatastoreV1.CommitRequest.Mode.NON_TRANSACTIONAL);
72-
requestPb.setMutation(mutationPb);
73-
DatastoreV1.CommitResponse responsePb = datastore.commit(requestPb.build());
58+
List<com.google.datastore.v1beta3.Mutation> mutationsPb = toMutationPbList();
59+
com.google.datastore.v1beta3.CommitRequest.Builder requestPb =
60+
com.google.datastore.v1beta3.CommitRequest.newBuilder();
61+
requestPb.setMode(com.google.datastore.v1beta3.CommitRequest.Mode.NON_TRANSACTIONAL);
62+
requestPb.addAllMutations(mutationsPb);
63+
com.google.datastore.v1beta3.CommitResponse responsePb = datastore.commit(requestPb.build());
7464
deactivate();
75-
return new ResponseImpl(responsePb);
65+
return new ResponseImpl(responsePb, toAddAutoId().size());
7666
}
7767

7868
@Override

0 commit comments

Comments
 (0)