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

[#1381] enh: Build on JDK 22 #1530

Merged
merged 1 commit into from
Jun 12, 2024
Merged

[#1381] enh: Build on JDK 22 #1530

merged 1 commit into from
Jun 12, 2024

Conversation

lprimak
Copy link
Contributor

@lprimak lprimak commented Jun 11, 2024

Added isTerminal() check to Hasher tool, as JDK 22 changed console functionality
Run JDK 22 in CI
fixes #1381

Following this checklist to help us incorporate your contribution quickly and easily:

  • Make sure there is a GitHub issue filed
    for the change (usually before you start working on it). Trivial changes like typos do not
    require a GitHub issue. Your pull request should address just this issue, without pulling in other changes.
  • Each commit in the pull request should have a meaningful subject line and body.
  • Format the pull request title like [#XXX] - Fixes bug in SessionManager,
    where you replace #XXX with the appropriate GitHub issue. Best practice
    is to use the GitHub issue title in the pull request title and in the first line of the commit message.
  • Write a pull request description that is detailed enough to understand what the pull request does, how, and why.
  • add fixes #XXX if merging the PR should close a related issue.
  • Run mvn verify to make sure basic checks pass. A more thorough check will be performed on your pull request automatically.
  • If you have a group of commits related to the same change, please squash your commits into one and force push your branch using git rebase -i.
  • Committers: Make sure a milestone is set on the PR

Trivial changes like typos do not require a GitHub issue (javadoc, comments...).
In this case, just format the pull request title like [DOC] - Add javadoc in SessionManager.

If this is your first contribution, you have to read the Contribution Guidelines

If your pull request is about ~20 lines of code you don't need to sign an Individual Contributor License Agreement
if you are unsure please ask on the developers list.

To make clear that you license your contribution under the Apache License Version 2.0, January 2004
you have to acknowledge this by using the following check-box.

@lprimak lprimak requested a review from bmarwell June 11, 2024 19:18
@lprimak lprimak self-assigned this Jun 11, 2024
@lprimak lprimak added this to the 2.0.2 milestone Jun 11, 2024
@lprimak lprimak changed the title enh: Build on JDK 22 [#1381] enh: Build on JDK 22 Jun 11, 2024
Copy link
Contributor

@bmarwell bmarwell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

-1 for adding a dependency for a simple reflection check, but otherwise good from a coding logic PoV

Comment on lines 40 to 49
<artifactId>shiro-core</artifactId>
<exclusions>
<!-- BeanUtils is for ini config - this simple command line program
does not init a shiro environment, so we don't need it: -->
<exclusion>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
</exclusion>
</exclusions>
</dependency>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you really want to introduce one extra dependency for just one invocation?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was able to make reflection a one-liner, so that works just as well as PropertyUtils
Thanks!

private static boolean isTerminal(java.io.Console console) throws IOException {
try {
// isTerminal is only available in Java 22 or later
return console != null && (Boolean) PropertyUtils.getProperty(console, "terminal");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use standard reflection here? I dont want to introduce a dependency just for one line.

Also, newer JDKs will bring better Reflection tools iirc.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

done

Comment on lines 498 to 500
if (!isTerminal(console)) {
throw new IllegalStateException("Cannot confirm password when console is not available.");
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe on non-Terminals, just use one input instead of to (i.e. do not throw an exception and just go for it).
Otherwise this might break script invocations.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

great idea, done

tools/hasher/pom.xml Outdated Show resolved Hide resolved
@lprimak lprimak requested a review from bmarwell June 12, 2024 18:29
@lprimak lprimak dismissed bmarwell’s stale review June 12, 2024 18:32

all comments resolved

@lprimak lprimak merged commit 32d2a22 into apache:main Jun 12, 2024
26 of 27 checks passed
@lprimak lprimak deleted the jdk-22-compat branch June 12, 2024 19:15
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.

[Enhancement] Make Shiro compile on JDK 22
2 participants