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 |