1 package com
.google
.appengine
.api
.datastore
;
3 import static com
.google
.appengine
.api
.datastore
.DatastoreApiHelper
.getCurrentProjectId
;
4 import static com
.google
.appengine
.api
.datastore
.DatastoreApiHelper
.makeAsyncCall
;
6 import com
.google
.apphosting
.api
.ApiProxy
;
7 import com
.google
.apphosting
.api
.ApiProxy
.ApiConfig
;
8 import com
.google
.datastore
.v1beta3
.AllocateIdsRequest
;
9 import com
.google
.datastore
.v1beta3
.AllocateIdsResponse
;
10 import com
.google
.datastore
.v1beta3
.BeginTransactionRequest
;
11 import com
.google
.datastore
.v1beta3
.BeginTransactionResponse
;
12 import com
.google
.datastore
.v1beta3
.CommitRequest
;
13 import com
.google
.datastore
.v1beta3
.CommitResponse
;
14 import com
.google
.datastore
.v1beta3
.Datastore
.Method
;
15 import com
.google
.datastore
.v1beta3
.LookupRequest
;
16 import com
.google
.datastore
.v1beta3
.LookupResponse
;
17 import com
.google
.datastore
.v1beta3
.RollbackRequest
;
18 import com
.google
.datastore
.v1beta3
.RollbackResponse
;
19 import com
.google
.datastore
.v1beta3
.RunQueryRequest
;
20 import com
.google
.datastore
.v1beta3
.RunQueryResponse
;
21 import com
.google
.protobuf
.InvalidProtocolBufferException
;
23 import java
.util
.concurrent
.Future
;
26 * Cloud Datastore v1 proxy which forwards RPCs to {@link ApiProxy} via {@link DatastoreApiHelper}.
27 * Used when running in an App Engine environment.
29 * <p>Methods in this class populate the project id field in outgoing requests by getting it from
30 * the current environment.
32 final class LocalCloudDatastoreV1Proxy
implements CloudDatastoreV1Proxy
{
33 private final ApiConfig apiConfig
;
35 LocalCloudDatastoreV1Proxy(ApiConfig apiConfig
) {
36 this.apiConfig
= apiConfig
;
40 public Future
<BeginTransactionResponse
> beginTransaction(BeginTransactionRequest request
) {
43 Method
.BeginTransaction
,
44 request
.toBuilder().setProjectId(getCurrentProjectId()).build(),
45 BeginTransactionResponse
.parser());
49 public Future
<RollbackResponse
> rollback(RollbackRequest request
) {
53 request
.toBuilder().setProjectId(getCurrentProjectId()).build(),
54 RollbackResponse
.parser());
58 public Future
<RunQueryResponse
> runQuery(RunQueryRequest request
) {
62 request
.toBuilder().setProjectId(getCurrentProjectId()).build(),
63 RunQueryResponse
.parser());
67 public Future
<LookupResponse
> lookup(LookupRequest request
) {
71 request
.toBuilder().setProjectId(getCurrentProjectId()).build(),
72 LookupResponse
.parser());
76 public Future
<AllocateIdsResponse
> allocateIds(AllocateIdsRequest request
) {
80 request
.toBuilder().setProjectId(getCurrentProjectId()).build(),
81 AllocateIdsResponse
.parser());
85 public Future
<CommitResponse
> commit(CommitRequest request
) {
89 request
.toBuilder().setProjectId(getCurrentProjectId()).build(),
90 CommitResponse
.parser());
94 public Future
<CommitResponse
> rawCommit(byte[] request
) {
96 return commit(CommitRequest
.parseFrom(request
));
97 } catch (InvalidProtocolBufferException e
) {
98 throw new IllegalStateException(e
);