Fix: Ensure correct handling of _included entities in Entity class#225
Merged
antechrestos merged 1 commit intocloudfoundry-community:mainfrom Jan 14, 2025
Conversation
Member
|
@lightedcode thank for the report! Great solution indeed. ANother solution would have been Thank you |
antechrestos
approved these changes
Jan 14, 2025
Member
|
@lightedcode released in 1.38.2. Thank you again |
Contributor
Author
You're very welcome! I'm glad to see the fix released in 1.38.2. It was a pleasure contributing. Your solution also gave me new insights and ideas — thank you for sharing it! |
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.
Background
I encountered this issue while calling the
roles.listmethod with theincludeparameter, specifically:When iterating over the returned
rolesobject, I attempted to access the includeduserandspacedata using dynamically generated methods, such asrole.user()androle.space(). However, I noticed that these methods did not return the correct associated data. Instead, both methods returned the same data, corresponding to the last entity processed in the_includeddictionary.Root Cause:
The problematic line of code is:
Here, the
lambdafunction captures the variableentityby reference. Sinceentityis updated during each iteration of the loop, all dynamically created methods (e.g.,role.user()androle.space()) share the same reference toentity. As a result, after the loop completes, all methods return the data of the last processed entity.Solution:
To fix this issue, I replaced the
lambdawithfunctools.partial, which binds the current value ofentityto the dynamically created method. This ensures that each method maintains an independent reference to the correctentityvalue.If you have any suggestions, or need additional details about the fix, please feel free to contact me. I'm happy to provide further clarification or make additional changes if necessary.
Looking forward to your feedback and I hope this contribution can help improve the project!