Skip to content

Commit ff23e90

Browse files
committed
Add puml for Promise pattern
1 parent fa52a7f commit ff23e90

File tree

1 file changed

+77
-0
lines changed

1 file changed

+77
-0
lines changed

promise/etc/promise.urm.puml

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
@startuml
2+
package com.iluwatar.promise {
3+
~class PromiseSupport<T> {
4+
- COMPLETED : int {static}
5+
- FAILED : int {static}
6+
- RUNNING : int {static}
7+
- exception : Exception
8+
- lock : Object
9+
- state : int
10+
- value : T
11+
~ PromiseSupport<T>()
12+
+ cancel(mayInterruptIfRunning : boolean) : boolean
13+
~ fulfill(value : T)
14+
~ fulfillExceptionally(exception : Exception)
15+
+ get() : T
16+
+ get(timeout : long, unit : TimeUnit) : T
17+
+ isCancelled() : boolean
18+
+ isDone() : boolean
19+
}
20+
-class ConsumeAction {
21+
- action : Consumer<? super T>
22+
- dest : Promise<Void>
23+
- src : Promise<T>
24+
- ConsumeAction(src : Promise<T>, dest : Promise<T>, action : Consumer<T>)
25+
+ run()
26+
}
27+
-class TransformAction<V> {
28+
- dest : Promise<V>
29+
- func : Function<? super T, V>
30+
- src : Promise<T>
31+
- TransformAction<V>(src : Promise<T>, dest : Promise<T>, func : Function<T, R>)
32+
+ run()
33+
}
34+
class App {
35+
- DEFAULT_URL : String {static}
36+
- executor : ExecutorService
37+
- stopLatch : CountDownLatch
38+
- App()
39+
- calculateLineCount()
40+
- calculateLowestFrequencyChar()
41+
- characterFrequency() : Promise<Map<Character, Integer>>
42+
- countLines() : Promise<Integer>
43+
- download(urlString : String) : Promise<String>
44+
- lowestFrequencyChar() : Promise<Character>
45+
+ main(args : String[]) {static}
46+
- promiseUsage()
47+
- stop()
48+
- taskCompleted()
49+
}
50+
class Promise<T> {
51+
- exceptionHandler : Consumer<? super Throwable>
52+
- fulfillmentAction : Runnable
53+
+ Promise<T>()
54+
+ fulfill(value : T)
55+
+ fulfillExceptionally(exception : Exception)
56+
+ fulfillInAsync(task : Callable<T>, executor : Executor) : Promise<T>
57+
- handleException(exception : Exception)
58+
+ onError(exceptionHandler : Consumer<? super Throwable>) : Promise<T>
59+
- postFulfillment()
60+
+ thenAccept(action : Consumer<? super T>) : Promise<Void>
61+
+ thenApply(func : Function<? super T, V>) : Promise<V>
62+
}
63+
class Utility {
64+
+ Utility()
65+
+ characterFrequency(fileLocation : String) : Map<Character, Integer> {static}
66+
+ countLines(fileLocation : String) : Integer {static}
67+
+ downloadFile(urlString : String) : String {static}
68+
+ lowestFrequencyChar(charFrequency : Map<Character, Integer>) : Character {static}
69+
}
70+
}
71+
TransformAction --+ Promise
72+
TransformAction --> "-src" Promise
73+
ConsumeAction --+ Promise
74+
ConsumeAction --> "-src" Promise
75+
Utility --+ Map
76+
Promise --|> PromiseSupport
77+
@enduml

0 commit comments

Comments
 (0)