@@ -452,56 +452,38 @@ public static <P extends HasMetadata> P addFinalizerWithSSA(
452452  }
453453
454454  public  static  int  compareResourceVersions (String  v1 , String  v2 ) {
455-     var  v1Length  = v1 .length ();
456-     if  (v1Length  == 0 ) {
457-       throw  new  NonComparableResourceVersionException ("Resource version (1) is empty" );
458-     }
459-     var  v2Length  = v2 .length ();
460-     if  (v2Length  == 0 ) {
461-       throw  new  NonComparableResourceVersionException ("Resource version (2) is empty" );
455+     int  v1Length  = validateResourceVersion (v1 );
456+     int  v2Length  = validateResourceVersion (v2 );
457+     int  comparison  = v1Length  - v2Length ;
458+     if  (comparison  != 0 ) {
459+       return  comparison ;
462460    }
463-     var  maxLength  = Math .max (v1Length , v2Length );
464-     boolean  v1LeadingZero  = true ;
465-     boolean  v2LeadingZero  = true ;
466-     int  comparison  = 0 ;
467-     for  (int  i  = 0 ; i  < maxLength ; i ++) {
468-       char  char1  = 0 ;
469-       if  (i  < v1Length ) {
470-         char1  = v1 .charAt (i );
471-         if  (v1LeadingZero ) {
472-           if  (char1  == '0' ) {
473-             throw  new  NonComparableResourceVersionException (
474-                 "Resource version (1) cannot begin with 0" );
475-           }
476-           v1LeadingZero  = false ;
477-         }
478-         if  (!Character .isDigit (char1 )) {
479-           throw  new  NonComparableResourceVersionException (
480-               "Non numeric characters in resource version (1): "  + char1 );
481-         }
461+     for  (int  i  = 0 ; i  < v2Length ; i ++) {
462+       int  comp  = v1 .charAt (i ) - v2 .charAt (i );
463+       if  (comp  != 0 ) {
464+         return  comp ;
482465      }
483-       if  (i  < v2Length ) {
484-         var  char2  = v2 .charAt (i );
485-         if  (v2LeadingZero ) {
486-           if  (char2  == '0' ) {
487-             throw  new  NonComparableResourceVersionException (
488-                 "Resource version (2) cannot begin with 0" );
489-           }
490-           v2LeadingZero  = false ;
491-         }
492-         if  (!Character .isDigit (char2 )) {
466+     }
467+     return  0 ;
468+   }
469+ 
470+   private  static  final  int  validateResourceVersion (String  v1 ) {
471+     int  v1Length  = v1 .length ();
472+     if  (v1Length  == 0 ) {
473+       throw  new  NonComparableResourceVersionException ("Resource version is empty" );
474+     }
475+     for  (int  i  = 0 ; i  < v1Length ; i ++) {
476+       char  char1  = v1 .charAt (i );
477+       if  (char1  == '0' ) {
478+         if  (i  == 0 ) {
493479          throw  new  NonComparableResourceVersionException (
494-               "Non numeric characters in resource version (2): "  + char2 );
495-         }
496-         if  (char1  == 0 ) {
497-           comparison  = -1 ;
498-         } else  if  (comparison  == 0 ) {
499-           comparison  = Character .compare (char1 , char2 );
480+               "Resource version cannot begin with 0: "  + v1 );
500481        }
501-       } else  {
502-         comparison  = 1 ;
482+       } else  if  (char1  < '0'  || char1  > '9' ) {
483+         throw  new  NonComparableResourceVersionException (
484+             "Non numeric characters in resource version: "  + v1 );
503485      }
504486    }
505-     return  comparison ;
487+     return  v1Length ;
506488  }
507489}
0 commit comments