fix: clone transformation context instead of creating a new one #1091
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.
This PR attempts to fix an issue I am having while using custom
TransformationContext
classesUse-case
I would like to add some meta data to the transformed Data and DataCollections (including all nested items), but only in some scenarios. For me this is when transforming a Data class to Reponse. For example
Should result in the response:
Additional data appends the data to the data part so I ruled that out, but I figured out I could overwrite the
TransformedDataCollectableResolver
andTransformedDataResolver
and use a customTransformationContext
. Like this:This works!
The problem
The problem is that it only works on the top level and not on nested data structures. This is because when properties are resolved in the
VisibleDataFieldsResolver
, the$transformationContext
is newly created asTransformationContext
and not as my customResponseTransformationContext
.The solution
Changing the
VisibleDataFieldsResolver
to clone (and reset) the current$transformationContext
instead of creating it fixes my issue.As far as I saw this is the only place that the context gets created, besides the initial creation if not provided.
If you see a better solution for my situation, please let me know!