From 8ef43d139b76e6c9ce129f4596c5f8318b1826aa Mon Sep 17 00:00:00 2001 From: "David M. Lloyd" Date: Thu, 11 Jun 2026 11:03:25 -0500 Subject: [PATCH] Add more mutation abilities to `PackageInfo` --- .../io/smallrye/modules/desc/PackageInfo.java | 31 ++++++++++++++----- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/main/java/io/smallrye/modules/desc/PackageInfo.java b/src/main/java/io/smallrye/modules/desc/PackageInfo.java index 7f75364..285a17f 100644 --- a/src/main/java/io/smallrye/modules/desc/PackageInfo.java +++ b/src/main/java/io/smallrye/modules/desc/PackageInfo.java @@ -103,10 +103,11 @@ public static PackageInfo merge(PackageInfo a, PackageInfo b) { * @param newAccess the minimum access level (must not be {@code null}) */ public PackageInfo withAccessAtLeast(PackageAccess newAccess) { - return of( - PackageAccess.max(packageAccess(), newAccess), - exportTargets, - openTargets); + return packageAccess().isAtLeast(newAccess) ? this + : of( + newAccess, + exportTargets, + openTargets); } /** @@ -115,10 +116,24 @@ public PackageInfo withAccessAtLeast(PackageAccess newAccess) { * @param exportTargets additional export targets (must not be {@code null}) */ public PackageInfo withExportTargets(final Set exportTargets) { - return of( - packageAccess(), - Util.merge(exportTargets(), exportTargets), - openTargets()); + return exportTargets().containsAll(exportTargets) ? this + : of( + packageAccess(), + Util.merge(exportTargets(), exportTargets), + openTargets()); + } + + /** + * {@return a package info with the given open targets merged with existing targets (not {@code null})} + * + * @param openTargets additional open targets (must not be {@code null}) + */ + public PackageInfo withOpenTargets(final Set openTargets) { + return exportTargets().containsAll(openTargets) ? this + : of( + packageAccess(), + exportTargets(), + Util.merge(openTargets(), openTargets)); } /**