App Engine Java SDK version 1.9.25
[gae.git] / java / src / main / com / google / appengine / api / datastore / LocalCloudDatastoreV1Proxy.java
blobf28eda8193031d82305a522ae1692dbd31053008
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;
25 /**
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;
39 @Override
40 public Future<BeginTransactionResponse> beginTransaction(BeginTransactionRequest request) {
41 return makeAsyncCall(
42 apiConfig,
43 Method.BeginTransaction,
44 request.toBuilder().setProjectId(getCurrentProjectId()).build(),
45 BeginTransactionResponse.parser());
48 @Override
49 public Future<RollbackResponse> rollback(RollbackRequest request) {
50 return makeAsyncCall(
51 apiConfig,
52 Method.Rollback,
53 request.toBuilder().setProjectId(getCurrentProjectId()).build(),
54 RollbackResponse.parser());
57 @Override
58 public Future<RunQueryResponse> runQuery(RunQueryRequest request) {
59 return makeAsyncCall(
60 apiConfig,
61 Method.RunQuery,
62 request.toBuilder().setProjectId(getCurrentProjectId()).build(),
63 RunQueryResponse.parser());
66 @Override
67 public Future<LookupResponse> lookup(LookupRequest request) {
68 return makeAsyncCall(
69 apiConfig,
70 Method.Lookup,
71 request.toBuilder().setProjectId(getCurrentProjectId()).build(),
72 LookupResponse.parser());
75 @Override
76 public Future<AllocateIdsResponse> allocateIds(AllocateIdsRequest request) {
77 return makeAsyncCall(
78 apiConfig,
79 Method.AllocateIds,
80 request.toBuilder().setProjectId(getCurrentProjectId()).build(),
81 AllocateIdsResponse.parser());
84 @Override
85 public Future<CommitResponse> commit(CommitRequest request) {
86 return makeAsyncCall(
87 apiConfig,
88 Method.Commit,
89 request.toBuilder().setProjectId(getCurrentProjectId()).build(),
90 CommitResponse.parser());
93 @Override
94 public Future<CommitResponse> rawCommit(byte[] request) {
95 try {
96 return commit(CommitRequest.parseFrom(request));
97 } catch (InvalidProtocolBufferException e) {
98 throw new IllegalStateException(e);