Skip to content

Commit e14a2ed

Browse files
committed
[Feature] DatabricksConfig: Add clone() support
1 parent a1460c5 commit e14a2ed

File tree

2 files changed

+44
-15
lines changed

2 files changed

+44
-15
lines changed

databricks-sdk-java/src/main/java/com/databricks/sdk/core/DatabricksConfig.java

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -374,13 +374,17 @@ public DatabricksConfig setAzureUseMsi(boolean azureUseMsi) {
374374
return this;
375375
}
376376

377-
/** @deprecated Use {@link #getAzureUseMsi()} instead. */
377+
/**
378+
* @deprecated Use {@link #getAzureUseMsi()} instead.
379+
*/
378380
@Deprecated()
379381
public boolean getAzureUseMSI() {
380382
return azureUseMsi;
381383
}
382384

383-
/** @deprecated Use {@link #setAzureUseMsi(boolean)} instead. */
385+
/**
386+
* @deprecated Use {@link #setAzureUseMsi(boolean)} instead.
387+
*/
384388
@Deprecated
385389
public DatabricksConfig setAzureUseMSI(boolean azureUseMsi) {
386390
this.azureUseMsi = azureUseMsi;
@@ -631,6 +635,25 @@ public DatabricksEnvironment getDatabricksEnvironment() {
631635
return DatabricksEnvironment.getEnvironmentFromHostname(this.host);
632636
}
633637

638+
private DatabricksConfig clone(Set<String> fieldsToSkip) {
639+
DatabricksConfig newConfig = new DatabricksConfig();
640+
for (Field f : DatabricksConfig.class.getDeclaredFields()) {
641+
if (fieldsToSkip.contains(f.getName())) {
642+
continue;
643+
}
644+
try {
645+
f.set(newConfig, f.get(this));
646+
} catch (IllegalAccessException e) {
647+
throw new RuntimeException(e);
648+
}
649+
}
650+
return newConfig;
651+
}
652+
653+
public DatabricksConfig clone() {
654+
return clone(new HashSet<>());
655+
}
656+
634657
public DatabricksConfig newWithWorkspaceHost(String host) {
635658
Set<String> fieldsToSkip =
636659
new HashSet<>(
@@ -645,18 +668,6 @@ public DatabricksConfig newWithWorkspaceHost(String host) {
645668
// don't cache the
646669
// header factory.
647670
"headerFactory"));
648-
DatabricksConfig newConfig = new DatabricksConfig();
649-
for (Field f : DatabricksConfig.class.getDeclaredFields()) {
650-
if (fieldsToSkip.contains(f.getName())) {
651-
continue;
652-
}
653-
try {
654-
f.set(newConfig, f.get(this));
655-
} catch (IllegalAccessException e) {
656-
throw new RuntimeException(e);
657-
}
658-
}
659-
newConfig.setHost(host);
660-
return newConfig;
671+
return clone(fieldsToSkip).setHost(host);
661672
}
662673
}

databricks-sdk-java/src/test/java/com/databricks/sdk/core/DatabricksConfigTest.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,4 +177,22 @@ public void testNewWithWorkspaceHost() {
177177
assert newWorkspaceConfig.getClientId().equals("my-client-id");
178178
assert newWorkspaceConfig.getClientSecret().equals("my-client-secret");
179179
}
180+
181+
@Test
182+
public void testClone() {
183+
DatabricksConfig config =
184+
new DatabricksConfig()
185+
.setAuthType("oauth-m2m")
186+
.setClientId("my-client-id")
187+
.setClientSecret("my-client-secret")
188+
.setAccountId("account-id")
189+
.setHost("https://account.cloud.databricks.com");
190+
191+
DatabricksConfig newWorkspaceConfig = config.clone();
192+
193+
assert newWorkspaceConfig.getHost().equals("https://account.cloud.databricks.com");
194+
assert newWorkspaceConfig.getAuthType().equals("oauth-m2m");
195+
assert newWorkspaceConfig.getClientId().equals("my-client-id");
196+
assert newWorkspaceConfig.getClientSecret().equals("my-client-secret");
197+
}
180198
}

0 commit comments

Comments
 (0)