@@ -144,20 +144,25 @@ public static Version getDefault() {
144
144
public static String validate (String version ) {
145
145
if (version == null || version .isEmpty ())
146
146
return "version MUST NOT be null or empty" ;
147
- String [] versionPart = version .split ("\\ ." );
148
- if (versionPart .length != 2 ) {
147
+ // We use split with limit = -1 to be sure "split" will discard trailing empty strings
148
+ String [] versionParts = version .split ("\\ ." , -1 );
149
+ if (versionParts .length != 2 ) {
149
150
return String .format ("version (%s) MUST be composed of 2 parts" , version );
150
151
}
151
152
for (int i = 0 ; i < 2 ; i ++) {
153
+ String versionPart = versionParts [i ];
152
154
try {
153
- short parsedShort = Short .parseShort (versionPart [i ]);
155
+ if (versionPart .length () > 1 && versionPart .startsWith ("0" )) {
156
+ return String .format ("version (%s) part %d (%s) must not be prefixed by 0" , version , i + 1 ,
157
+ versionPart );
158
+ }
159
+ short parsedShort = Short .parseShort (versionPart );
154
160
if (parsedShort < 0 ) {
155
161
return String .format ("version (%s) part %d (%s) must not be negative" , version , i + 1 ,
156
- versionPart [ i ] );
162
+ versionPart );
157
163
}
158
164
} catch (Exception e ) {
159
- return String .format ("version (%s) part %d (%s) is not a valid short" , version , i + 1 ,
160
- versionPart [i ]);
165
+ return String .format ("version (%s) part %d (%s) is not a valid short" , version , i + 1 , versionPart );
161
166
}
162
167
}
163
168
return null ;
0 commit comments