Skip to content

Commit 11e7528

Browse files
Update changelogs
2 parents 00c4bc1 + d2b185a commit 11e7528

71 files changed

Lines changed: 3263 additions & 290 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.codegen/_openapi_sha

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
3a7fe4deb693ca98d89b044116aaf008efd895a5
1+
3ae6f76120079424c8654263eafbc30ec0551854

.gitattributes

Lines changed: 29 additions & 0 deletions
Large diffs are not rendered by default.

NEXT_CHANGELOG.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,14 @@
1616
### Internal Changes
1717

1818
### API Changes
19+
* Added `workspaceClient.policies()` service and `workspaceClient.temporaryPathCredentials()` service.
20+
* Added `create()` method for `workspaceClient.tables()` service.
21+
* Added `listDatabaseCatalogs()`, `listSyncedDatabaseTables()`, `updateDatabaseCatalog()` and `updateSyncedDatabaseTable()` methods for `workspaceClient.database()` service.
22+
* Added `firstOnDemand` field for `com.databricks.sdk.service.compute.GcpAttributes`.
23+
* Added `usagePolicyId` field for `com.databricks.sdk.service.jobs.CreateJob`.
24+
* Added `usagePolicyId` field for `com.databricks.sdk.service.jobs.JobSettings`.
25+
* Added `usagePolicyId` field for `com.databricks.sdk.service.jobs.SubmitRun`.
26+
* Added `clientRequestId` and `usageContext` fields for `com.databricks.sdk.service.serving.QueryEndpointInput`.
27+
* Added `channelId`, `channelIdSet`, `oauthToken` and `oauthTokenSet` fields for `com.databricks.sdk.service.settings.SlackConfig`.
28+
* Added `SNAPSHOT` enum value for `com.databricks.sdk.service.ml.PublishSpecPublishMode`.
29+
* [Breaking] Changed `publishMode` field for `com.databricks.sdk.service.ml.PublishSpec` to be required.

databricks-sdk-java/src/main/java/com/databricks/sdk/WorkspaceClient.java

Lines changed: 82 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

databricks-sdk-java/src/main/java/com/databricks/sdk/core/error/ApiErrorBody.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -157,4 +157,26 @@ public abstract static class Builder {
157157
*/
158158
public abstract ApiErrorBody build();
159159
}
160+
161+
/**
162+
* Converts the error details to a list of ErrorDetail objects. This only supports the ErrorInfo
163+
* type.
164+
*
165+
* @param details The error details to convert.
166+
* @return A list of ErrorDetail objects.
167+
*/
168+
private static List<ErrorDetail> fromDetails(ErrorDetails details) {
169+
if (details == null) {
170+
return Collections.emptyList();
171+
}
172+
if (!details.errorInfo().isPresent()) {
173+
return Collections.emptyList();
174+
}
175+
return Arrays.asList(
176+
new ErrorDetail(
177+
"type.googleapis.com/google.rpc.ErrorInfo",
178+
details.errorInfo().get().reason(),
179+
details.errorInfo().get().domain(),
180+
details.errorInfo().get().metadata()));
181+
}
160182
}

databricks-sdk-java/src/main/java/com/databricks/sdk/core/error/details/ErrorDetails.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,10 @@
77
import java.util.List;
88
import java.util.Optional;
99

10+
/**
11+
* ErrorDetails contains the error details of an API error. It is the union of known error details
12+
* types and unknown details.
13+
*/
1014
@AutoValue
1115
@JsonDeserialize(using = ErrorDetailsDeserializer.class)
1216
public abstract class ErrorDetails {
@@ -32,7 +36,7 @@ public abstract class ErrorDetails {
3236
public abstract List<JsonNode> unknownDetails();
3337

3438
public static Builder builder() {
35-
return new AutoValue_ErrorDetails.Builder().setUnknownDetails(Collections.emptyList());
39+
return new AutoValue_ErrorDetails.Builder();
3640
}
3741

3842
@AutoValue.Builder
@@ -57,6 +61,17 @@ public abstract static class Builder {
5761

5862
public abstract Builder setUnknownDetails(List<JsonNode> unknownDetails);
5963

60-
public abstract ErrorDetails build();
64+
abstract List<JsonNode> unknownDetails();
65+
66+
abstract ErrorDetails autoBuild();
67+
68+
public ErrorDetails build() {
69+
try {
70+
unknownDetails();
71+
} catch (IllegalStateException e) {
72+
setUnknownDetails(Collections.emptyList());
73+
}
74+
return autoBuild();
75+
}
6176
}
6277
}

databricks-sdk-java/src/main/java/com/databricks/sdk/core/error/details/RetryInfo.java

Lines changed: 22 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -109,17 +109,34 @@ public Duration deserialize(JsonParser p, DeserializationContext ctxt) throws IO
109109
throw new IOException("Duration must be a string, got: " + node.getNodeType());
110110
}
111111

112-
// Parse duration string like "1.000000001s" or "30s"
113112
String delayStr = node.asText();
114113
if (!delayStr.endsWith("s")) {
115114
throw new IOException("Duration must end with 's' suffix: " + delayStr);
116115
}
117116

117+
String numeric = delayStr.substring(0, delayStr.length() - 1).trim();
118+
if (numeric.isEmpty()) {
119+
throw new IOException("Invalid duration format: " + delayStr);
120+
}
121+
if (numeric.startsWith("-")) {
122+
throw new IOException("Duration must be non-negative: " + delayStr);
123+
}
124+
125+
int dotIdx = numeric.indexOf('.');
126+
String secondsPart = dotIdx >= 0 ? numeric.substring(0, dotIdx) : numeric;
127+
String fractionPart = dotIdx >= 0 ? numeric.substring(dotIdx + 1) : "";
128+
129+
if (fractionPart.length() > 9) {
130+
throw new IOException("Fractional seconds precision exceeds nanoseconds: " + delayStr);
131+
}
132+
133+
String fractionPadded =
134+
fractionPart.isEmpty() ? "" : (fractionPart + "000000000").substring(0, 9);
135+
118136
try {
119-
String secondsStr = delayStr.substring(0, delayStr.length() - 1);
120-
double seconds = Double.parseDouble(secondsStr);
121-
long nanos = (long) (seconds * 1_000_000_000);
122-
return Duration.ofNanos(nanos);
137+
long seconds = secondsPart.isEmpty() ? 0L : Long.parseLong(secondsPart);
138+
long nanos = fractionPadded.isEmpty() ? 0L : Long.parseLong(fractionPadded);
139+
return Duration.ofSeconds(seconds, nanos);
123140
} catch (NumberFormatException e) {
124141
throw new IOException("Invalid duration format: " + delayStr, e);
125142
}

databricks-sdk-java/src/main/java/com/databricks/sdk/service/apps/App.java

Lines changed: 2 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)