public static List<String> toStringList(List<SessionName> values) { List<String> list = new ArrayList<String>(values.size()); for (SessionName value : values) { if (value == null) { list.add(""); } else { list.add(value.toString()); } } return list; }
/** * Ends a session, releasing server resources associated with it. * * <p>Sample code: * * <pre><code> * try (SpannerClient spannerClient = SpannerClient.create()) { * SessionName name = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); * spannerClient.deleteSession(name); * } * </code></pre> * * @param name Required. The name of the session to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void deleteSession(SessionName name) { DeleteSessionRequest request = DeleteSessionRequest.newBuilder().setName(name == null ? null : name.toString()).build(); deleteSession(request); }
/** * Gets a session. Returns `NOT_FOUND` if the session does not exist. This is mainly useful for * determining whether a session is still alive. * * <p>Sample code: * * <pre><code> * try (SpannerClient spannerClient = SpannerClient.create()) { * SessionName name = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); * Session response = spannerClient.getSession(name); * } * </code></pre> * * @param name Required. The name of the session to retrieve. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Session getSession(SessionName name) { GetSessionRequest request = GetSessionRequest.newBuilder().setName(name == null ? null : name.toString()).build(); return getSession(request); }
public static String format(String project, String instance, String database, String session) { return newBuilder() .setProject(project) .setInstance(instance) .setDatabase(database) .setSession(session) .build() .toString(); }
/** * Begins a new transaction. This step can often be skipped: * [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and * [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a side-effect. * * <p>Sample code: * * <pre><code> * try (SpannerClient spannerClient = SpannerClient.create()) { * SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); * TransactionOptions options = TransactionOptions.newBuilder().build(); * Transaction response = spannerClient.beginTransaction(session, options); * } * </code></pre> * * @param session Required. The session in which the transaction runs. * @param options Required. Options for the new transaction. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Transaction beginTransaction(SessionName session, TransactionOptions options) { BeginTransactionRequest request = BeginTransactionRequest.newBuilder() .setSession(session == null ? null : session.toString()) .setOptions(options) .build(); return beginTransaction(request); }
.setSession(session == null ? null : session.toString()) .setTransactionId(transactionId) .build();
.setSession(session == null ? null : session.toString()) .setTransactionId(transactionId) .addAllMutations(mutations)
.setSession(session == null ? null : session.toString()) .setSingleUseTransaction(singleUseTransaction) .addAllMutations(mutations)
@Test @SuppressWarnings("all") public void executeStreamingSqlTest() throws Exception { boolean chunkedValue = true; ByteString resumeToken = ByteString.copyFromUtf8("103"); PartialResultSet expectedResponse = PartialResultSet.newBuilder() .setChunkedValue(chunkedValue) .setResumeToken(resumeToken) .build(); mockSpanner.addResponse(expectedResponse); SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); String sql = "sql114126"; ExecuteSqlRequest request = ExecuteSqlRequest.newBuilder().setSession(session.toString()).setSql(sql).build(); MockStreamObserver<PartialResultSet> responseObserver = new MockStreamObserver<>(); ServerStreamingCallable<ExecuteSqlRequest, PartialResultSet> callable = client.executeStreamingSqlCallable(); callable.serverStreamingCall(request, responseObserver); List<PartialResultSet> actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); }
@Test @SuppressWarnings("all") public void createSessionTest() { SessionName name = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); Session expectedResponse = Session.newBuilder().setName(name.toString()).build(); mockSpanner.addResponse(expectedResponse); DatabaseName database = DatabaseName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]"); Session actualResponse = client.createSession(database); Assert.assertEquals(expectedResponse, actualResponse); List<GeneratedMessageV3> actualRequests = mockSpanner.getRequests(); Assert.assertEquals(1, actualRequests.size()); CreateSessionRequest actualRequest = (CreateSessionRequest) actualRequests.get(0); Assert.assertEquals(database, DatabaseName.parse(actualRequest.getDatabase())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern())); }
@Test @SuppressWarnings("all") public void streamingReadTest() throws Exception { boolean chunkedValue = true; ByteString resumeToken = ByteString.copyFromUtf8("103"); PartialResultSet expectedResponse = PartialResultSet.newBuilder() .setChunkedValue(chunkedValue) .setResumeToken(resumeToken) .build(); mockSpanner.addResponse(expectedResponse); SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); String table = "table110115790"; List<String> columns = new ArrayList<>(); KeySet keySet = KeySet.newBuilder().build(); ReadRequest request = ReadRequest.newBuilder() .setSession(session.toString()) .setTable(table) .addAllColumns(columns) .setKeySet(keySet) .build(); MockStreamObserver<PartialResultSet> responseObserver = new MockStreamObserver<>(); ServerStreamingCallable<ReadRequest, PartialResultSet> callable = client.streamingReadCallable(); callable.serverStreamingCall(request, responseObserver); List<PartialResultSet> actualResponses = responseObserver.future().get(); Assert.assertEquals(1, actualResponses.size()); Assert.assertEquals(expectedResponse, actualResponses.get(0)); }
@Test @SuppressWarnings("all") public void getSessionTest() { SessionName name2 = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); Session expectedResponse = Session.newBuilder().setName(name2.toString()).build(); mockSpanner.addResponse(expectedResponse); SessionName name = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); Session actualResponse = client.getSession(name); Assert.assertEquals(expectedResponse, actualResponse); List<GeneratedMessageV3> actualRequests = mockSpanner.getRequests(); Assert.assertEquals(1, actualRequests.size()); GetSessionRequest actualRequest = (GetSessionRequest) actualRequests.get(0); Assert.assertEquals(name, SessionName.parse(actualRequest.getName())); Assert.assertTrue( channelProvider.isHeaderSent( ApiClientHeaderProvider.getDefaultApiClientHeaderKey(), GaxGrpcProperties.getDefaultApiClientHeaderPattern())); }
@Test @SuppressWarnings("all") public void executeStreamingSqlExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); mockSpanner.addException(exception); SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); String sql = "sql114126"; ExecuteSqlRequest request = ExecuteSqlRequest.newBuilder().setSession(session.toString()).setSql(sql).build(); MockStreamObserver<PartialResultSet> responseObserver = new MockStreamObserver<>(); ServerStreamingCallable<ExecuteSqlRequest, PartialResultSet> callable = client.executeStreamingSqlCallable(); callable.serverStreamingCall(request, responseObserver); try { List<PartialResultSet> actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); } catch (ExecutionException e) { Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); InvalidArgumentException apiException = (InvalidArgumentException) e.getCause(); Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); } }
@Test @SuppressWarnings("all") public void streamingReadExceptionTest() throws Exception { StatusRuntimeException exception = new StatusRuntimeException(Status.INVALID_ARGUMENT); mockSpanner.addException(exception); SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); String table = "table110115790"; List<String> columns = new ArrayList<>(); KeySet keySet = KeySet.newBuilder().build(); ReadRequest request = ReadRequest.newBuilder() .setSession(session.toString()) .setTable(table) .addAllColumns(columns) .setKeySet(keySet) .build(); MockStreamObserver<PartialResultSet> responseObserver = new MockStreamObserver<>(); ServerStreamingCallable<ReadRequest, PartialResultSet> callable = client.streamingReadCallable(); callable.serverStreamingCall(request, responseObserver); try { List<PartialResultSet> actualResponses = responseObserver.future().get(); Assert.fail("No exception thrown"); } catch (ExecutionException e) { Assert.assertTrue(e.getCause() instanceof InvalidArgumentException); InvalidArgumentException apiException = (InvalidArgumentException) e.getCause(); Assert.assertEquals(StatusCode.Code.INVALID_ARGUMENT, apiException.getStatusCode().getCode()); } }
/** * Ends a session, releasing server resources associated with it. * * <p>Sample code: * * <pre><code> * try (SpannerClient spannerClient = SpannerClient.create()) { * SessionName name = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); * spannerClient.deleteSession(name); * } * </code></pre> * * @param name Required. The name of the session to delete. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final void deleteSession(SessionName name) { DeleteSessionRequest request = DeleteSessionRequest.newBuilder().setName(name == null ? null : name.toString()).build(); deleteSession(request); }
/** * Gets a session. Returns `NOT_FOUND` if the session does not exist. This is mainly useful for * determining whether a session is still alive. * * <p>Sample code: * * <pre><code> * try (SpannerClient spannerClient = SpannerClient.create()) { * SessionName name = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); * Session response = spannerClient.getSession(name); * } * </code></pre> * * @param name Required. The name of the session to retrieve. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Session getSession(SessionName name) { GetSessionRequest request = GetSessionRequest.newBuilder().setName(name == null ? null : name.toString()).build(); return getSession(request); }
/** * Begins a new transaction. This step can often be skipped: * [Read][google.spanner.v1.Spanner.Read], [ExecuteSql][google.spanner.v1.Spanner.ExecuteSql] and * [Commit][google.spanner.v1.Spanner.Commit] can begin a new transaction as a side-effect. * * <p>Sample code: * * <pre><code> * try (SpannerClient spannerClient = SpannerClient.create()) { * SessionName session = SessionName.of("[PROJECT]", "[INSTANCE]", "[DATABASE]", "[SESSION]"); * TransactionOptions options = TransactionOptions.newBuilder().build(); * Transaction response = spannerClient.beginTransaction(session, options); * } * </code></pre> * * @param session Required. The session in which the transaction runs. * @param options Required. Options for the new transaction. * @throws com.google.api.gax.rpc.ApiException if the remote call fails */ public final Transaction beginTransaction(SessionName session, TransactionOptions options) { BeginTransactionRequest request = BeginTransactionRequest.newBuilder() .setSession(session == null ? null : session.toString()) .setOptions(options) .build(); return beginTransaction(request); }
.setSession(session == null ? null : session.toString()) .setTransactionId(transactionId) .build();
.setSession(session == null ? null : session.toString()) .setTransactionId(transactionId) .addAllMutations(mutations)
.setSession(session == null ? null : session.toString()) .setSingleUseTransaction(singleUseTransaction) .addAllMutations(mutations)