Jenkins Blue Ocean made interesting design choices relating github-api interactions.
They mostly reused the existing API and OM, but in a few places they chose to
implement their own object mapping independent of this project. This is fine
as long as nothing in this project ever changes, including internals such
as ObjectMapper configuration or behavior.
Recent release have made changes to those internals which break assumptions made
in Blue Ocean.
This change exposes this project's MappingReader and MappingWriter to allow
for a fix to Blue Ocean requiring only minimal changes.
This doesn't prevent future changes from breaking Blue Ocean but at least makes
them much less likely.
Fixes#780
Turns out I do care about formatting a little. We have a lot of builders and chained methods.
I think it is easier to follow long chains when lined up veritcally.
This may be controversial but it we're doing it. Having code formatting needs to be consistent
and a non-issue during code review. I'm willing modify the configuration if people see a strong
need, but formatting needs to be present and enforced.
Elsewhere in this library, whenever there are multiple forms of the same
object, we map that to the same class and use lazy data retrieval to
fill missing fields.