Skip to content

Commit 50205c5

Browse files
Add @internalapi annotation to clarify public API surface. (#573)
## What changes are proposed in this pull request? This PR introduces a new `@InternalApi` annotation and applies it to internal SDK classes to clearly delineate the public API surface. The annotation marks classes intended for internal use only, which may change without notice. As the SDK grows, it's important to establish a clear contract with users about what constitutes the stable public API versus internal implementation details. Without this distinction, users might inadvertently depend on internal classes, leading to breakage when we refactor or improve the SDK internals. The stable public API now consists only of unmarked classes (e.g., `DatabricksConfig`, exceptions, error types, extension interfaces like `CredentialsProvider`). All core implementation classes in `com.databricks.sdk.core` packages are marked as internal and subject to change. ## How is this tested? This is a documentation-only change that adds annotations to existing classes without modifying their behavior.
1 parent bc9c672 commit 50205c5

File tree

73 files changed

+180
-0
lines changed

Some content is hidden

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

73 files changed

+180
-0
lines changed

NEXT_CHANGELOG.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,11 @@
1010

1111
### Documentation
1212

13+
* Add `@InternalApi` annotation to clarify the public API surface. Classes
14+
marked with `@InternalApi` are intended for internal use only and may change
15+
without notice. Only unmarked classes (e.g., `DatabricksConfig`, exceptions,
16+
error types, extension interfaces) are part of the stable public API.
17+
1318
### Internal Changes
1419

1520
### API Changes

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.databricks.sdk.core.utils.SystemTimer;
1515
import com.databricks.sdk.core.utils.Timer;
1616
import com.databricks.sdk.support.Header;
17+
import com.databricks.sdk.support.InternalApi;
1718
import com.fasterxml.jackson.core.JsonProcessingException;
1819
import com.fasterxml.jackson.databind.JavaType;
1920
import com.fasterxml.jackson.databind.ObjectMapper;
@@ -31,6 +32,7 @@
3132
* Simplified REST API client with retries, JSON POJO SerDe through Jackson and exception POJO
3233
* guessing
3334
*/
35+
@InternalApi
3436
public class ApiClient {
3537
public static class Builder {
3638
private Timer timer;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44
import com.databricks.sdk.core.oauth.OAuthHeaderFactory;
55
import com.databricks.sdk.core.oauth.Token;
66
import com.databricks.sdk.core.utils.AzureUtils;
7+
import com.databricks.sdk.support.InternalApi;
78
import com.fasterxml.jackson.databind.ObjectMapper;
89
import java.util.*;
910
import org.slf4j.Logger;
1011
import org.slf4j.LoggerFactory;
1112

13+
@InternalApi
1214
public class AzureCliCredentialsProvider implements CredentialsProvider {
1315
private final ObjectMapper mapper = new ObjectMapper();
1416
private static final Logger LOG = LoggerFactory.getLogger(AzureCliCredentialsProvider.class);

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.databricks.sdk.core;
22

3+
import com.databricks.sdk.support.InternalApi;
34
import java.util.HashMap;
45
import java.util.Map;
56

@@ -10,6 +11,7 @@
1011
* resources vary depending on the cloud environment: public, germany, govcloud, or china. Depending
1112
* on the operation, tokens scoped to a specific endpoint are needed.
1213
*/
14+
@InternalApi
1315
public class AzureEnvironment {
1416
private String name;
1517
private String serviceManagementEndpoint;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package com.databricks.sdk.core;
22

3+
import com.databricks.sdk.support.InternalApi;
34
import java.util.Base64;
45
import java.util.HashMap;
56
import java.util.Map;
67

8+
@InternalApi
79
public class BasicCredentialsProvider implements CredentialsProvider {
810
public static final String BASIC = "basic";
911

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package com.databricks.sdk.core;
22

3+
import com.databricks.sdk.support.InternalApi;
34
import com.fasterxml.jackson.core.JsonProcessingException;
45
import com.fasterxml.jackson.core.TreeNode;
56
import com.fasterxml.jackson.databind.JsonNode;
67
import com.fasterxml.jackson.databind.ObjectMapper;
78
import com.fasterxml.jackson.databind.node.ArrayNode;
89
import java.util.*;
910

11+
@InternalApi
1012
class BodyLogger {
1113
private final Set<String> redactKeys =
1214
new HashSet<String>() {

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.databricks.sdk.core.oauth.TokenSource;
55
import com.databricks.sdk.core.utils.Environment;
66
import com.databricks.sdk.core.utils.OSUtils;
7+
import com.databricks.sdk.support.InternalApi;
78
import com.fasterxml.jackson.databind.JsonNode;
89
import com.fasterxml.jackson.databind.ObjectMapper;
910
import java.io.IOException;
@@ -18,6 +19,7 @@
1819
import java.util.List;
1920
import org.apache.commons.io.IOUtils;
2021

22+
@InternalApi
2123
public class CliTokenSource implements TokenSource {
2224
private List<String> cmd;
2325
private String tokenTypeField;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package com.databricks.sdk.core;
22

3+
import com.databricks.sdk.support.InternalApi;
34
import java.lang.reflect.Field;
45
import java.time.Duration;
56
import java.util.Map;
67
import java.util.Objects;
78

9+
@InternalApi
810
class ConfigAttributeAccessor {
911
private final ConfigAttribute configAttribute;
1012
private final Field field;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.databricks.sdk.core;
22

33
import com.databricks.sdk.core.utils.Environment;
4+
import com.databricks.sdk.support.InternalApi;
45
import java.io.FileNotFoundException;
56
import java.io.FileReader;
67
import java.io.IOException;
@@ -15,6 +16,7 @@
1516
import org.slf4j.Logger;
1617
import org.slf4j.LoggerFactory;
1718

19+
@InternalApi
1820
public class ConfigLoader {
1921
private static final Logger LOG = LoggerFactory.getLogger(ConfigLoader.class);
2022

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,22 @@
33
/**
44
* CredentialsProvider is an interface that provides a HeaderFactory to authenticate requests to the
55
* Databricks API.
6+
*
7+
* <p>Users can implement this interface to provide custom authentication mechanisms. Once
8+
* implemented, the custom provider can be set on {@link DatabricksConfig} using {@link
9+
* DatabricksConfig#setCredentialsProvider(CredentialsProvider)}.
10+
*
11+
* <p><b>Note:</b> The methods in this interface are called internally by the SDK clients
12+
* (WorkspaceClient and AccountClient) during request authentication. Users implementing this
13+
* interface should not call these methods directly.
614
*/
715
public interface CredentialsProvider {
816
/**
917
* Returns the authentication type identifier for this credentials provider.
1018
*
19+
* <p><b>This method is called internally by the SDK</b> and should not be invoked directly by
20+
* users. It is used for logging and user-agent identification purposes.
21+
*
1122
* @return the authentication type as a string
1223
*/
1324
String authType();
@@ -17,6 +28,10 @@ public interface CredentialsProvider {
1728
*
1829
* <p>Note: A new HeaderFactory instance is returned on each invocation.
1930
*
31+
* <p><b>This method is called internally by the SDK</b> during client initialization and should
32+
* not be invoked directly by users. The SDK will call this method to obtain a HeaderFactory that
33+
* will be used to add authentication headers to each API request.
34+
*
2035
* @param config the Databricks configuration to use for authentication
2136
* @return a new HeaderFactory configured for authenticating API requests
2237
*/

0 commit comments

Comments
 (0)