Skip to content

Commit 61e92bb

Browse files
committed
fixed
1 parent 9e87fd7 commit 61e92bb

File tree

10 files changed

+245
-3
lines changed

10 files changed

+245
-3
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
@startuml
2+
package com.iluwatar.trafficlight {
3+
class GreenLightState {
4+
+ GreenLightState()
5+
+ handleEvent(context : TrafficLightContext)
6+
}
7+
class RedLightState {
8+
+ RedLightState()
9+
+ handleEvent(context : TrafficLightContext)
10+
}
11+
class TrafficLightContext {
12+
- currentState : TrafficLightState
13+
+ TrafficLightContext(initialState : TrafficLightState)
14+
+ getCurrentState() : TrafficLightState
15+
+ handleEvent()
16+
+ setState(newState : TrafficLightState)
17+
}
18+
class TrafficLightFsm {
19+
+ TrafficLightFsm()
20+
+ main(args : String[]) {static}
21+
}
22+
interface TrafficLightState {
23+
+ handleEvent(TrafficLightContext) {abstract}
24+
}
25+
class YellowLightState {
26+
+ YellowLightState()
27+
+ handleEvent(context : TrafficLightContext)
28+
}
29+
}
30+
TrafficLightContext --> "-currentState" TrafficLightState
31+
GreenLightState ..|> TrafficLightState
32+
RedLightState ..|> TrafficLightState
33+
YellowLightState ..|> TrafficLightState
34+
@enduml

FiniteStateMachine/pom.xml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,13 @@
1717
</properties>
1818
<dependencies>
1919
<dependency>
20-
<groupId>junit</groupId>
21-
<artifactId>junit</artifactId>
20+
<groupId>org.junit.jupiter</groupId>
21+
<artifactId>junit-jupiter-api</artifactId>
22+
<scope>test</scope>
23+
</dependency>
24+
<dependency>
25+
<groupId>org.mockito</groupId>
26+
<artifactId>mockito-core</artifactId>
2227
<scope>test</scope>
2328
</dependency>
2429
</dependencies>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
@startuml
2+
package com.iluwatar.function.composition {
3+
class App {
4+
+ App()
5+
+ main(args : String[]) {static}
6+
}
7+
class FunctionComposer {
8+
+ FunctionComposer()
9+
+ composeFunctions(f1 : Function<Integer, Integer>, f2 : Function<Integer, Integer>) : Function<Integer, Integer> {static}
10+
}
11+
}
12+
@enduml
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@startuml
2+
@enduml
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
@startuml
2+
@enduml
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
@startuml
2+
package com.iluwatar.idempotentconsumer {
3+
class App {
4+
- LOGGER : Logger {static}
5+
+ App()
6+
+ main(args : String[]) {static}
7+
+ run(requestService : RequestService, requestRepository : RequestRepository) : CommandLineRunner
8+
}
9+
class Request {
10+
- status : Status
11+
- uuid : UUID
12+
+ Request()
13+
+ Request(uuid : UUID)
14+
+ Request(uuid : UUID, status : Status)
15+
# canEqual(other : Object) : boolean
16+
+ equals(o : Object) : boolean
17+
+ getStatus() : Status
18+
+ getUuid() : UUID
19+
+ hashCode() : int
20+
+ setStatus(status : Status)
21+
+ setUuid(uuid : UUID)
22+
+ toString() : String
23+
}
24+
~enum Status {
25+
+ COMPLETED {static}
26+
+ PENDING {static}
27+
+ STARTED {static}
28+
+ valueOf(name : String) : Status {static}
29+
+ values() : Status[] {static}
30+
}
31+
interface RequestRepository {
32+
}
33+
class RequestService {
34+
~ requestRepository : RequestRepository
35+
~ requestStateMachine : RequestStateMachine
36+
+ RequestService(requestRepository : RequestRepository, requestStateMachine : RequestStateMachine)
37+
+ complete(uuid : UUID) : Request
38+
+ create(uuid : UUID) : Request
39+
+ start(uuid : UUID) : Request
40+
}
41+
class RequestStateMachine {
42+
+ RequestStateMachine()
43+
+ next(req : Request, nextStatus : Status) : Request
44+
}
45+
}
46+
RequestService --> "-requestRepository" RequestRepository
47+
Request --> "-status" Status
48+
RequestService --> "-requestStateMachine" RequestStateMachine
49+
@enduml
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
@startuml
2+
package com.iluwatar.logaggregation {
3+
class App {
4+
+ App()
5+
+ main(args : String[]) {static}
6+
}
7+
class CentralLogStore {
8+
- LOGGER : Logger {static}
9+
- logs : ConcurrentLinkedQueue<LogEntry>
10+
+ CentralLogStore()
11+
+ displayLogs()
12+
+ storeLog(logEntry : LogEntry)
13+
}
14+
class LogAggregator {
15+
- BUFFER_THRESHOLD : int {static}
16+
- LOGGER : Logger {static}
17+
- buffer : ConcurrentLinkedQueue<LogEntry>
18+
- centralLogStore : CentralLogStore
19+
- executorService : ExecutorService
20+
- logCount : AtomicInteger
21+
- minLogLevel : LogLevel
22+
+ LogAggregator(centralLogStore : CentralLogStore, minLogLevel : LogLevel)
23+
+ collectLog(logEntry : LogEntry)
24+
- flushBuffer()
25+
- startBufferFlusher()
26+
+ stop()
27+
}
28+
class LogEntry {
29+
- level : LogLevel
30+
- message : String
31+
- serviceName : String
32+
- timestamp : LocalDateTime
33+
+ LogEntry(serviceName : String, level : LogLevel, message : String, timestamp : LocalDateTime)
34+
# canEqual(other : Object) : boolean
35+
+ equals(o : Object) : boolean
36+
+ getLevel() : LogLevel
37+
+ getMessage() : String
38+
+ getServiceName() : String
39+
+ getTimestamp() : LocalDateTime
40+
+ hashCode() : int
41+
+ setLevel(level : LogLevel)
42+
+ setMessage(message : String)
43+
+ setServiceName(serviceName : String)
44+
+ setTimestamp(timestamp : LocalDateTime)
45+
+ toString() : String
46+
}
47+
enum LogLevel {
48+
+ DEBUG {static}
49+
+ ERROR {static}
50+
+ INFO {static}
51+
+ valueOf(name : String) : LogLevel {static}
52+
+ values() : LogLevel[] {static}
53+
}
54+
class LogProducer {
55+
- LOGGER : Logger {static}
56+
- aggregator : LogAggregator
57+
- serviceName : String
58+
+ LogProducer(serviceName : String, aggregator : LogAggregator)
59+
+ generateLog(level : LogLevel, message : String)
60+
}
61+
}
62+
LogAggregator --> "-centralLogStore" CentralLogStore
63+
LogEntry --> "-level" LogLevel
64+
CentralLogStore --> "-logs" LogEntry
65+
LogAggregator --> "-buffer" LogEntry
66+
LogAggregator --> "-minLogLevel" LogLevel
67+
LogProducer --> "-aggregator" LogAggregator
68+
@enduml

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@
218218
<module>function-composition</module>
219219
<module>microservices-distributed-tracing</module>
220220
<module>microservices-idempotent-consumer</module>
221-
<module>FiniteStateMachine</module>
221+
<module>FiniteStateMachine</module>
222222
</modules>
223223
<repositories>
224224
<repository>
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
@startuml
2+
package com.iluwatar.queue.load.leveling {
3+
class App {
4+
- LOGGER : Logger {static}
5+
- SHUTDOWN_TIME : int {static}
6+
+ App()
7+
+ main(args : String[]) {static}
8+
}
9+
class Message {
10+
- msg : String
11+
+ Message(msg : String)
12+
+ getMsg() : String
13+
+ toString() : String
14+
}
15+
class MessageQueue {
16+
- LOGGER : Logger {static}
17+
- blkQueue : BlockingQueue<Message>
18+
+ MessageQueue()
19+
+ retrieveMsg() : Message
20+
+ submitMsg(msg : Message)
21+
}
22+
class ServiceExecutor {
23+
- LOGGER : Logger {static}
24+
- msgQueue : MessageQueue
25+
+ ServiceExecutor(msgQueue : MessageQueue)
26+
+ run()
27+
}
28+
interface Task {
29+
+ submit(Message) {abstract}
30+
}
31+
class TaskGenerator {
32+
- LOGGER : Logger {static}
33+
- msgCount : int
34+
- msgQueue : MessageQueue
35+
+ TaskGenerator(msgQueue : MessageQueue, msgCount : int)
36+
+ run()
37+
+ submit(msg : Message)
38+
}
39+
}
40+
MessageQueue --> "-blkQueue" Message
41+
ServiceExecutor --> "-msgQueue" MessageQueue
42+
TaskGenerator --> "-msgQueue" MessageQueue
43+
TaskGenerator ..|> Task
44+
@enduml
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
@startuml
2+
package com.iluwatar.virtual.proxy {
3+
class App {
4+
+ App()
5+
+ main(args : String[]) {static}
6+
}
7+
interface ExpensiveObject {
8+
+ process() {abstract}
9+
}
10+
class RealVideoObject {
11+
- LOGGER : Logger {static}
12+
+ RealVideoObject()
13+
- heavyInitialConfiguration()
14+
+ process()
15+
}
16+
class VideoObjectProxy {
17+
- realVideoObject : RealVideoObject
18+
+ VideoObjectProxy()
19+
+ getRealVideoObject() : RealVideoObject
20+
+ process()
21+
}
22+
}
23+
VideoObjectProxy --> "-realVideoObject" RealVideoObject
24+
RealVideoObject ..|> ExpensiveObject
25+
VideoObjectProxy ..|> ExpensiveObject
26+
@enduml

0 commit comments

Comments
 (0)