@@ -167,10 +167,14 @@ public String getNormalizedString() {
167
167
}
168
168
169
169
private int compareToWithNulls (@ Nullable Integer i1 , @ Nullable Integer i2 ) {
170
+ return compareToWithNulls (i1 , i2 , false );
171
+ }
172
+
173
+ private int compareToWithNulls (@ Nullable Integer i1 , @ Nullable Integer i2 , boolean nullMeansEqual ) {
170
174
if (i1 == null && i2 == null ) {
171
175
return 0 ;
172
176
} else if (i1 == null ) {
173
- return -1 ;
177
+ return nullMeansEqual ? 0 : -1 ;
174
178
} else if (i2 == null ) {
175
179
return 1 ;
176
180
} else {
@@ -180,26 +184,30 @@ private int compareToWithNulls(@Nullable Integer i1, @Nullable Integer i2) {
180
184
181
185
@ Override
182
186
public int compareTo (Version o ) {
187
+ return compareTo (o , false );
188
+ }
189
+
190
+ public int compareTo (Version o , boolean nullMeansEqual ) {
183
191
int curResult ;
184
192
185
193
if (isValid () && o .isValid ()) {
186
194
187
- curResult = compareToWithNulls (getMajor (), o .getMajor ());
195
+ curResult = compareToWithNulls (getMajor (), o .getMajor (), nullMeansEqual );
188
196
if (curResult != 0 ) {
189
197
return curResult ;
190
198
}
191
199
192
- curResult = compareToWithNulls (getMinor (), o .getMinor ());
200
+ curResult = compareToWithNulls (getMinor (), o .getMinor (), nullMeansEqual );
193
201
if (curResult != 0 ) {
194
202
return curResult ;
195
203
}
196
204
197
- curResult = compareToWithNulls (getBugfix (), o .getBugfix ());
205
+ curResult = compareToWithNulls (getBugfix (), o .getBugfix (), nullMeansEqual );
198
206
if (curResult != 0 ) {
199
207
return curResult ;
200
208
}
201
209
202
- curResult = compareToWithNulls (getBuild (), o .getBuild ());
210
+ curResult = compareToWithNulls (getBuild (), o .getBuild (), nullMeansEqual );
203
211
if (curResult != 0 ) {
204
212
return curResult ;
205
213
}
@@ -220,6 +228,7 @@ private void versionsAreValid(Version v) throws InvalidVersionException {
220
228
221
229
/**
222
230
* Compares this version to a given version and returns true if this version is greater or equal than the given one
231
+ * If one of the version parts of the base version is null, this level is assumed equal no matter the comparing level's version part
223
232
* Throws an InvalidVersionException if either this or the given version are invalid
224
233
*
225
234
* @param v Version to compare with
@@ -230,7 +239,7 @@ public boolean isGreaterOrEqualThan(Version v) throws InvalidVersionException {
230
239
231
240
versionsAreValid (v );
232
241
233
- return compareTo (v ) >= 0 ;
242
+ return compareTo (v , true ) >= 0 ;
234
243
}
235
244
236
245
@@ -240,11 +249,20 @@ public boolean isGreaterThan(Version v) throws InvalidVersionException {
240
249
return compareTo (v ) > 0 ;
241
250
}
242
251
252
+ /**
253
+ * Compares this version to a given version and returns true if this version is less or equal than the given one
254
+ * If one of the version parts of the base version is null, this level is assumed equal no matter the comparing level's version part
255
+ * Throws an InvalidVersionException if either this or the given version are invalid
256
+ *
257
+ * @param v Version to compare with
258
+ * @return
259
+ * @throws InvalidVersionException
260
+ */
243
261
public boolean isLessOrEqualThan (Version v ) throws InvalidVersionException {
244
262
245
263
versionsAreValid (v );
246
264
247
- return compareTo (v ) <= 0 ;
265
+ return compareTo (v , true ) <= 0 ;
248
266
}
249
267
250
268
public boolean isLessThan (Version v ) throws InvalidVersionException {
0 commit comments