4848import com .google .protobuf .FieldMask ;
4949import com .google .spanner .admin .database .v1 .CreateDatabaseRequest ;
5050import com .google .spanner .admin .database .v1 .Database ;
51+ import com .google .spanner .admin .database .v1 .DropDatabaseRequest ;
52+ import com .google .spanner .admin .database .v1 .GetDatabaseDdlRequest ;
53+ import com .google .spanner .admin .database .v1 .GetDatabaseRequest ;
54+ import com .google .spanner .admin .database .v1 .ListDatabasesRequest ;
55+ import com .google .spanner .admin .database .v1 .ListDatabasesResponse ;
5156import com .google .spanner .admin .database .v1 .UpdateDatabaseDdlRequest ;
5257import com .google .spanner .admin .instance .v1 .CreateInstanceRequest ;
58+ import com .google .spanner .admin .instance .v1 .DeleteInstanceRequest ;
59+ import com .google .spanner .admin .instance .v1 .GetInstanceConfigRequest ;
60+ import com .google .spanner .admin .instance .v1 .GetInstanceRequest ;
5361import com .google .spanner .admin .instance .v1 .Instance ;
5462import com .google .spanner .admin .instance .v1 .InstanceConfig ;
63+ import com .google .spanner .admin .instance .v1 .ListInstanceConfigsRequest ;
64+ import com .google .spanner .admin .instance .v1 .ListInstanceConfigsResponse ;
65+ import com .google .spanner .admin .instance .v1 .ListInstancesRequest ;
66+ import com .google .spanner .admin .instance .v1 .ListInstancesResponse ;
5567import com .google .spanner .admin .instance .v1 .UpdateInstanceRequest ;
5668import com .google .spanner .v1 .BeginTransactionRequest ;
5769import com .google .spanner .v1 .CommitRequest ;
7587
7688/** Implementation of Cloud Spanner remote calls using Gapic libraries. */
7789public class GapicSpannerRpc implements SpannerRpc {
90+
7891 private static final PathTemplate PROJECT_NAME_TEMPLATE =
7992 PathTemplate .create ("projects/{project}" );
8093
@@ -143,18 +156,45 @@ public GapicSpannerRpc(SpannerOptions options) throws IOException {
143156 @ Override
144157 public Paginated <InstanceConfig > listInstanceConfigs (int pageSize , @ Nullable String pageToken )
145158 throws SpannerException {
146- throw new UnsupportedOperationException ("Not implemented yet." );
159+ ListInstanceConfigsRequest .Builder requestBuilder =
160+ ListInstanceConfigsRequest .newBuilder ().setParent (projectName ).setPageSize (pageSize );
161+ if (pageToken != null ) {
162+ requestBuilder .setPageToken (pageToken );
163+ }
164+ ListInstanceConfigsRequest request = requestBuilder .build ();
165+
166+ // TODO: put projectName in metadata
167+ ListInstanceConfigsResponse response =
168+ get (instanceStub .listInstanceConfigsCallable ().futureCall (request ));
169+ return new Paginated <>(response .getInstanceConfigsList (), response .getNextPageToken ());
147170 }
148171
149172 @ Override
150173 public InstanceConfig getInstanceConfig (String instanceConfigName ) throws SpannerException {
151- throw new UnsupportedOperationException ("Not implemented yet." );
174+ GetInstanceConfigRequest request =
175+ GetInstanceConfigRequest .newBuilder ().setName (instanceConfigName ).build ();
176+
177+ // TODO: put projectName in metadata
178+ return get (instanceStub .getInstanceConfigCallable ().futureCall (request ));
152179 }
153180
154181 @ Override
155182 public Paginated <Instance > listInstances (
156183 int pageSize , @ Nullable String pageToken , @ Nullable String filter ) throws SpannerException {
157- throw new UnsupportedOperationException ("Not implemented yet." );
184+ ListInstancesRequest .Builder requestBuilder =
185+ ListInstancesRequest .newBuilder ().setParent (projectName ).setPageSize (pageSize );
186+ if (pageToken != null ) {
187+ requestBuilder .setPageToken (pageToken );
188+ }
189+ if (filter != null ) {
190+ requestBuilder .setFilter (filter );
191+ }
192+ ListInstancesRequest request = requestBuilder .build ();
193+
194+ // TODO: put projectName in metadata
195+ ListInstancesResponse response =
196+ get (instanceStub .listInstancesCallable ().futureCall (request ));
197+ return new Paginated <>(response .getInstancesList (), response .getNextPageToken ());
158198 }
159199
160200 @ Override
@@ -180,18 +220,35 @@ public Operation updateInstance(Instance instance, FieldMask fieldMask) throws S
180220
181221 @ Override
182222 public Instance getInstance (String instanceName ) throws SpannerException {
183- throw new UnsupportedOperationException ("Not implemented yet." );
223+ GetInstanceRequest request =
224+ GetInstanceRequest .newBuilder ().setName (instanceName ).build ();
225+
226+ // TODO: put instanceName in metadata
227+ return get (instanceStub .getInstanceCallable ().futureCall (request ));
184228 }
185229
186230 @ Override
187231 public void deleteInstance (String instanceName ) throws SpannerException {
188- throw new UnsupportedOperationException ("Not implemented yet." );
232+ DeleteInstanceRequest request =
233+ DeleteInstanceRequest .newBuilder ().setName (instanceName ).build ();
234+
235+ // TODO: put instanceName in metadata
236+ get (instanceStub .deleteInstanceCallable ().futureCall (request ));
189237 }
190238
191239 @ Override
192240 public Paginated <Database > listDatabases (
193241 String instanceName , int pageSize , @ Nullable String pageToken ) throws SpannerException {
194- throw new UnsupportedOperationException ("Not implemented yet." );
242+ ListDatabasesRequest .Builder requestBuilder =
243+ ListDatabasesRequest .newBuilder ().setParent (instanceName ).setPageSize (pageSize );
244+ if (pageToken != null ) {
245+ requestBuilder .setPageToken (pageToken );
246+ }
247+ ListDatabasesRequest request = requestBuilder .build ();
248+
249+ // TODO: put instanceName in metadata
250+ ListDatabasesResponse response = get (databaseStub .listDatabasesCallable ().futureCall (request ));
251+ return new Paginated <>(response .getDatabasesList (), response .getNextPageToken ());
195252 }
196253
197254 @ Override
@@ -222,17 +279,32 @@ public Operation updateDatabaseDdl(String databaseName, Iterable<String> updateD
222279
223280 @ Override
224281 public void dropDatabase (String databaseName ) throws SpannerException {
225- throw new UnsupportedOperationException ("Not implemented yet." );
282+ DropDatabaseRequest request =
283+ DropDatabaseRequest .newBuilder ().setDatabase (databaseName ).build ();
284+
285+ // TODO: put databaseName in metadata
286+ get (databaseStub .dropDatabaseCallable ().futureCall (request ));
226287 }
227288
228289 @ Override
229290 public Database getDatabase (String databaseName ) throws SpannerException {
230- throw new UnsupportedOperationException ("Not implemented yet." );
291+ GetDatabaseRequest request =
292+ GetDatabaseRequest .newBuilder ()
293+ .setName (databaseName )
294+ .build ();
295+
296+ // TODO: put databaseName in metadata
297+ return get (databaseStub .getDatabaseCallable ().futureCall (request ));
231298 }
232299
233300 @ Override
234301 public List <String > getDatabaseDdl (String databaseName ) throws SpannerException {
235- throw new UnsupportedOperationException ("Not implemented yet." );
302+ GetDatabaseDdlRequest request =
303+ GetDatabaseDdlRequest .newBuilder ().setDatabase (databaseName ).build ();
304+
305+ // TODO: put databaseName in metadata
306+ return get (databaseStub .getDatabaseDdlCallable ().futureCall (request ))
307+ .getStatementsList ();
236308 }
237309
238310 @ Override
0 commit comments