79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			79 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | @startuml | ||
|  | package com.iluwatar.promise { | ||
|  |   class App { | ||
|  |     - DEFAULT_URL : String {static} | ||
|  |     - LOGGER : Logger {static} | ||
|  |     - executor : ExecutorService | ||
|  |     - stopLatch : CountDownLatch | ||
|  |     - App() | ||
|  |     - calculateLineCount() | ||
|  |     - calculateLowestFrequencyChar() | ||
|  |     - characterFrequency() : Promise<Map<Character, Integer>> | ||
|  |     - countLines() : Promise<Integer> | ||
|  |     - download(urlString : String) : Promise<String> | ||
|  |     - lowestFrequencyChar() : Promise<Character> | ||
|  |     + main(args : String[]) {static} | ||
|  |     - promiseUsage() | ||
|  |     - stop() | ||
|  |     - taskCompleted() | ||
|  |   } | ||
|  |   class Promise<T> { | ||
|  |     - exceptionHandler : Consumer<? super Throwable> | ||
|  |     - fulfillmentAction : Runnable | ||
|  |     + Promise<T>() | ||
|  |     + fulfill(value : T) | ||
|  |     + fulfillExceptionally(exception : Exception) | ||
|  |     + fulfillInAsync(task : Callable<T>, executor : Executor) : Promise<T> | ||
|  |     - handleException(exception : Exception) | ||
|  |     + onError(exceptionHandler : Consumer<? super Throwable>) : Promise<T> | ||
|  |     - postFulfillment() | ||
|  |     + thenAccept(action : Consumer<? super T>) : Promise<Void> | ||
|  |     + thenApply(func : Function<? super T, V>) : Promise<V> | ||
|  |   } | ||
|  |   -class ConsumeAction { | ||
|  |     - action : Consumer<? super T> | ||
|  |     - dest : Promise<Void> | ||
|  |     - src : Promise<T> | ||
|  |     - ConsumeAction(src : Promise<T>, dest : Promise<T>, action : Consumer<T>) | ||
|  |     + run() | ||
|  |   } | ||
|  |   -class TransformAction<V> { | ||
|  |     - dest : Promise<V> | ||
|  |     - func : Function<? super T, V> | ||
|  |     - src : Promise<T> | ||
|  |     - TransformAction<V>(src : Promise<T>, dest : Promise<T>, func : Function<T, R>) | ||
|  |     + run() | ||
|  |   } | ||
|  |   ~class PromiseSupport<T> { | ||
|  |     - COMPLETED : int {static} | ||
|  |     - FAILED : int {static} | ||
|  |     - LOGGER : Logger {static} | ||
|  |     - RUNNING : int {static} | ||
|  |     - exception : Exception | ||
|  |     - lock : Object | ||
|  |     - state : int | ||
|  |     - value : T | ||
|  |     ~ PromiseSupport<T>() | ||
|  |     + cancel(mayInterruptIfRunning : boolean) : boolean | ||
|  |     ~ fulfill(value : T) | ||
|  |     ~ fulfillExceptionally(exception : Exception) | ||
|  |     + get() : T | ||
|  |     + get(timeout : long, unit : TimeUnit) : T | ||
|  |     + isCancelled() : boolean | ||
|  |     + isDone() : boolean | ||
|  |   } | ||
|  |   class Utility { | ||
|  |     - LOGGER : Logger {static} | ||
|  |     + Utility() | ||
|  |     + characterFrequency(fileLocation : String) : Map<Character, Integer> {static} | ||
|  |     + countLines(fileLocation : String) : Integer {static} | ||
|  |     + downloadFile(urlString : String) : String {static} | ||
|  |     + lowestFrequencyChar(charFrequency : Map<Character, Integer>) : Character {static} | ||
|  |   } | ||
|  | } | ||
|  | TransformAction --+ Promise | ||
|  | TransformAction -->  "-src" Promise | ||
|  | ConsumeAction --+ Promise | ||
|  | ConsumeAction -->  "-src" Promise | ||
|  | Promise --|> PromiseSupport  | ||
|  | @enduml |