54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
@startuml
 | 
						|
package com.iluwatar.retry {
 | 
						|
  class App {
 | 
						|
    - LOG : Logger {static}
 | 
						|
    - op : BusinessOperation<String> {static}
 | 
						|
    + App()
 | 
						|
    - errorNoRetry() {static}
 | 
						|
    - errorWithRetry() {static}
 | 
						|
    - errorWithRetryExponentialBackoff() {static}
 | 
						|
    + main(args : String[]) {static}
 | 
						|
    - noErrors() {static}
 | 
						|
  }
 | 
						|
  interface BusinessOperation<T> {
 | 
						|
    + perform() : T {abstract}
 | 
						|
  }
 | 
						|
  class FindCustomer {
 | 
						|
    - customerId : String
 | 
						|
    - errors : Deque<BusinessException>
 | 
						|
    + FindCustomer(customerId : String, errors : BusinessException[])
 | 
						|
    + perform() : String
 | 
						|
  }
 | 
						|
  class Retry<T> {
 | 
						|
    - attempts : AtomicInteger
 | 
						|
    - delay : long
 | 
						|
    - errors : List<Exception>
 | 
						|
    - maxAttempts : int
 | 
						|
    - op : BusinessOperation<T>
 | 
						|
    - test : Predicate<Exception>
 | 
						|
    + Retry<T>(op : BusinessOperation<T>, maxAttempts : int, delay : long, ignoreTests : Predicate<Exception>[])
 | 
						|
    + attempts() : int
 | 
						|
    + errors() : List<Exception>
 | 
						|
    + perform() : T
 | 
						|
  }
 | 
						|
  class RetryExponentialBackoff<T> {
 | 
						|
    - RANDOM : Random {static}
 | 
						|
    - attempts : AtomicInteger
 | 
						|
    - errors : List<Exception>
 | 
						|
    - maxAttempts : int
 | 
						|
    - maxDelay : long
 | 
						|
    - op : BusinessOperation<T>
 | 
						|
    - test : Predicate<Exception>
 | 
						|
    + RetryExponentialBackoff<T>(op : BusinessOperation<T>, maxAttempts : int, maxDelay : long, ignoreTests : Predicate<Exception>[])
 | 
						|
    + attempts() : int
 | 
						|
    + errors() : List<Exception>
 | 
						|
    + perform() : T
 | 
						|
  }
 | 
						|
}
 | 
						|
RetryExponentialBackoff -->  "-op" BusinessOperation
 | 
						|
Retry -->  "-op" BusinessOperation
 | 
						|
App -->  "-op" BusinessOperation
 | 
						|
FindCustomer ..|> BusinessOperation 
 | 
						|
Retry ..|> BusinessOperation 
 | 
						|
RetryExponentialBackoff ..|> BusinessOperation 
 | 
						|
@enduml |