RFR: Optional refactoring
Andrei Rybak
duke at openjdk.org
Sun Mar 26 08:43:46 UTC 2023
This is a follow-up to the email https://mail.openjdk.org/pipermail/jmh-dev/2023-January/003562.html
`java.util.Optional` isn't `Serializeable`. Because of that `org.openjdk.jmh.runner.options.TestOptions` fails with `java.io.NotSerializableException: java.util.Optional`, when `org.openjdk.jmh.util.Optional` is completely replaced with `java.util.Optional`. See [test results on branch `java-util-optional`](https://github.com/rybak/jmh/actions/runs/4326921418), ([one commit](https://github.com/rybak/jmh/commit/25b9cb382be7285a51446976247d036ac855fc91) on top of initial state of this PR).
I didn't look further into possibility of removing `Optional`s as fields of class `CommandLineOptions`. I think that the refactoring up until the drop-in replacement to `java.util.Optional` might still be worth it, at least from the point of making it more approachable for people who are familiar with `java.util.Optional`. So here are these changes for your consideration. Details are in the commit messages.
-------------
Commit messages:
- Optional: rename hasValue() to isPresent()
- Optional: rename eitherOf() to ofNullable()
- Optional: rename none() to empty()
- OptionsBuilder: refactor usage of Optional#orAnother()
- Runner: replace orAnother() with orElseGet()
- OptionsBuilder: extract method getOrOther
- OptionsBuilder: don't pass empty Optional to orAnother()
Changes: https://git.openjdk.org/jmh/pull/98/files
Webrev: https://webrevs.openjdk.org/?repo=jmh&pr=98&range=00
Stats: 323 lines in 12 files changed: 9 ins; 114 del; 200 mod
Patch: https://git.openjdk.org/jmh/pull/98.diff
Fetch: git fetch https://git.openjdk.org/jmh.git pull/98/head:pull/98
PR: https://git.openjdk.org/jmh/pull/98
More information about the jmh-dev
mailing list