Skip to content

J21 Language updates through mekhq.campaign.market#8890

Merged
rjhancock merged 1 commit into
MegaMek:mainfrom
rjhancock:language-updates
Apr 21, 2026
Merged

J21 Language updates through mekhq.campaign.market#8890
rjhancock merged 1 commit into
MegaMek:mainfrom
rjhancock:language-updates

Conversation

@rjhancock

Copy link
Copy Markdown
Collaborator

No description provided.

Copilot AI review requested due to automatic review settings April 21, 2026 04:51
@rjhancock rjhancock requested a review from a team as a code owner April 21, 2026 04:51
@codecov

codecov Bot commented Apr 21, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 7.69231% with 48 lines in your changes missing coverage. Please review.
✅ Project coverage is 13.67%. Comparing base (7df5ef6) to head (84e961b).
⚠️ Report is 39 commits behind head on main.

Files with missing lines Patch % Lines
MekHQ/src/mekhq/campaign/force/Formation.java 28.57% 8 Missing and 2 partials ⚠️
...n/campaignOptions/CampaignOptionsUnmarshaller.java 0.00% 8 Missing ⚠️
.../campaign/market/contractMarket/ContractTerms.java 0.00% 4 Missing ⚠️
...ampaign/market/contractMarket/MissionSelector.java 0.00% 4 Missing ⚠️
...ampaign/camOpsReputation/ReputationController.java 0.00% 3 Missing ⚠️
...mekhq/campaign/camOpsReputation/SupportRating.java 0.00% 2 Missing ⚠️
...on/atb/scenario/AlliedTraitorsBuiltInScenario.java 0.00% 2 Missing ⚠️
...mekhq/campaign/againstTheBot/AtBConfiguration.java 0.00% 1 Missing ⚠️
.../campaign/camOpsReputation/AbstractUnitRating.java 0.00% 1 Missing ⚠️
...aign/camOpsReputation/AverageExperienceRating.java 0.00% 1 Missing ⚠️
... and 12 more
Additional details and impacted files
@@             Coverage Diff              @@
##               main    #8890      +/-   ##
============================================
+ Coverage     13.60%   13.67%   +0.06%     
- Complexity     8140     8179      +39     
============================================
  Files          1310     1309       -1     
  Lines        169503   169180     -323     
  Branches      25538    25484      -54     
============================================
+ Hits          23065    23132      +67     
+ Misses       144133   143717     -416     
- Partials       2305     2331      +26     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rjhancock rjhancock merged commit 12e91b0 into MegaMek:main Apr 21, 2026
11 checks passed

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR modernizes MekHQ code under mekhq.campaign.market (and adjacent packages) for Java 21 usage and continues cleanup of legacy/deprecated APIs.

Changes:

  • Replaces MathUtility.clamp(...) and various list.get(0) usages with Java 21 standard/library alternatives (e.g., Math.clamp(...), getFirst()).
  • Removes or further deprecates unused legacy methods/classes (including full removal of deprecated RATManager).
  • Minor logging/message and formatting adjustments while touching the above call sites.

Reviewed changes

Copilot reviewed 44 out of 44 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
MekHQ/src/mekhq/campaign/universe/RATManager.java Removes deprecated RATManager implementation.
MekHQ/src/mekhq/campaign/mission/atb/scenario/AlliedTraitorsBuiltInScenario.java Uses getFirst() when selecting the first special-scenario enemy group.
MekHQ/src/mekhq/campaign/mission/atb/scenario/AceDuelBuiltInScenario.java Uses getFirst() when selecting the first special-scenario enemy group.
MekHQ/src/mekhq/campaign/market/unitMarket/AtBMonthlyUnitMarket.java Uses getFirst() when selecting first active contract.
MekHQ/src/mekhq/campaign/market/personnelMarket/markets/PersonnelMarketMekHQ.java Switches clamp usage to Math.clamp(...).
MekHQ/src/mekhq/campaign/market/personnelMarket/markets/PersonnelMarketCamOpsStrict.java Removes unused import.
MekHQ/src/mekhq/campaign/market/personnelMarket/markets/NewPersonnelMarket.java Removes deprecated no-arg report helper.
MekHQ/src/mekhq/campaign/market/enums/ContractMarketMethod.java Deprecates legacy isCamOps() helper.
MekHQ/src/mekhq/campaign/market/contractMarket/MissionSelector.java Switches clamp usage to Math.clamp(...).
MekHQ/src/mekhq/campaign/market/contractMarket/ContractTypePicker.java Switches clamp usage to Math.clamp(...).
MekHQ/src/mekhq/campaign/market/contractMarket/ContractTerms.java Switches clamp usage to Math.clamp(...); deprecates legacy accessor.
MekHQ/src/mekhq/campaign/market/contractMarket/AtbMonthlyContractMarket.java Switches clamp usage to Math.clamp(...).
MekHQ/src/mekhq/campaign/market/contractMarket/AbstractContractMarket.java Removes deprecated/unused method and unused import.
MekHQ/src/mekhq/campaign/market/PersonnelMarket.java Deprecates legacy hooks; uses getFirst() for report subject selection.
MekHQ/src/mekhq/campaign/market/PartsStore.java Deprecates legacy lookup API.
MekHQ/src/mekhq/campaign/log/ServiceLogger.java Deprecates older overloads.
MekHQ/src/mekhq/campaign/log/PerformanceLogger.java Deprecates older overload.
MekHQ/src/mekhq/campaign/io/CampaignXmlParser.java Improves warning log formatting (parameterized logging).
MekHQ/src/mekhq/campaign/io/CampaignXmlParseException.java Deprecates constructors.
MekHQ/src/mekhq/campaign/icons/enums/OperationalStatus.java Removes MathUtility usage; adds deprecations and updates clamp call.
MekHQ/src/mekhq/campaign/icons/enums/LayeredFormationIconLayer.java Deprecates legacy getters/helpers.
MekHQ/src/mekhq/campaign/handler/XPHandler.java Deprecates legacy event handlers.
MekHQ/src/mekhq/campaign/force/FormationLevel.java Deprecates legacy helpers; minor formatting touch.
MekHQ/src/mekhq/campaign/force/Formation.java Refactors formatting; deprecates legacy commander APIs; uses getFirst() where appropriate.
MekHQ/src/mekhq/campaign/finances/Loan.java Switches clamp usage to Math.clamp(...).
MekHQ/src/mekhq/campaign/finances/CurrencyManager.java Deprecates legacy formatter accessor.
MekHQ/src/mekhq/campaign/events/transactions/TransactionChangedEvent.java Deprecates legacy accessors.
MekHQ/src/mekhq/campaign/events/persons/PersonForceAssignmentEvent.java Deprecates legacy event type.
MekHQ/src/mekhq/campaign/events/parts/PartAssignmentEvent.java Deprecates legacy event type.
MekHQ/src/mekhq/campaign/campaignOptions/CampaignOptionsUnmarshaller.java Simplifies node parsing helper signature and flow (removes unused boolean returns).
MekHQ/src/mekhq/campaign/campaignOptions/CampaignOptions.java Removes obsolete RAT options; switches clamp usage to Math.clamp(...); adds/adjusts deprecations.
MekHQ/src/mekhq/campaign/camOpsReputation/UnitRatingMethod.java Deprecates legacy boolean helpers.
MekHQ/src/mekhq/campaign/camOpsReputation/TransportationRating.java Removes redundant cast from size().
MekHQ/src/mekhq/campaign/camOpsReputation/SupportRating.java Uses getFirst() when consuming list results.
MekHQ/src/mekhq/campaign/camOpsReputation/ReputationController.java Uses getFirst(); replaces replaceAll with replace for literal substitution.
MekHQ/src/mekhq/campaign/camOpsReputation/IUnitRating.java Updates deprecation annotation usage.
MekHQ/src/mekhq/campaign/camOpsReputation/AverageExperienceRating.java Switches clamp usage to Math.clamp(...).
MekHQ/src/mekhq/campaign/camOpsReputation/AbstractUnitRating.java Uses getFirst(); adds deprecations.
MekHQ/src/mekhq/campaign/autoResolve/StratConSetupForces.java Deprecates legacy helper.
MekHQ/src/mekhq/campaign/autoResolve/ScenarioSetupForces.java Deprecates legacy constructor; minor formatting touch.
MekHQ/src/mekhq/campaign/autoResolve/MekHQSetupForces.java Deprecates legacy constructor overload.
MekHQ/src/mekhq/campaign/autoResolve/AutoResolveMethod.java Deprecates legacy parsing helpers.
MekHQ/src/mekhq/campaign/againstTheBot/DatedRecord.java Deprecates legacy record type and helper.
MekHQ/src/mekhq/campaign/againstTheBot/AtBConfiguration.java Replaces manual min/max bounding with Math.clamp(...).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +133 to 135
ordinal = Math.clamp(ordinal, 0, values().length);

return values()[ordinal];

Copilot AI Apr 21, 2026

Copy link

Choose a reason for hiding this comment

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

OperationalStatus.fromInt clamps ordinal with an upper bound of values().length, but values() is indexed 0..length-1. If ordinal clamps to length, values()[ordinal] will throw ArrayIndexOutOfBoundsException and the Javadoc’s “last index” guarantee is violated. Clamp to values().length - 1 instead (and consider guarding the empty-enum case, though this enum is currently non-empty).

Suggested change
ordinal = Math.clamp(ordinal, 0, values().length);
return values()[ordinal];
final OperationalStatus[] statuses = values();
ordinal = Math.clamp(ordinal, 0, statuses.length - 1);
return statuses[ordinal];

Copilot uses AI. Check for mistakes.
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