Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add method to add metadata section values as a dictionary (restarted) #470

Conversation

robinmacharg
Copy link
Contributor

@robinmacharg robinmacharg commented Feb 25, 2020

[Note: this PR replaces #456 (Branch here) which was proving difficult to merge. The PR text is largely unchanged.]

Goal

Adds a BugsnagMetadata.addMetadataToSection:values: method to allow merging arbitrary dictionaries with preexisting Metadata.

Design

Simple fast enumeration loop over provided values with appropriate checks for:

  • Validity of Key (String subclass)
  • Validity of Value (can be sanitised: a recursive check that all (nested) values are of type Number, String, Array, Dictionary or Null

Conditional addition/deletion depending on whether value is null or not. There is a check to ensure that empty sections are not created for (failing) invalid values. Invalid values are logged and ignored. Delegate callback is called only where there is a material - CRUD - change to the metadata.

Changeset

  • Method added to BugsnagMetadata.
  • Unit Tests added.

Tests

  • Added Unit tests only. This change affects the framework API and doesn't change any external aspect.
  • CI passes.

Review

Outstanding Questions

  • This pull request is ready for:
    • Initial review of the intended approach, not yet feature complete
    • Structural review of the classes, functions, and properties modified
    • Final review
  • The correct target branch has been selected (master for fixes, next for
    features)
  • Consistency across platforms for structures or concepts added or modified
  • Consistency between the changeset and the goal stated above
  • Internal consistency with the rest of the library - is there any overlap between existing interfaces and any which have been added?
  • Usage friction - is the proposed change in usage cumbersome or complicated?
  • Performance and complexity - are there any cases of unexpected O(n^3) when iterating, recursing, flat mapping, etc?
  • Concurrency concerns - if components are accessed asynchronously, what issues will arise
  • Thoroughness of added tests and any missing edge cases
  • Idiomatic use of the language

@robinmacharg robinmacharg force-pushed the robinmacharg/add-add-metadata-section-values-restarted branch from bf4e0c6 to 38e2f19 Compare February 25, 2020 19:14
CHANGELOG.md Outdated Show resolved Hide resolved
CHANGELOG.md Outdated Show resolved Hide resolved
Source/BugsnagMetadata.m Outdated Show resolved Hide resolved
@robinmacharg robinmacharg marked this pull request as ready for review February 26, 2020 11:20
@robinmacharg robinmacharg self-assigned this Feb 27, 2020
@kattrali kattrali force-pushed the robinmacharg/add-add-metadata-section-values-restarted branch from d893a20 to 16ad265 Compare February 27, 2020 12:05
@kattrali kattrali merged commit 8ab74ff into spec-compliance Feb 27, 2020
@kattrali kattrali deleted the robinmacharg/add-add-metadata-section-values-restarted branch February 27, 2020 12:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants