Skip spring.data.redis.ssl rename when ssl has child keys#1028
Merged
Conversation
Add `except: [bundle]` to the spring.cassandra.ssl, spring.data.cassandra.ssl, and spring.data.redis.ssl renames in SpringBootProperties_3_1. When `ssl` is already a map containing `bundle:` (the 3.1+ shape), the underlying YAML ChangePropertyKey would otherwise relocate the entire subtree, turning `spring.data.redis.ssl.bundle` into `spring.data.redis.ssl.enabled.bundle`. Closes #1027
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
SpringBootProperties_3_1renamesspring.data.redis.ssl→spring.data.redis.ssl.enabled(and the cassandra equivalents). The underlying YAMLChangePropertyKeymatches on thesslnode, so whensslis already a map with child keys (the 3.1+ shape), the whole subtree is relocated:…becomes…
i.e.
spring.data.redis.ssl.bundlesilently turns intospring.data.redis.ssl.enabled.bundle.Adding
except: [bundle]to the three affectedChangeSpringPropertyKeyentries tells the recipe to skip the rename wheneversslhas abundlechild, while still renaming the plain booleanssl: truecase. Same pattern is already used inspring-boot-22-properties.yml,spring-boot-24-properties.yml, andspring-cloud-2025.yml.Test plan
redisSslBundleNotMangledtest inChangeSpringPropertyKeyTestconfirmsspring.data.redis.ssl.bundleandspring.cassandra.ssl.bundleare left untouched in both YAML and properties files.redisSslBooleanStillRenamedtest confirms the original boolean →.enabledrename still works.ChangeSpringPropertyKeyTestpasses locally.Follow-up
While writing the test I noticed a separate quirk on the cross-tree rename
spring.data.cassandra.ssl→spring.cassandra.ssl.enabled: withexcept: [bundle]set and abundlechild present, an empty top-levelcassandra.ssl.enabled:node gets created. The same-parent renames covered here are correct; the cross-tree case looks like a pre-existing issue in the underlyingorg.openrewrite.yaml.ChangePropertyKeyand probably deserves a separate fix inopenrewrite/rewrite.