Capture all fields in Other class to enable more powerful roles #584
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.
Other
This adds
unmappedFields
map with@JsonAnyGetter
/@JsonAnySetter
to capture all fields. Extra fields are added to rendering data map atOther::asMap()
to allow their usage in roles, which allows more powerful roles becauseresourceName
is not limited to fields inOther
.resourceName
in roles limits to fields in Other class (transactionId, idempotence, group, topic, subject, connector).When rendering a role fields with custom names from yaml becomes available.
Can't think of anything particularly hazardous. None of the previous tests needed fixing. Spotting typos becomes harder and existing fields in
Other
become somewhat unnecessary.I know project is in hibernation state, but I made this anyway if community finds this useful. Please let me know what you think about this approach. I wrote initial documentation, I can improve it if you think this can be merged. Name mirrorMaker in tests and in documentation is probably a poor choice; permissions given in those are not particularly good example of mirror maker acls, it was just a first public example of an app that uses several topics and has some naming requirements.