Skip to content

Javadoc: Note that parsed option values are converted on every call - #447

Merged
garydgregory merged 1 commit into
apache:masterfrom
oscerd:javadoc-parsed-value-conversion
Oct 29, 2026
Merged

garydgregory merged 1 commit into
apache:masterfrom
oscerd:javadoc-parsed-value-conversion

Conversation

@oscerd

@oscerd oscerd commented Oct 28, 2026 •

Copy link
Copy Markdown
Contributor

CommandLine.getParsedOptionValue() and getParsedOptionValues() run the option's converter every time they're called; nothing is cached. That's harmless for numbers or strings, but it's easy to be caught out with a converter that has side effects. With a FileInputStream option, for example, every call opens a new stream that the caller has to close.

This adds a short paragraph about it to the CommandLine class Javadoc. I didn't add caching on purpose: it would change behavior, because callers would start getting the same, possibly mutable, instance back from every call.

Javadoc only, no behavior change.

  • Read the contribution guidelines for this project.
  • Read the ASF Generative Tooling Guidance if you use Artificial Intelligence (AI).
  • I used AI to create any part of, or all of, this pull request. Which AI tool was used to create this pull request, and to what extent did it contribute? Claude Code (Claude Opus 5.5) was used to analyze the issue and to prepare the change and this description.
  • Run a successful build using the default Maven goal with mvn; that's mvn on the command line by itself.
  • Write unit tests that match behavioral changes, where the tests fail if the changes to the runtime are not applied. This may not always be possible, but it is a best practice. Not applicable: Javadoc only.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • Each commit in the pull request should have a meaningful subject line and body. Note that a maintainer may squash commits during the merge process.

🤖 Generated with Claude Code

getParsedOptionValue() and getParsedOptionValues() run the option's
Converter each time they are called and don't cache the result. That
doesn't matter for numbers or strings, but with a converter that has
side effects, like the default FileInputStream one, every call opens a
new stream. Mention it in the CommandLine class Javadoc.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@garydgregory
garydgregory merged commit 1e89544 into apache:master Oct 29, 2026
10 checks passed
garydgregory added a commit that referenced this pull request Oct 29, 2026
@garydgregory

Copy link
Copy Markdown
Member

TY @oscerd , merged. Note I made a small improvement in commit ee81cda.

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