Skip to content

Commit 484d662

Browse files
committed
Allow multiple startsWith, contains and endsWith clauses in bomr
- Add support for startsWith prohibition
1 parent 3d42ab0 commit 484d662

File tree

4 files changed

+54
-28
lines changed

4 files changed

+54
-28
lines changed

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

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.io.InputStreamReader;
2222
import java.nio.charset.StandardCharsets;
2323
import java.util.ArrayList;
24+
import java.util.Collection;
2425
import java.util.HashMap;
2526
import java.util.LinkedHashMap;
2627
import java.util.List;
@@ -248,8 +249,8 @@ public void group(String id, Action<GroupHandler> action) {
248249
public void prohibit(Action<ProhibitedHandler> action) {
249250
ProhibitedHandler handler = new ProhibitedHandler();
250251
action.execute(handler);
251-
this.prohibitedVersions.add(
252-
new ProhibitedVersion(handler.versionRange, handler.endsWith, handler.contains, handler.reason));
252+
this.prohibitedVersions.add(new ProhibitedVersion(handler.versionRange, handler.startsWith,
253+
handler.endsWith, handler.contains, handler.reason));
253254
}
254255

255256
public void dependencyVersions(Action<DependencyVersionsHandler> action) {
@@ -273,9 +274,11 @@ public static class ProhibitedHandler {
273274

274275
private String reason;
275276

276-
private String endsWith;
277+
private final List<String> startsWith = new ArrayList<>();
277278

278-
private String contains;
279+
private final List<String> endsWith = new ArrayList<>();
280+
281+
private final List<String> contains = new ArrayList<>();
279282

280283
private VersionRange versionRange;
281284

@@ -288,12 +291,28 @@ public void versionRange(String versionRange) {
288291
}
289292
}
290293

294+
public void startsWith(String startsWith) {
295+
this.startsWith.add(startsWith);
296+
}
297+
298+
public void startsWith(Collection<String> startsWith) {
299+
this.startsWith.addAll(startsWith);
300+
}
301+
291302
public void endsWith(String endsWith) {
292-
this.endsWith = endsWith;
303+
this.endsWith.add(endsWith);
304+
}
305+
306+
public void endsWith(Collection<String> endsWith) {
307+
this.endsWith.addAll(endsWith);
293308
}
294309

295310
public void contains(String contains) {
296-
this.contains = contains;
311+
this.contains.add(contains);
312+
}
313+
314+
public void contains(List<String> contains) {
315+
this.contains.addAll(contains);
297316
}
298317

299318
public void because(String because) {

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

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -104,14 +104,18 @@ public static class ProhibitedVersion {
104104

105105
private final VersionRange range;
106106

107-
private final String endsWith;
107+
private final List<String> startsWith;
108108

109-
private final String contains;
109+
private final List<String> endsWith;
110+
111+
private final List<String> contains;
110112

111113
private final String reason;
112114

113-
public ProhibitedVersion(VersionRange range, String endsWith, String contains, String reason) {
115+
public ProhibitedVersion(VersionRange range, List<String> startsWith, List<String> endsWith,
116+
List<String> contains, String reason) {
114117
this.range = range;
118+
this.startsWith = startsWith;
115119
this.endsWith = endsWith;
116120
this.contains = contains;
117121
this.reason = reason;
@@ -121,11 +125,15 @@ public VersionRange getRange() {
121125
return this.range;
122126
}
123127

124-
public String getEndsWith() {
128+
public List<String> getStartsWith() {
129+
return this.startsWith;
130+
}
131+
132+
public List<String> getEndsWith() {
125133
return this.endsWith;
126134
}
127135

128-
public String getContains() {
136+
public List<String> getContains() {
129137
return this.contains;
130138
}
131139

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

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -167,21 +167,26 @@ private VersionOption alignedVersionOption(Library library, Map<String, Library>
167167
}
168168

169169
private boolean isPermitted(DependencyVersion dependencyVersion, List<ProhibitedVersion> prohibitedVersions) {
170-
if (prohibitedVersions.isEmpty()) {
171-
return true;
172-
}
173170
for (ProhibitedVersion prohibitedVersion : prohibitedVersions) {
171+
String dependencyVersionToString = dependencyVersion.toString();
174172
if (prohibitedVersion.getRange() != null && prohibitedVersion.getRange()
175-
.containsVersion(new DefaultArtifactVersion(dependencyVersion.toString()))) {
173+
.containsVersion(new DefaultArtifactVersion(dependencyVersionToString))) {
176174
return false;
177175
}
178-
if (prohibitedVersion.getEndsWith() != null
179-
&& dependencyVersion.toString().endsWith(prohibitedVersion.getEndsWith())) {
180-
return false;
176+
for (String startsWith : prohibitedVersion.getStartsWith()) {
177+
if (dependencyVersionToString.startsWith(startsWith)) {
178+
return false;
179+
}
181180
}
182-
if (prohibitedVersion.getContains() != null
183-
&& dependencyVersion.toString().contains(prohibitedVersion.getContains())) {
184-
return false;
181+
for (String endsWith : prohibitedVersion.getEndsWith()) {
182+
if (dependencyVersionToString.endsWith(endsWith)) {
183+
return false;
184+
}
185+
}
186+
for (String contains : prohibitedVersion.getContains()) {
187+
if (dependencyVersionToString.contains(contains)) {
188+
return false;
189+
}
185190
}
186191
}
187192
return true;

spring-boot-project/spring-boot-dependencies/build.gradle

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,13 +1362,7 @@ bom {
13621362
endsWith ".jre8-preview"
13631363
}
13641364
prohibit {
1365-
contains ".jre11"
1366-
}
1367-
prohibit {
1368-
contains ".jre16"
1369-
}
1370-
prohibit {
1371-
contains ".jre17"
1365+
contains([".jre11", ".jre16", ".jre17"])
13721366
}
13731367
group("com.microsoft.sqlserver") {
13741368
modules = [

0 commit comments

Comments
 (0)