Skip to content

Commit f1b5719

Browse files
committed
feat(spanner): add support for external hosts
1 parent 0a46070 commit f1b5719

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

google-cloud-spanner/src/main/java/com/google/cloud/spanner/DatabaseId.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,11 @@ public static DatabaseId of(String project, String instance, String database) {
9494
return new DatabaseId(new InstanceId(project, instance), database);
9595
}
9696

97+
/** Creates a {@code DatabaseId} given instance and database IDs. */
98+
public static DatabaseId of(String instance, String database) {
99+
return new DatabaseId(new InstanceId("default", instance), database);
100+
}
101+
97102
/** Creates a {@code DatabaseId} given the instance identity and database id. */
98103
public static DatabaseId of(InstanceId instanceId, String database) {
99104
return new DatabaseId(instanceId, database);

google-cloud-spanner/src/main/java/com/google/cloud/spanner/SessionClient.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ static class SessionId {
3838
private static final PathTemplate NAME_TEMPLATE =
3939
PathTemplate.create(
4040
"projects/{project}/instances/{instance}/databases/{database}/sessions/{session}");
41+
private static final PathTemplate EXTERNAL_HOST_NAME_TEMPLATE =
42+
PathTemplate.create("instances/{instance}/databases/{database}/sessions/{session}");
4143
private final DatabaseId db;
4244
private final String name;
4345

@@ -49,10 +51,16 @@ private SessionId(DatabaseId db, String name) {
4951
static SessionId of(String name) {
5052
Preconditions.checkNotNull(name);
5153
Map<String, String> parts = NAME_TEMPLATE.match(name);
54+
if (parts == null) {
55+
parts = EXTERNAL_HOST_NAME_TEMPLATE.match(name);
56+
}
5257
Preconditions.checkArgument(
5358
parts != null, "Name should conform to pattern %s: %s", NAME_TEMPLATE, name);
5459
return of(
55-
parts.get("project"), parts.get("instance"), parts.get("database"), parts.get("session"));
60+
parts.containsKey("project") ? parts.get("project") : "default",
61+
parts.get("instance"),
62+
parts.get("database"),
63+
parts.get("session"));
5664
}
5765

5866
/** Creates a {@code SessionId} given project, instance, database and session IDs. */

0 commit comments

Comments
 (0)