Skip to content

Commit aca087e

Browse files
committed
Add more possibilities to prohibit version upgrades
Closes gh-32457
1 parent 22b253d commit aca087e

File tree

5 files changed

+177
-66
lines changed

5 files changed

+177
-66
lines changed

Diff for: buildSrc/src/main/java/org/springframework/boot/build/bom/BomExtension.java

+29-11
Original file line numberDiff line numberDiff line change
@@ -245,16 +245,11 @@ public void group(String id, Action<GroupHandler> action) {
245245
.add(new Group(groupHandler.id, groupHandler.modules, groupHandler.plugins, groupHandler.imports));
246246
}
247247

248-
public void prohibit(String range, Action<ProhibitedVersionHandler> action) {
249-
ProhibitedVersionHandler prohibitedVersionHandler = new ProhibitedVersionHandler();
250-
action.execute(prohibitedVersionHandler);
251-
try {
252-
this.prohibitedVersions.add(new ProhibitedVersion(VersionRange.createFromVersionSpec(range),
253-
prohibitedVersionHandler.reason));
254-
}
255-
catch (InvalidVersionSpecificationException ex) {
256-
throw new InvalidUserCodeException("Invalid version range", ex);
257-
}
248+
public void prohibit(Action<ProhibitedHandler> action) {
249+
ProhibitedHandler handler = new ProhibitedHandler();
250+
action.execute(handler);
251+
this.prohibitedVersions.add(
252+
new ProhibitedVersion(handler.versionRange, handler.endsWith, handler.contains, handler.reason));
258253
}
259254

260255
public void dependencyVersions(Action<DependencyVersionsHandler> action) {
@@ -274,10 +269,33 @@ public void shouldAlignWithVersionFrom(String libraryName) {
274269

275270
}
276271

277-
public static class ProhibitedVersionHandler {
272+
public static class ProhibitedHandler {
278273

279274
private String reason;
280275

276+
private String endsWith;
277+
278+
private String contains;
279+
280+
private VersionRange versionRange;
281+
282+
public void versionRange(String versionRange) {
283+
try {
284+
this.versionRange = VersionRange.createFromVersionSpec(versionRange);
285+
}
286+
catch (InvalidVersionSpecificationException ex) {
287+
throw new InvalidUserCodeException("Invalid version range", ex);
288+
}
289+
}
290+
291+
public void endsWith(String endsWith) {
292+
this.endsWith = endsWith;
293+
}
294+
295+
public void contains(String contains) {
296+
this.contains = contains;
297+
}
298+
281299
public void because(String because) {
282300
this.reason = because;
283301
}

Diff for: buildSrc/src/main/java/org/springframework/boot/build/bom/Library.java

+15-1
Original file line numberDiff line numberDiff line change
@@ -104,17 +104,31 @@ public static class ProhibitedVersion {
104104

105105
private final VersionRange range;
106106

107+
private final String endsWith;
108+
109+
private final String contains;
110+
107111
private final String reason;
108112

109-
public ProhibitedVersion(VersionRange range, String reason) {
113+
public ProhibitedVersion(VersionRange range, String endsWith, String contains, String reason) {
110114
this.range = range;
115+
this.endsWith = endsWith;
116+
this.contains = contains;
111117
this.reason = reason;
112118
}
113119

114120
public VersionRange getRange() {
115121
return this.range;
116122
}
117123

124+
public String getEndsWith() {
125+
return this.endsWith;
126+
}
127+
128+
public String getContains() {
129+
return this.contains;
130+
}
131+
118132
public String getReason() {
119133
return this.reason;
120134
}

Diff for: buildSrc/src/main/java/org/springframework/boot/build/bom/bomr/InteractiveUpgradeResolver.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,18 @@ private boolean isPermitted(DependencyVersion dependencyVersion, List<Prohibited
171171
return true;
172172
}
173173
for (ProhibitedVersion prohibitedVersion : prohibitedVersions) {
174-
if (prohibitedVersion.getRange()
174+
if (prohibitedVersion.getRange() != null && prohibitedVersion.getRange()
175175
.containsVersion(new DefaultArtifactVersion(dependencyVersion.toString()))) {
176176
return false;
177177
}
178+
if (prohibitedVersion.getEndsWith() != null
179+
&& dependencyVersion.toString().endsWith(prohibitedVersion.getEndsWith())) {
180+
return false;
181+
}
182+
if (prohibitedVersion.getContains() != null
183+
&& dependencyVersion.toString().contains(prohibitedVersion.getContains())) {
184+
return false;
185+
}
178186
}
179187
return true;
180188
}

0 commit comments

Comments
 (0)