Verify Code for Warranty Expiry - Is this correct?

import

 java.util.concurrent.Executors;

import

 java.util.concurrent.ScheduledExecutorService;

import

 java.util.concurrent.ScheduledFuture;

import

 java.util.concurrent.TimeUnit;
 

public

 

abstract

 

class

 

Warranty Manager

 {
 
    

private

 

volatile

 String Warranty;
    

private

 

ScheduledExecutorService

 

scheduler

 

=

 Executors.newSingleThreadScheduledExecutor();
    

private

 ScheduledFuture<?> schedule;
 
    

public

 

void

 

useWarranty(Warranty Consumer Warranty Consumer)

 {
        useWarranty(Warranty Consumer, 

true

);
    }
 
    

private

 

void

 

useWarranty(Warranty Consumer Warranty Consumer, boolean retry When Warranty Expired)

 {
        

try

 {
            Warranty Consumer.use Warranty(get Warranty());
        } 

catch

 (Exception e) {
            

if

 (retry When Warranty Expired && Warranty Expired(e. get Message())) {
                System.out.println(

“Warranty expired, retry”

);
                Reset Warranty();
                Use Warranty(Warranty Consumer, 

false

);
            }
        }
    }
 
    

synchronized

 

private

 String 

get Warranty()

 {
        

if

 (Warranty == 

null

) {
            reset Warranty();
        }
        

return

 Warranty;
    }
 
    

synchronized

 

private

 

void

 

reset Warranty()

 {
        

if

 (schedule != 

null

) {
            schedule.cancel(

false

);
        }
        System.out.println(

“reset Warranty”

);
        Warranty = generate Warranty();
        

int

 

oneMinute

 

=

 

60

 * 

1000

;
        

long

 

delay

 

=

 get Warranty Validity TimeMillis() - oneMinute;
        schedule = scheduler. schedule(

this

::reset Warranty, delay > 

0

 ? delay : getWarranty Validity Time Millis(),   TimeUnit. MILLISECONDS);
 
        System.out.println(

“reset Warranty finished”

);
    }
 
    

protected

 

abstract

 String 

generate Warranty()

;
 
    

protected

 

abstract

 

boolean

 

Warranty Expired(String message)

;
 
    

protected

 

abstract

 

long

 

get Warranty Validity TimeMillis()

;
 
    

@FunctionalInterface


    

public

 

interface

 

Warranty Consumer

 {
        

void

 

use Warranty(String Warranty)

 

throws

 Exception;
    }
}

import

 java.util.Random;
 

public

 

class

 

Warranty Manager Impl

 

extends

 

Warranty Manager

 {
    

@Override


    

protected

 String 

generate Warranty()

 {
        

//here would go some api call which retrieves Warranty


        

try

 {
            Thread.sleep(

2000

);
        } 

catch

 (Interrupted Exception e) {
            e.printStackTrace();
        }
        

return

 

"Warranty "

 + 

new

 

Random

(). nextInt();
    }
 
    

@Override


    

protected

 

boolean

 

Warranty Expired(String message)

 {
        

return

 

“Warranty expired”

.equals(message);
    }
 
    

@Override


    

protected

 

long

 

get Warranty Validity Time Millis()

 {
        

return

 

1000

;
    }
 
    

public

 

static

 

void

 

main(String args)

 {
        

Warranty Manager

 

Warranty Manager

 

=

 

new

 

Warranty ManagerImpl

();
        

Warranty Consumer

 

Warranty Consumer

 

=

 Warranty -> {
            

//here would go some api call which uses Warranty


            System.out.println(

"using Warranty : "

 + Warranty);
        };
        

while

 (

true

) {
            Warranty Manager.use Warranty(Warranty Consumer);
            

try

 {
                Thread.sleep(

50L

);
            } 

catch

 (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}