Fix NPE in string function on DatabricksConfig#285
Conversation
| List<String> buf = new ArrayList<>(); | ||
|
|
||
| Map<String, String> getEnvAllEnv = cfg.getEnv().getEnv(); | ||
| Environment env = cfg.getEnv(); |
There was a problem hiding this comment.
If my understanding is correct, then this would only happen for when we do config.toString() since we directly call debugString, for the other case (where we call debugString in makeNicerError) we have a check that checks for the null env:
if (cfg.getEnv() != null) {
debugString = debugString(cfg);
}
Since we are putting a null check at the base (in debugString), we might have to remove this check in makeNicerError and update the if condition on line 189, since debugString would never be empty: !debugString.isEmpty()
Otherwise the message that we get from makeNicerError won't contain Env: <none>, Config: <empty>
There was a problem hiding this comment.
I don't think we need to change anything about that other callsite. Basically, it's saying that we won't include the config in the makeNicerError message if it is not yet resolved, but we can still include that in DatabricksConfig's toString()
| List<String> buf = new ArrayList<>(); | ||
|
|
||
| Map<String, String> getEnvAllEnv = cfg.getEnv().getEnv(); | ||
| Environment env = cfg.getEnv(); |
There was a problem hiding this comment.
I don't think we need to change anything about that other callsite. Basically, it's saying that we won't include the config in the makeNicerError message if it is not yet resolved, but we can still include that in DatabricksConfig's toString()
* Fix OIDC Endpoint Fetching in DatabricksConfig for Workspace Clients ([#277](#277)). * Fix NullPointerException when reading error response body ([#276](#276)). * Update SDK to OpenAPI spec ([#280](#280)). * Remove unused script from repository root ([#281](#281)). * Add missing return ([#283](#283)). * Incorporate host in request after `authenticate()` call ([#282](#282)). * Fix NPE in string function on DatabricksConfig ([#285](#285)). * Add instructions for building a shaded JAR ([#284](#284)). * Fix test that was picking up configuration from the environment ([#287](#287)). API Changes: * Added `ingestionDefinition` field for `com.databricks.sdk.service.pipelines.CreatePipeline`. * Added `ingestionDefinition` field for `com.databricks.sdk.service.pipelines.EditPipeline`. * Added `ingestionDefinition` field for `com.databricks.sdk.service.pipelines.PipelineSpec`. * Added `com.databricks.sdk.service.pipelines.IngestionConfig` class. * Added `com.databricks.sdk.service.pipelines.ManagedIngestionPipelineDefinition` class. * Added `com.databricks.sdk.service.pipelines.SchemaSpec` class. * Added `com.databricks.sdk.service.pipelines.TableSpec` class. * Changed `create()` method for `workspaceClient.apps()` service . New request type is `com.databricks.sdk.service.serving.CreateAppRequest` class. * Changed `create()` method for `workspaceClient.apps()` service to return `com.databricks.sdk.service.serving.App` class. * Removed `deleteApp()` method for `workspaceClient.apps()` service. * Removed `getApp()` method for `workspaceClient.apps()` service. * Removed `getAppDeploymentStatus()` method for `workspaceClient.apps()` service. * Removed `getApps()` method for `workspaceClient.apps()` service. * Removed `getEvents()` method for `workspaceClient.apps()` service. * Added `createDeployment()` method for `workspaceClient.apps()` service. * Added `delete()` method for `workspaceClient.apps()` service. * Added `get()` method for `workspaceClient.apps()` service. * Added `getDeployment()` method for `workspaceClient.apps()` service. * Added `getEnvironment()` method for `workspaceClient.apps()` service. * Added `list()` method for `workspaceClient.apps()` service. * Added `listDeployments()` method for `workspaceClient.apps()` service. * Added `stop()` method for `workspaceClient.apps()` service. * Added `update()` method for `workspaceClient.apps()` service. * Added `getOpenApi()` method for `workspaceClient.servingEndpoints()` service. * Removed `com.databricks.sdk.service.serving.AppEvents` class. * Removed `com.databricks.sdk.service.serving.AppManifest` class. * Removed `com.databricks.sdk.service.serving.AppServiceStatus` class. * Added `routeOptimized` field for `com.databricks.sdk.service.serving.CreateServingEndpoint`. * Removed `com.databricks.sdk.service.serving.DeleteAppResponse` class. * Removed `com.databricks.sdk.service.serving.DeployAppRequest` class. * Removed `com.databricks.sdk.service.serving.DeploymentStatus` class. * Removed `com.databricks.sdk.service.serving.DeploymentStatusState` class. * Removed `com.databricks.sdk.service.serving.GetAppDeploymentStatusRequest` class. * Removed `com.databricks.sdk.service.serving.GetAppResponse` class. * Removed `com.databricks.sdk.service.serving.GetEventsRequest` class. * Removed `com.databricks.sdk.service.serving.ListAppEventsResponse` class. * Changed `apps` field for `com.databricks.sdk.service.serving.ListAppsResponse` to `com.databricks.sdk.service.serving.AppList` class. * Added `endpointUrl` field for `com.databricks.sdk.service.serving.ServingEndpointDetailed`. * Added `routeOptimized` field for `com.databricks.sdk.service.serving.ServingEndpointDetailed`. * Added `com.databricks.sdk.service.serving.App` class. * Added `com.databricks.sdk.service.serving.AppDeployment` class. * Added `com.databricks.sdk.service.serving.AppDeploymentState` class. * Added `com.databricks.sdk.service.serving.AppDeploymentStatus` class. * Added `com.databricks.sdk.service.serving.AppEnvironment` class. * Added `com.databricks.sdk.service.serving.AppState` class. * Added `com.databricks.sdk.service.serving.AppStatus` class. * Added `com.databricks.sdk.service.serving.CreateAppDeploymentRequest` class. * Added `com.databricks.sdk.service.serving.CreateAppRequest` class. * Added `com.databricks.sdk.service.serving.EnvVariable` class. * Added `com.databricks.sdk.service.serving.GetAppDeploymentRequest` class. * Added `com.databricks.sdk.service.serving.GetAppEnvironmentRequest` class. * Added `com.databricks.sdk.service.serving.GetOpenApiRequest` class. * Added `Object` class. * Added `com.databricks.sdk.service.serving.ListAppDeploymentsRequest` class. * Added `com.databricks.sdk.service.serving.ListAppDeploymentsResponse` class. * Added `com.databricks.sdk.service.serving.ListAppsRequest` class. * Added `com.databricks.sdk.service.serving.StopAppRequest` class. * Added `Object` class. * Added `com.databricks.sdk.service.serving.UpdateAppRequest` class. * Removed `workspaceClient.cspEnablement()` service. * Removed `workspaceClient.esmEnablement()` service. * Added `workspaceClient.complianceSecurityProfile()` service. * Added `workspaceClient.enhancedSecurityMonitoring()` service. * Removed `com.databricks.sdk.service.settings.CspEnablement` class. * Removed `com.databricks.sdk.service.settings.CspEnablementSetting` class. * Removed `com.databricks.sdk.service.settings.EsmEnablement` class. * Removed `com.databricks.sdk.service.settings.EsmEnablementSetting` class. * Removed `com.databricks.sdk.service.settings.GetCspEnablementSettingRequest` class. * Removed `com.databricks.sdk.service.settings.GetEsmEnablementSettingRequest` class. * Removed `com.databricks.sdk.service.settings.UpdateCspEnablementSettingRequest` class. * Removed `com.databricks.sdk.service.settings.UpdateEsmEnablementSettingRequest` class. * Added `com.databricks.sdk.service.settings.ComplianceSecurityProfile` class. * Added `com.databricks.sdk.service.settings.ComplianceSecurityProfileSetting` class. * Added `com.databricks.sdk.service.settings.EnhancedSecurityMonitoring` class. * Added `com.databricks.sdk.service.settings.EnhancedSecurityMonitoringSetting` class. * Added `com.databricks.sdk.service.settings.GetComplianceSecurityProfileSettingRequest` class. * Added `com.databricks.sdk.service.settings.GetEnhancedSecurityMonitoringSettingRequest` class. * Added `com.databricks.sdk.service.settings.UpdateComplianceSecurityProfileSettingRequest` class. * Added `com.databricks.sdk.service.settings.UpdateEnhancedSecurityMonitoringSettingRequest` class. * Added `tags` field for `com.databricks.sdk.service.sql.DashboardEditContent`. * Added `tags` field for `com.databricks.sdk.service.sql.QueryEditContent`. * Added `catalog` field for `com.databricks.sdk.service.sql.QueryOptions`. * Added `schema` field for `com.databricks.sdk.service.sql.QueryOptions`. * Added `tags` field for `com.databricks.sdk.service.sql.QueryPostContent`. * Added `query` field for `com.databricks.sdk.service.sql.Visualization`. OpenAPI SHA: 84f9315bc9cdcf3917f764cf608255a74271ab2c, Date: 2024-05-06
## 0.25.0 ### New Features and Improvements * Fix OIDC Endpoint Fetching in DatabricksConfig for Workspace Clients ([#277](#277)). * Fix NullPointerException when reading error response body ([#276](#276)). * Incorporate host in request after `authenticate()` call ([#282](#282)). * Fix NPE in string function on DatabricksConfig ([#285](#285)). ### Documentation Changes * Add instructions for building a shaded JAR ([#284](#284)). ### API Changes: * Added `ingestionDefinition` field for `com.databricks.sdk.service.pipelines.CreatePipeline`, `com.databricks.sdk.service.pipelines.EditPipeline` and `com.databricks.sdk.service.pipelines.PipelineSpec` * Changed `create()` method for `workspaceClient.apps()` service . New request type is `com.databricks.sdk.service.serving.CreateAppRequest` class. * Changed `create()` method for `workspaceClient.apps()` service to return `com.databricks.sdk.service.serving.App` class. * Removed `deleteApp()`, `getApp()`, `getApps()` and `getEvents()` method for `workspaceClient.apps()` service. * Added `createDeployment()`, `delete()`, `get()`, `getDeployment()`, `getEnvironment()`, `list()`, `listDeployments()`, `stop()`, and `update()` methods for `workspaceClient.apps()` service. * Added `getOpenApi()` method for `workspaceClient.servingEndpoints()` service. * Changed `apps` field for `com.databricks.sdk.service.serving.ListAppsResponse` to `com.databricks.sdk.service.serving.AppList` class. * Added `routeOptimized` field for `com.databricks.sdk.service.serving.CreateServingEndpoint`. * Added `endpointUrl` field for `com.databricks.sdk.service.serving.ServingEndpointDetailed`. * Added `routeOptimized` field for `com.databricks.sdk.service.serving.ServingEndpointDetailed`. * Added `tags` field for `com.databricks.sdk.service.sql.DashboardEditContent`. `com.databricks.sdk.service.sql.QueryEditContent` and `com.databricks.sdk.service.sql.QueryPostContent`. * Added `catalog` field for `com.databricks.sdk.service.sql.QueryOptions`. * Added `schema` field for `com.databricks.sdk.service.sql.QueryOptions`. * Added `query` field for `com.databricks.sdk.service.sql.Visualization`. * Added `com.databricks.sdk.service.pipelines.IngestionConfig` class. * Added `com.databricks.sdk.service.pipelines.ManagedIngestionPipelineDefinition` class. * Added `com.databricks.sdk.service.pipelines.SchemaSpec` class. * Added `com.databricks.sdk.service.pipelines.TableSpec` class. * Added `com.databricks.sdk.service.serving.App` class. * Added `com.databricks.sdk.service.serving.AppDeployment` class. * Added `com.databricks.sdk.service.serving.AppDeploymentState` class. * Added `com.databricks.sdk.service.serving.AppDeploymentStatus` class. * Added `com.databricks.sdk.service.serving.AppEnvironment` class. * Added `com.databricks.sdk.service.serving.AppState` class. * Added `com.databricks.sdk.service.serving.AppStatus` class. * Added `com.databricks.sdk.service.serving.CreateAppDeploymentRequest` class. * Added `com.databricks.sdk.service.serving.CreateAppRequest` class. * Added `com.databricks.sdk.service.serving.EnvVariable` class. * Added `com.databricks.sdk.service.serving.GetAppDeploymentRequest` class. * Added `com.databricks.sdk.service.serving.GetAppEnvironmentRequest` class. * Added `com.databricks.sdk.service.serving.GetOpenApiRequest` class. * Added `Object` class. * Added `com.databricks.sdk.service.serving.ListAppDeploymentsRequest` class. * Added `com.databricks.sdk.service.serving.ListAppDeploymentsResponse` class. * Added `com.databricks.sdk.service.serving.ListAppsRequest` class. * Added `com.databricks.sdk.service.serving.StopAppRequest` class. * Added `Object` class. * Added `com.databricks.sdk.service.serving.UpdateAppRequest` class. * Added `com.databricks.sdk.service.settings.ComplianceSecurityProfile` class. * Added `com.databricks.sdk.service.settings.ComplianceSecurityProfileSetting` class. * Added `com.databricks.sdk.service.settings.EnhancedSecurityMonitoring` class. * Added `com.databricks.sdk.service.settings.EnhancedSecurityMonitoringSetting` class. * Added `com.databricks.sdk.service.settings.GetComplianceSecurityProfileSettingRequest` class. * Added `com.databricks.sdk.service.settings.GetEnhancedSecurityMonitoringSettingRequest` class. * Added `com.databricks.sdk.service.settings.UpdateComplianceSecurityProfileSettingRequest` class. * Added `com.databricks.sdk.service.settings.UpdateEnhancedSecurityMonitoringSettingRequest` class. * Added `workspaceClient.complianceSecurityProfile()` service. * Added `workspaceClient.enhancedSecurityMonitoring()` service. * Removed `workspaceClient.cspEnablement()` service. * Removed `workspaceClient.esmEnablement()` service. * Removed `com.databricks.sdk.service.serving.AppEvents` class. * Removed `com.databricks.sdk.service.serving.AppManifest` class. * Removed `com.databricks.sdk.service.serving.AppServiceStatus` class. * Removed `com.databricks.sdk.service.serving.DeleteAppResponse` class. * Removed `com.databricks.sdk.service.serving.DeployAppRequest` class. * Removed `com.databricks.sdk.service.serving.DeploymentStatus` class. * Removed `com.databricks.sdk.service.serving.DeploymentStatusState` class. * Removed `com.databricks.sdk.service.serving.GetAppDeploymentStatusRequest` class. * Removed `com.databricks.sdk.service.serving.GetAppResponse` class. * Removed `com.databricks.sdk.service.serving.GetEventsRequest` class. * Removed `com.databricks.sdk.service.serving.ListAppEventsResponse` class. * Removed `com.databricks.sdk.service.settings.CspEnablement` class. * Removed `com.databricks.sdk.service.settings.CspEnablementSetting` class. * Removed `com.databricks.sdk.service.settings.EsmEnablement` class. * Removed `com.databricks.sdk.service.settings.EsmEnablementSetting` class. * Removed `com.databricks.sdk.service.settings.GetCspEnablementSettingRequest` class. * Removed `com.databricks.sdk.service.settings.GetEsmEnablementSettingRequest` class. * Removed `com.databricks.sdk.service.settings.UpdateCspEnablementSettingRequest` class. * Removed `com.databricks.sdk.service.settings.UpdateEsmEnablementSettingRequest` class. OpenAPI SHA: 84f9315bc9cdcf3917f764cf608255a74271ab2c, Date: 2024-05-06 ### Internal Changes * Update SDK to OpenAPI spec ([#280](#280)). * Remove unused script from repository root ([#281](#281)). * Add missing return ([#283](#283)). * Fix test that was picking up configuration from the environment ([#287](#287)).
Changes
If the configuration isn't resolved, the
envfield will benull, and thetoStringfunction would throw an NPE. This change fixes that and adds a few tests. I changed the string output to always be non-empty, even if no properties are set.Tests
Unit tests.