Skip to content

Commit

Permalink
Move event code to separate modules.
Browse files Browse the repository at this point in the history
  • Loading branch information
cstroe committed Feb 28, 2019
1 parent ef5d95b commit fff8b78
Show file tree
Hide file tree
Showing 19 changed files with 81 additions and 52 deletions.
3 changes: 3 additions & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -139,4 +139,7 @@ dependencies {

// integrationTestCompile("org.seleniumhq.selenium:selenium-java:3.13.0")
// integrationTestCompile("org.seleniumhq.selenium:selenium-remote-driver:3.13.0")

implementation(project(":checklister-event"))
implementation(project(":checklister-eventsink-logger"))
}
13 changes: 13 additions & 0 deletions checklister-event/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
plugins {
`java-library`
kotlin("jvm")
}

repositories {
mavenCentral()
}

dependencies {
// Kotlin
implementation(kotlin("stdlib-jdk8"))
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
package cloud.cosmin.checklister.lib.event

interface Event
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package cloud.cosmin.checklister.lib.event.serializer

import cloud.cosmin.checklister.lib.event.Event

interface EventSerializer {
fun serialize(event: Event): ByteArray
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package cloud.cosmin.checklister.lib.event.serializer

import cloud.cosmin.checklister.lib.event.Event

class ToStringEventSerializer : EventSerializer {
override fun serialize(event: Event): ByteArray {
return event.toString().toByteArray()
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package cloud.cosmin.checklister.lib.event.sink

import cloud.cosmin.checklister.lib.event.Event

interface EventSink {
fun accept(event: Event)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package cloud.cosmin.checklister.lib.eventsink.logger

import cloud.cosmin.checklister.lib.event.Event
import cloud.cosmin.checklister.lib.event.serializer.EventSerializer
import cloud.cosmin.checklister.lib.event.sink.EventSink
import org.apache.logging.log4j.Logger

class LoggerEventSink(private val serializer: EventSerializer,
private val log: Logger) : EventSink {
override fun accept(event: Event) {
val bytes = serializer.serialize(event)
log.info("Event: {}", String(bytes))
}
}
3 changes: 2 additions & 1 deletion settings.gradle.kts
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
rootProject.name = "checklister"
rootProject.name = "checklister"
include("checklister-event", "checklister-eventsink-logger")
Original file line number Diff line number Diff line change
@@ -1,10 +1,22 @@
package cloud.cosmin.checklister

import cloud.cosmin.checklister.lib.event.serializer.ToStringEventSerializer
import cloud.cosmin.checklister.lib.event.sink.EventSink
import cloud.cosmin.checklister.lib.eventsink.logger.LoggerEventSink
import org.apache.logging.log4j.LogManager
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.annotation.Bean

@SpringBootApplication
class ChecklisterApplication
class ChecklisterApplication {
@Bean
fun eventSink(): EventSink {
val serializer = ToStringEventSerializer()
val logger = LogManager.getLogger(LoggerEventSink::class.java)
return LoggerEventSink(serializer, logger)
}
}

fun main(args: Array<String>) {
SpringApplication.run(ChecklisterApplication::class.java, *args)
Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package cloud.cosmin.checklister.service.event

import cloud.cosmin.checklister.dto.ItemGetDto
import cloud.cosmin.checklister.dto.ListGetDto
import cloud.cosmin.checklister.lib.event.Event
import cloud.cosmin.checklister.service.RankOperation

enum class ListEventType {
Expand All @@ -12,24 +13,17 @@ enum class ItemEventType {
CREATE, UPDATE, RANK
}

abstract class AbstractEvent : Event {
private val eventSerializer = ToStringEventSerializer()
override fun serialize(): ByteArray {
return eventSerializer.serialize(this)
}
}

data class ItemCreateEvent(val item: ItemGetDto) : AbstractEvent()
data class ItemCreateEvent(val item: ItemGetDto) : Event

data class ItemUpdateEvent(
val before: ItemGetDto,
val after: ItemGetDto) : AbstractEvent()
val after: ItemGetDto) : Event

data class ItemRankEvent(
val op: RankOperation,
val before: ItemGetDto,
val after: ItemGetDto) : AbstractEvent()
val after: ItemGetDto) : Event

data class ListCreateEvent(val item: ListGetDto) : AbstractEvent()
data class ListCreateEvent(val item: ListGetDto) : Event

data class ListUpdateEvent(val before: ListGetDto, val after: ListGetDto) : AbstractEvent()
data class ListUpdateEvent(val before: ListGetDto, val after: ListGetDto) : Event
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cloud.cosmin.checklister.service.event

import cloud.cosmin.checklister.dto.ItemGetDto
import cloud.cosmin.checklister.lib.event.sink.EventSink
import cloud.cosmin.checklister.service.RankOperation
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cloud.cosmin.checklister.service.event

import cloud.cosmin.checklister.dto.ListGetDto
import cloud.cosmin.checklister.lib.event.sink.EventSink
import cloud.cosmin.checklister.service.ListEvents
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
Expand Down

This file was deleted.

This file was deleted.

2 changes: 1 addition & 1 deletion src/main/resources/log4j2.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@
<Root level="error">
<AppenderRef ref="Console"/>
</Root>
<Logger name="cloud.cosmin.checklister.service.event.eventsink.LoggerEventSink" level="info"/>
<Logger name="cloud.cosmin.checklister.lib.eventsink.logger.LoggerEventSink" level="info"/>
</Loggers>
</Configuration>
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package cloud.cosmin.checklister.service.event

import cloud.cosmin.checklister.dto.ItemGetDto
import cloud.cosmin.checklister.lib.event.sink.EventSink
import cloud.cosmin.checklister.service.RankOperation
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
Expand Down

0 comments on commit fff8b78

Please sign in to comment.