diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index fc85a6904..dc4426a98 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -1,17 +1,19 @@
-name: build opex
+name: Deploy OPEX
+
on:
push:
- branches:
- - main
+ branches:
+ - main
+
jobs:
jenkinsJob:
name: build opex new version
runs-on: ubuntu-latest
steps:
- - name: trigger opex build job
- uses: appleboy/jenkins-action@master
- with:
- url: ${{ secrets.JENKINS_URL }}
- user: ${{ secrets.JENKINS_USER }}
- token: ${{ secrets.JENKINS_TOKEN }}
- job: "opex-build-job"
+ - name: Trigger opex-build-job on jenkins
+ uses: appleboy/jenkins-action@master
+ with:
+ url: ${{ secrets.JENKINS_URL }}
+ user: ${{ secrets.JENKINS_USER }}
+ token: ${{ secrets.JENKINS_TOKEN }}
+ job: "opex-build-job"
diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml
index 36e31d330..f29f64684 100644
--- a/.github/workflows/pr.yml
+++ b/.github/workflows/pr.yml
@@ -1,4 +1,4 @@
-name: Build Opex pull request
+name: Build on pull request
on:
pull_request:
@@ -21,33 +21,6 @@ jobs:
java-package: jdk
java-version: ${{ matrix.java }}
cache: maven
- - name: Build Utility
- working-directory: ./Utility
- run: mvn -B clean install
- - name: Build Engine
- working-directory: ./MatchingEngine
- run: mvn -B clean install
- - name: Build Gateway
- working-directory: ./MatchingGateway
- run: mvn -B clean install
- - name: Build EventLog
- working-directory: ./EventLog
- run: mvn -B clean install
- - name: Build Accountant
- working-directory: ./Accountant
- run: mvn -B clean install
- - name: Build Accountant
- working-directory: ./Accountant
- run: mvn -B clean install
- - name: Build Wallet
- working-directory: ./Wallet
- run: mvn -B clean install
- - name: Build UserManagement
- working-directory: ./UserManagement
- run: mvn -B clean install
- - name: Build Api
- working-directory: ./Api
- run: mvn -B clean install
- - name: Build BlockchainGateway
- working-directory: ./BlockchainGateway
+ - name: Build OPEX-Core
+ working-directory: .
run: mvn -B clean install
diff --git a/.gitignore b/.gitignore
index 4fde0c05c..f4e066ca5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,26 +1,36 @@
-# Compiled class file
-*.class
+HELP.md
+target/
+!.mvn/wrapper/maven-wrapper.jar
+!**/src/main/**/target/
+!**/src/test/**/target/
-# Log file
-*.log
+### STS ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
-# BlueJ files
-*.ctxt
-
-# Idea folders
+### IntelliJ IDEA ###
.idea
+*.iws
+*.iml
+*.ipr
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+build/
+!**/src/main/**/build/
+!**/src/test/**/build/
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
+### VS Code ###
+.vscode/
+!/.mvn/
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
+.DS_Store
diff --git a/Accountant/.gitignore b/Accountant/.gitignore
deleted file mode 100644
index 797b705f6..000000000
--- a/Accountant/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.iml
\ No newline at end of file
diff --git a/Accountant/accountant-app/.gitignore b/Accountant/accountant-app/.gitignore
deleted file mode 100644
index e7c460346..000000000
--- a/Accountant/accountant-app/.gitignore
+++ /dev/null
@@ -1,80 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-.mvn/
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-.DS_Store
-
-
-
-
diff --git a/Accountant/accountant-app/pom.xml b/Accountant/accountant-app/pom.xml
deleted file mode 100644
index ade675037..000000000
--- a/Accountant/accountant-app/pom.xml
+++ /dev/null
@@ -1,200 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- accountant-app
- 1.0-SNAPSHOT
- accountant-app
- Accountant app Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
-
-
- co.nilin.opex
- accountant-eventlistener-kafka
- ${accountant.version}
-
-
- co.nilin.opex
- accountant-submitter-kafka
- ${accountant.version}
-
-
- co.nilin.opex
- accountant-persister-postgres
- ${accountant.version}
-
-
- co.nilin.opex
- accountant-wallet-proxy
- ${accountant.version}
-
-
- co.nilin.opex
- error-handler
- ${utility.version}
-
-
- co.nilin.opex
- logging-handler
- ${utility.version}
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-accountant
-
-
diff --git a/Accountant/accountant-core/pom.xml b/Accountant/accountant-core/pom.xml
deleted file mode 100644
index 3f7cc6f20..000000000
--- a/Accountant/accountant-core/pom.xml
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- accountant-core
- 1.0-SNAPSHOT
- accountant-core
- Accountant logic of Opex
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- exchange.core2
- collections
- 0.5.1
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- org.springframework
- spring-tx
- provided
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/TradeManager.kt b/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/TradeManager.kt
deleted file mode 100644
index 003e4fca2..000000000
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/TradeManager.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package co.nilin.opex.accountant.core.api
-
-import co.nilin.opex.accountant.core.model.FinancialAction
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
-
-interface TradeManager {
- suspend fun handleTrade(trade:TradeEvent): List
-}
\ No newline at end of file
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairStaticRateLoader.kt b/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairStaticRateLoader.kt
deleted file mode 100644
index 3708a0e18..000000000
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairStaticRateLoader.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package co.nilin.opex.accountant.core.spi
-
-interface PairStaticRateLoader {
- suspend fun calculateStaticRate(leftSide:String, rightSide: String): Double?
-}
\ No newline at end of file
diff --git a/Accountant/accountant-ports/.gitignore b/Accountant/accountant-ports/.gitignore
deleted file mode 100644
index f3a8317d6..000000000
--- a/Accountant/accountant-ports/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.iml
-target/
-.mvn/
-.idea/
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/pom.xml b/Accountant/accountant-ports/accountant-eventlistener-kafka/pom.xml
deleted file mode 100644
index e85bab28d..000000000
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/pom.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- accountant-eventlistener-kafka
- 1.0-SNAPSHOT
- accountant-eventlistener-kafka
- Accountant kafka listener of Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
- provided
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/EventKafkaListener.kt b/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/EventKafkaListener.kt
deleted file mode 100644
index 2f86674d6..000000000
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/EventKafkaListener.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package co.nilin.opex.port.accountant.kafka.consumer
-
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.accountant.kafka.spi.EventListener
-import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.springframework.kafka.listener.MessageListener
-import org.springframework.stereotype.Component
-
-@Component
-class EventKafkaListener: MessageListener {
-
- val eventListeners = arrayListOf()
-
- override fun onMessage(data: ConsumerRecord) {
- eventListeners.forEach{
- tl -> tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
- }
- }
-
- fun addEventListener(tl: EventListener){
- eventListeners.add(tl)
- }
-
- fun removeEventListener(tl: EventListener){
- eventListeners.removeIf {
- item -> item.id() == tl.id()
- }
- }
-}
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/TempEventKafkaListener.kt b/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/TempEventKafkaListener.kt
deleted file mode 100644
index 2e9ef8b6a..000000000
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/TempEventKafkaListener.kt
+++ /dev/null
@@ -1,31 +0,0 @@
-package co.nilin.opex.port.accountant.kafka.consumer
-
-
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.accountant.kafka.spi.TempEventListener
-import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.springframework.kafka.listener.MessageListener
-import org.springframework.stereotype.Component
-
-@Component
-class TempEventKafkaListener: MessageListener {
-
- val eventListeners = arrayListOf()
-
- override fun onMessage(data: ConsumerRecord) {
- println("TempEvent onMessage")
- eventListeners.forEach{
- tl -> tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
- }
- }
-
- fun addEventListener(tl: TempEventListener){
- eventListeners.add(tl)
- }
-
- fun removeEventListener(tl: TempEventListener){
- eventListeners.removeIf {
- item -> item.id() == tl.id()
- }
- }
-}
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/TradeKafkaListener.kt b/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/TradeKafkaListener.kt
deleted file mode 100644
index 6d91a0c8a..000000000
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/TradeKafkaListener.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package co.nilin.opex.port.accountant.kafka.consumer
-
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
-import co.nilin.opex.port.accountant.kafka.spi.TradeListener
-import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.springframework.kafka.listener.MessageListener
-import org.springframework.stereotype.Component
-
-@Component
-class TradeKafkaListener: MessageListener {
-
- val tradeListeners = arrayListOf()
-
- override fun onMessage(data: ConsumerRecord) {
- tradeListeners.forEach{
- tl -> tl.onTrade(data.value(), data.partition(), data.offset(), data.timestamp())
- }
- }
-
- fun addTradeListener(tl: TradeListener){
- tradeListeners.add(tl)
- }
-
- fun removeTradeListener(tl: TradeListener){
- tradeListeners.removeIf {
- item -> item.id() == tl.id()
- }
- }
-}
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/pom.xml b/Accountant/accountant-ports/accountant-persister-postgres/pom.xml
deleted file mode 100644
index db635b291..000000000
--- a/Accountant/accountant-ports/accountant-persister-postgres/pom.xml
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- accountant-persister-postgres
- 1.0-SNAPSHOT
- accountant-persister-postgres
- Persist items of Opex accountant on Postgres
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
- provided
-
-
- org.springframework.boot
- spring-boot-starter-data-r2dbc
-
-
- io.r2dbc
- r2dbc-postgresql
- runtime
-
-
- org.postgresql
- postgresql
- runtime
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- com.google.code.gson
- gson
-
-
- co.nilin.opex
- error-handler
- 1.0-SNAPSHOT
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/OrderModel.kt b/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/OrderModel.kt
deleted file mode 100644
index 8bf12cde4..000000000
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/OrderModel.kt
+++ /dev/null
@@ -1,39 +0,0 @@
-package co.nilin.opex.port.accountant.postgres.model
-
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import org.springframework.data.annotation.Id
-import org.springframework.data.relational.core.mapping.Column
-import org.springframework.data.relational.core.mapping.Table
-import java.math.BigDecimal
-import java.time.LocalDateTime
-
-@Table("orders")
-class OrderModel(
- @Id var id: Long?,
- val ouid: String,
- val uuid: String,
- val pair: String,
- @Column(value = "matching_engine_id") val matchingEngineId: Long?,
- @Column("maker_fee") val makerFee: Double,
- @Column("taker_fee") val takerFee: Double,
- @Column("left_side_fraction") val leftSideFraction: Double,
- @Column("right_side_fraction") val rightSideFraction: Double,
- @Column("user_level") val userLevel: String,
- @Column("direction") val direction: OrderDirection,
- @Column("match_constraint") val matchConstraint: MatchConstraint,
- @Column("order_type") val orderType: OrderType,
- @Column("price") val price: Long,
- @Column("quantity") val quantity: Long,
- @Column("filled_quantity") val filledQuantity: Long,
- @Column("orig_price") val origPrice: BigDecimal,
- @Column("orig_quantity") val origQuantity: BigDecimal,
- @Column("filled_orig_quantity") val filledOrigQuantity: BigDecimal,
- @Column("first_transfer_amount") val firstTransferAmount: BigDecimal,
- @Column("remained_transfer_amount") val remainedTransferAmount: BigDecimal,
- @Column("status") val status: Int,
- val agent: String,
- val ip: String,
- @Column("create_date") val createDate: LocalDateTime
-)
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-submitter-kafka/.gitignore b/Accountant/accountant-ports/accountant-submitter-kafka/.gitignore
deleted file mode 100644
index d98fa6485..000000000
--- a/Accountant/accountant-ports/accountant-submitter-kafka/.gitignore
+++ /dev/null
@@ -1,50 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-target/
-
-.DS_Store
-
-
-
-
diff --git a/Accountant/accountant-ports/accountant-submitter-kafka/pom.xml b/Accountant/accountant-ports/accountant-submitter-kafka/pom.xml
deleted file mode 100644
index f7d3e70ab..000000000
--- a/Accountant/accountant-ports/accountant-submitter-kafka/pom.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- accountant-submitter-kafka
- 1.0-SNAPSHOT
- accountant-temp-submitter-kafka
- Accountant kafka event submitter of Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
- provided
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/Accountant/accountant-ports/accountant-wallet-proxy/.gitignore b/Accountant/accountant-ports/accountant-wallet-proxy/.gitignore
deleted file mode 100644
index f3a8317d6..000000000
--- a/Accountant/accountant-ports/accountant-wallet-proxy/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.iml
-target/
-.mvn/
-.idea/
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-wallet-proxy/pom.xml b/Accountant/accountant-ports/accountant-wallet-proxy/pom.xml
deleted file mode 100644
index d536d061c..000000000
--- a/Accountant/accountant-ports/accountant-wallet-proxy/pom.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- accountant-wallet-proxy
- 1.0-SNAPSHOT
- accountant-wallet-proxy
- Opex wallet proxy
-
-
- 1.8
- 1.4.31
- 2020.0.2
- ${version}
- ${version}
- ${version}
-
-
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
- provided
-
-
- co.nilin.opex
- logging-handler
- ${utility.version}
- provided
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-all
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
-
- org.springframework.boot
- spring-boot-starter-data-r2dbc
-
-
- io.r2dbc
- r2dbc-postgresql
- runtime
-
-
- org.postgresql
- postgresql
- runtime
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
diff --git a/Accountant/pom.xml b/Accountant/pom.xml
deleted file mode 100644
index 436f574ac..000000000
--- a/Accountant/pom.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- accountant-root
- 1.0-SNAPSHOT
- accountant-root
- pom
- Accountant root of Opex
-
- accountant-core
- accountant-app
- accountant-ports/accountant-persister-postgres
- accountant-ports/accountant-wallet-proxy
- accountant-ports/accountant-submitter-kafka
- accountant-ports/accountant-eventlistener-kafka
-
-
diff --git a/Api/.gitignore b/Api/.gitignore
deleted file mode 100644
index d6953c444..000000000
--- a/Api/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.iml
-.idea
-/.idea/
diff --git a/Api/.idea/.gitignore b/Api/.idea/.gitignore
deleted file mode 100644
index 73f69e095..000000000
--- a/Api/.idea/.gitignore
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default ignored files
-/shelf/
-/workspace.xml
-# Datasource local storage ignored files
-/dataSources/
-/dataSources.local.xml
-# Editor-based HTTP Client requests
-/httpRequests/
diff --git a/Api/api-app/.gitignore b/Api/api-app/.gitignore
deleted file mode 100644
index e7c460346..000000000
--- a/Api/api-app/.gitignore
+++ /dev/null
@@ -1,80 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-.mvn/
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-.DS_Store
-
-
-
-
diff --git a/Api/api-app/pom.xml b/Api/api-app/pom.xml
deleted file mode 100644
index 620cef3b9..000000000
--- a/Api/api-app/pom.xml
+++ /dev/null
@@ -1,213 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- api-app
- 1.0-SNAPSHOT
- api-app
- Api app Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
- ${version}
- ${version}
-
-
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- co.nilin.opex
- logging-handler
- ${utility.version}
-
-
- co.nilin.opex
- error-handler
- ${utility.version}
-
-
- co.nilin.opex
- interceptors
- ${utility.version}
- provided
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
-
-
- co.nilin.opex
- api-core
- ${api.version}
-
-
- co.nilin.opex
- api-eventlistener-kafka
- ${api.version}
-
-
- co.nilin.opex
- api-binance-rest
- ${api.version}
-
-
- co.nilin.opex
- api-persister-postgres
- ${api.version}
-
-
- io.springfox
- springfox-boot-starter
- 3.0.0
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-api
-
-
diff --git a/Api/api-core/.gitignore b/Api/api-core/.gitignore
deleted file mode 100644
index f3a8317d6..000000000
--- a/Api/api-core/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.iml
-target/
-.mvn/
-.idea/
\ No newline at end of file
diff --git a/Api/api-core/pom.xml b/Api/api-core/pom.xml
deleted file mode 100644
index b8ded6631..000000000
--- a/Api/api-core/pom.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- api-core
- 1.0-SNAPSHOT
- api-core
- Api logic of Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
- provided
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- org.springframework
- spring-tx
- provided
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Api/api-ports/.gitignore b/Api/api-ports/.gitignore
deleted file mode 100644
index f3a8317d6..000000000
--- a/Api/api-ports/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.iml
-target/
-.mvn/
-.idea/
\ No newline at end of file
diff --git a/Api/api-ports/api-binance-rest/.gitignore b/Api/api-ports/api-binance-rest/.gitignore
deleted file mode 100644
index f3a8317d6..000000000
--- a/Api/api-ports/api-binance-rest/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.iml
-target/
-.mvn/
-.idea/
\ No newline at end of file
diff --git a/Api/api-ports/api-eventlistener-kafka/.gitignore b/Api/api-ports/api-eventlistener-kafka/.gitignore
deleted file mode 100644
index bb9840a17..000000000
--- a/Api/api-ports/api-eventlistener-kafka/.gitignore
+++ /dev/null
@@ -1,34 +0,0 @@
-HELP.md
-target/
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-.mvn/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-
-
-### VS Code ###
-.vscode/
-
-.DS_Store
diff --git a/Api/api-ports/api-eventlistener-kafka/pom.xml b/Api/api-ports/api-eventlistener-kafka/pom.xml
deleted file mode 100644
index 02f69f254..000000000
--- a/Api/api-ports/api-eventlistener-kafka/pom.xml
+++ /dev/null
@@ -1,120 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- api-eventlistener-kafka
- 1.0-SNAPSHOT
- api-eventlistener-kafka
- Api kafka listener of Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
- provided
-
-
- co.nilin.opex
- api-core
- ${api.version}
- provided
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Api/api-ports/api-persister-postgres/.gitignore b/Api/api-ports/api-persister-postgres/.gitignore
deleted file mode 100644
index de5a9214d..000000000
--- a/Api/api-ports/api-persister-postgres/.gitignore
+++ /dev/null
@@ -1,34 +0,0 @@
-HELP.md
-target/
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-.mvn/
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-
-.DS_Store
diff --git a/Api/pom.xml b/Api/pom.xml
deleted file mode 100644
index 8e670c159..000000000
--- a/Api/pom.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- api-root
- 1.0-SNAPSHOT
- api-root
- pom
- Api root of Opex
-
- api-core
- api-app
- api-ports/api-persister-postgres
- api-ports/api-binance-rest
- api-ports/api-eventlistener-kafka
-
-
diff --git a/BlockchainGateway/.gitignore b/BlockchainGateway/.gitignore
deleted file mode 100644
index 785786ed7..000000000
--- a/BlockchainGateway/.gitignore
+++ /dev/null
@@ -1,47 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-.idea/**
-.idea
-.idea/
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-
-
-
-!/.idea/
-
-.DS_Store
diff --git a/BlockchainGateway/bc-gateway-app/.gitignore b/BlockchainGateway/bc-gateway-app/.gitignore
deleted file mode 100644
index 0d6c2228e..000000000
--- a/BlockchainGateway/bc-gateway-app/.gitignore
+++ /dev/null
@@ -1,35 +0,0 @@
-HELP.md
-target/
-.mvn/
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-
-.DS_Store
diff --git a/BlockchainGateway/bc-gateway-app/pom.xml b/BlockchainGateway/bc-gateway-app/pom.xml
deleted file mode 100644
index e8f17c131..000000000
--- a/BlockchainGateway/bc-gateway-app/pom.xml
+++ /dev/null
@@ -1,242 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex.external
- bc-gateway-app
- 1.0-SNAPSHOT
- bc-gateway-app
- Blockchain gateway app of Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
- 2020.0.2
-
-
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
-
- org.jetbrains.kotlin
- kotlin-stdlib
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- io.projectreactor
- reactor-test
- test
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-all
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-oauth2-resource-server
-
-
- org.bouncycastle
- bcprov-jdk15on
- 1.60
-
-
- co.nilin.opex.external
- bc-gateway-core
- ${bc-gateway.version}
-
-
- co.nilin.opex.external
- bc-gateway-persister-postgres
- ${bc-gateway.version}
-
-
- co.nilin.opex.external
- wallet-proxy
- ${bc-gateway.version}
-
-
- io.springfox
- springfox-boot-starter
- 3.0.0
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-bc-gateway
-
-
-
diff --git a/BlockchainGateway/bc-gateway-core/.gitignore b/BlockchainGateway/bc-gateway-core/.gitignore
deleted file mode 100644
index 8e22e6c21..000000000
--- a/BlockchainGateway/bc-gateway-core/.gitignore
+++ /dev/null
@@ -1,35 +0,0 @@
-HELP.md
-target/
-.mvn
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-
-.DS_Store
diff --git a/BlockchainGateway/bc-gateway-core/pom.xml b/BlockchainGateway/bc-gateway-core/pom.xml
deleted file mode 100644
index b9e15c14e..000000000
--- a/BlockchainGateway/bc-gateway-core/pom.xml
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex.external
- bc-gateway-core
- 1.0-SNAPSHOT
- bc-gateway-core
- Blockchain gateway core of Opex
-
-
- 1.8
- 1.4.31
- 3.2.0
- ${version}
-
-
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.springframework
- spring-tx
- provided
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- org.mockito.kotlin
- mockito-kotlin
- ${mockito-kotlin.version}
-
-
- co.nilin.opex
- error-handler
- ${utility.version}
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/BlockchainGateway/bc-gateway-ports/bc-chain-proxy/.gitignore b/BlockchainGateway/bc-gateway-ports/bc-chain-proxy/.gitignore
deleted file mode 100644
index f4e066ca5..000000000
--- a/BlockchainGateway/bc-gateway-ports/bc-chain-proxy/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-!/.mvn/
-
-.DS_Store
diff --git a/BlockchainGateway/bc-gateway-ports/bc-chain-proxy/pom.xml b/BlockchainGateway/bc-gateway-ports/bc-chain-proxy/pom.xml
deleted file mode 100644
index 8924485f2..000000000
--- a/BlockchainGateway/bc-gateway-ports/bc-chain-proxy/pom.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- 4.0.0
-
- co.nilin.opex.external
- bc-chain-proxy
- 1.0-SNAPSHOT
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- co.nilin.opex.external
- bc-gateway-core
- ${bc-gateway.version}
-
-
- org.springframework
- spring-webflux
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
-
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/.gitignore b/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/.gitignore
deleted file mode 100644
index f4e066ca5..000000000
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-!/.mvn/
-
-.DS_Store
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/pom.xml b/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/pom.xml
deleted file mode 100644
index f289f6e96..000000000
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/pom.xml
+++ /dev/null
@@ -1,111 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex.external
- bc-gateway-persister-postgres
- 1.0-SNAPSHOT
- bc-gateway-persister-postgres
- Persist items of Opex blockchain gateway on Postgres
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter-data-r2dbc
-
-
- io.r2dbc
- r2dbc-postgresql
- runtime
-
-
- org.postgresql
- postgresql
- runtime
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- co.nilin.opex.external
- bc-gateway-core
- ${bc-gateway.version}
-
-
- io.projectreactor
- reactor-test
- test
-
-
- co.nilin.opex.external
- bc-chain-proxy
- 1.0-SNAPSHOT
- compile
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/BlockchainGateway/bc-gateway-ports/wallet-proxy/.gitignore b/BlockchainGateway/bc-gateway-ports/wallet-proxy/.gitignore
deleted file mode 100644
index f4e066ca5..000000000
--- a/BlockchainGateway/bc-gateway-ports/wallet-proxy/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-!/.mvn/
-
-.DS_Store
diff --git a/BlockchainGateway/bc-gateway-ports/wallet-proxy/pom.xml b/BlockchainGateway/bc-gateway-ports/wallet-proxy/pom.xml
deleted file mode 100644
index eda33de00..000000000
--- a/BlockchainGateway/bc-gateway-ports/wallet-proxy/pom.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- 4.0.0
-
- co.nilin.opex.external
- wallet-proxy
- 1.0-SNAPSHOT
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- co.nilin.opex.external
- bc-gateway-core
- ${bc-gateway.version}
-
-
- org.springframework
- spring-webflux
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
-
diff --git a/BlockchainGateway/pom.xml b/BlockchainGateway/pom.xml
deleted file mode 100644
index f958f29dd..000000000
--- a/BlockchainGateway/pom.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex.external
- bc-gateway
- 1.0-SNAPSHOT
- bc-gateway
- pom
- Blockchain gateway root of opex
-
-
- bc-gateway-core
- bc-gateway-app
- bc-gateway-ports/bc-persister-postgres
- bc-gateway-ports/bc-chain-proxy
- bc-gateway-ports/wallet-proxy
-
-
diff --git a/Deployment/docker-compose.yml b/Deployment/docker-compose.yml
index 332a62ef0..f34b167d0 100644
--- a/Deployment/docker-compose.yml
+++ b/Deployment/docker-compose.yml
@@ -79,7 +79,7 @@ services:
- POSTGRES_PASSWORD=hiopex
- POSTGRES_DB=opex_eventlog
volumes:
- - $PWD/runtime/eventlog-data:/var/lib/postgresql/data/
+ - $DATA/runtime/eventlog-data:/var/lib/postgresql/data/
networks:
- opex
postgres-auth:
@@ -145,7 +145,7 @@ services:
accountant:
container_name: accountant
build:
- context: ../Accountant/accountant-app
+ context: ../accountant/accountant-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8089:8089
@@ -168,7 +168,7 @@ services:
eventlog:
container_name: eventlog
build:
- context: ../EventLog/eventlog-app
+ context: ../eventlog/eventlog-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8090:8090
@@ -190,7 +190,7 @@ services:
matching-engine:
container_name: matching-engine
build:
- context: ../MatchingEngine/matching-app
+ context: ../matching-engine/matching-engine-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8092:8092
@@ -209,7 +209,7 @@ services:
matching-gateway:
container_name: matching-gateway
build:
- context: ../MatchingGateway/gateway-app
+ context: ../matching-gateway/matching-gateway-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8093:8093
@@ -229,7 +229,7 @@ services:
auth:
container_name: auth
build:
- context: ../UserManagement/keycloak-gateway
+ context: ../user-management/keycloak-gateway
dockerfile: Dockerfile
ports:
- 127.0.0.1:8083:8083
@@ -242,7 +242,7 @@ services:
- CONSUL_HOST=consul
- DB_IP_PORT=postgres-auth
- PROXY_ADDRESS_FORWARDING=true
- - WORKING_DIR=$PWD
+ - WORKING_DIR=$DATA
networks:
- opex
depends_on:
@@ -257,7 +257,7 @@ services:
wallet:
container_name: wallet
build:
- context: ../Wallet/wallet-app
+ context: ../wallet/wallet-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8091:8091
@@ -283,7 +283,7 @@ services:
api:
container_name: API
build:
- context: ../Api/api-app
+ context: ../api/api-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8094:8094
@@ -309,7 +309,7 @@ services:
websocket:
container_name: websocket
build:
- context: ../Websocket/websocket-app
+ context: ../websocket/websocket-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8097:8097
@@ -333,7 +333,7 @@ services:
bc-gateway:
container_name: bc-gateway
build:
- context: ../BlockchainGateway/bc-gateway-app
+ context: ../bc-gateway/bc-gateway-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8095:8095
@@ -359,7 +359,7 @@ services:
storage:
container_name: storage
build:
- context: ../Storage/storage-app
+ context: ../storage/storage-app
dockerfile: Dockerfile
ports:
- 127.0.0.1:8096:8096
diff --git a/EventLog/.gitignore b/EventLog/.gitignore
deleted file mode 100644
index f4e066ca5..000000000
--- a/EventLog/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-!/.mvn/
-
-.DS_Store
diff --git a/EventLog/eventlog-app/pom.xml b/EventLog/eventlog-app/pom.xml
deleted file mode 100644
index fe3074461..000000000
--- a/EventLog/eventlog-app/pom.xml
+++ /dev/null
@@ -1,189 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- eventlog-app
- 1.0-SNAPSHOT
- eventlog-app
- Event log running app Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
-
-
- co.nilin.opex
- eventlog-core
- ${eventlog.version}
-
-
- co.nilin.opex
- eventlog-eventlistener-kafka
- ${eventlog.version}
-
-
- co.nilin.opex
- eventlog-persister-postgres
- ${eventlog.version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-eventlog
-
-
-
diff --git a/EventLog/eventlog-core/pom.xml b/EventLog/eventlog-core/pom.xml
deleted file mode 100644
index f916ddc41..000000000
--- a/EventLog/eventlog-core/pom.xml
+++ /dev/null
@@ -1,100 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- eventlog-core
- 1.0-SNAPSHOT
- eventlog-core
- Event log of Opex
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- exchange.core2
- collections
- 0.5.1
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Event.kt b/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Event.kt
deleted file mode 100644
index eecd48b7f..000000000
--- a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Event.kt
+++ /dev/null
@@ -1,4 +0,0 @@
-package co.nilin.opex.eventlog.spi
-
-interface Event {
-}
\ No newline at end of file
diff --git a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/EventPersister.kt b/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/EventPersister.kt
deleted file mode 100644
index f2e0fb35a..000000000
--- a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/EventPersister.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package co.nilin.opex.eventlog.spi
-
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-
-interface EventPersister {
- suspend fun saveEvent(event: CoreEvent): List
-}
\ No newline at end of file
diff --git a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Order.kt b/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Order.kt
deleted file mode 100644
index 6816360ca..000000000
--- a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Order.kt
+++ /dev/null
@@ -1,4 +0,0 @@
-package co.nilin.opex.eventlog.spi
-
-interface Order {
-}
\ No newline at end of file
diff --git a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Trade.kt b/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Trade.kt
deleted file mode 100644
index 127144c2a..000000000
--- a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/Trade.kt
+++ /dev/null
@@ -1,4 +0,0 @@
-package co.nilin.opex.eventlog.spi
-
-interface Trade {
-}
\ No newline at end of file
diff --git a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/TradePersister.kt b/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/TradePersister.kt
deleted file mode 100644
index cf39ae969..000000000
--- a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/TradePersister.kt
+++ /dev/null
@@ -1,7 +0,0 @@
-package co.nilin.opex.eventlog.spi
-
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
-
-interface TradePersister {
- suspend fun saveTrade(tradeEvent: TradeEvent): Trade
-}
\ No newline at end of file
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/.gitignore b/EventLog/eventlog-ports/eventlog-eventlistener-kafka/.gitignore
deleted file mode 100644
index 549e00a2a..000000000
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/pom.xml b/EventLog/eventlog-ports/eventlog-eventlistener-kafka/pom.xml
deleted file mode 100644
index 38abd4d43..000000000
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/pom.xml
+++ /dev/null
@@ -1,106 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- eventlog-eventlistener-kafka
- 1.0-SNAPSHOT
- eventlog-eventlistener-kafka
- Matching engine kafka trade handler of Opex
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/EventKafkaListener.kt b/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/EventKafkaListener.kt
deleted file mode 100644
index 4e02b2665..000000000
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/EventKafkaListener.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package co.nilin.opex.port.eventlog.kafka.consumer
-
-
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.eventlog.kafka.spi.EventListener
-import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.springframework.kafka.listener.MessageListener
-import org.springframework.stereotype.Component
-
-@Component
-class EventKafkaListener: MessageListener {
- val eventListeners = arrayListOf()
- override fun onMessage(data: ConsumerRecord) {
- eventListeners.forEach{
- tl -> tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
- }
- }
-
- fun addEventListener(tl: EventListener){
- eventListeners.add(tl)
- }
-
- fun removeEventListener(tl: EventListener){
- eventListeners.removeIf {
- item -> item.id() == tl.id()
- }
- }
-}
\ No newline at end of file
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/TradeKafkaListener.kt b/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/TradeKafkaListener.kt
deleted file mode 100644
index 9672f2ab8..000000000
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/TradeKafkaListener.kt
+++ /dev/null
@@ -1,28 +0,0 @@
-package co.nilin.opex.port.eventlog.kafka.consumer
-
-
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
-import co.nilin.opex.port.eventlog.kafka.spi.TradeListener
-import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.springframework.kafka.listener.MessageListener
-import org.springframework.stereotype.Component
-
-@Component
-class TradeKafkaListener: MessageListener {
- val tradeListeners = arrayListOf()
- override fun onMessage(data: ConsumerRecord) {
- tradeListeners.forEach{
- tl -> tl.onTrade(data.value(), data.partition(), data.offset(), data.timestamp())
- }
- }
-
- fun addTradeListener(tl: TradeListener){
- tradeListeners.add(tl)
- }
-
- fun removeTradeListener(tl: TradeListener){
- tradeListeners.removeIf {
- item -> item.id() == tl.id()
- }
- }
-}
\ No newline at end of file
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/.gitignore b/EventLog/eventlog-ports/eventlog-persister-postgres/.gitignore
deleted file mode 100644
index 549e00a2a..000000000
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/pom.xml b/EventLog/eventlog-ports/eventlog-persister-postgres/pom.xml
deleted file mode 100644
index 3c2fcc5e3..000000000
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/pom.xml
+++ /dev/null
@@ -1,112 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- eventlog-persister-postgres
- 1.0-SNAPSHOT
- eventlog-persister-postgres
- Persist items of Opex on Postgres
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- co.nilin.opex
- eventlog-core
- ${eventlog.version}
- provided
-
-
- org.springframework.boot
- spring-boot-starter-data-r2dbc
-
-
- io.r2dbc
- r2dbc-postgresql
- runtime
-
-
- org.postgresql
- postgresql
- runtime
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/OrderPersisterImpl.kt b/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/OrderPersisterImpl.kt
deleted file mode 100644
index caf1dcf08..000000000
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/OrderPersisterImpl.kt
+++ /dev/null
@@ -1,66 +0,0 @@
-package co.nilin.opex.port.eventlog.postgres.impl
-
-import co.nilin.opex.eventlog.spi.OrderPersister
-import co.nilin.opex.matching.core.eventh.events.*
-import co.nilin.opex.port.eventlog.postgres.dao.OrderEventRepository
-import co.nilin.opex.port.eventlog.postgres.dao.OrderRepository
-import co.nilin.opex.port.eventlog.postgres.model.OrderEventsModel
-import co.nilin.opex.port.eventlog.postgres.model.OrderModel
-import kotlinx.coroutines.reactive.awaitFirst
-import kotlinx.coroutines.reactive.awaitFirstOrNull
-import kotlinx.coroutines.reactive.awaitSingle
-import org.springframework.stereotype.Component
-import java.time.LocalDateTime
-
-@Component
-class OrderPersisterImpl(val orderRepository: OrderRepository
-, val orderEventRepository: OrderEventRepository): OrderPersister {
- override suspend fun submitOrder(orderEvent: SubmitOrderEvent) {
- orderRepository.save(OrderModel(null, orderEvent.ouid
- , orderEvent.pair.toString()
- , orderEvent.direction.toString()
- , orderEvent.matchConstraint.toString()
- , orderEvent.orderType.toString()
- , orderEvent.uuid, "agent", "127.0.0.1", orderEvent.eventDate, LocalDateTime.now()))
- .block()
- orderEventRepository.save(OrderEventsModel(null
- , orderEvent.ouid, orderEvent.uuid, orderEvent.orderId, orderEvent.price
- , orderEvent.quantity, orderEvent.quantity - orderEvent.remainedQuantity
- , orderEvent.javaClass.simpleName
- , "agent", "127.0.0.1", orderEvent.eventDate, LocalDateTime.now()))
- .awaitFirst()
-
- }
-
- override suspend fun rejectOrder(orderEvent: RejectOrderEvent) {
- orderEventRepository.save(OrderEventsModel(null
- , orderEvent.ouid, orderEvent.uuid, orderEvent.orderId, orderEvent.price
- , orderEvent.quantity, 0
- , orderEvent.javaClass.simpleName
- , "agent", "127.0.0.1", orderEvent.eventDate, LocalDateTime.now())).awaitFirst()
- }
-
- override suspend fun saveOrder(orderEvent: CreateOrderEvent) {
- orderEventRepository.save(OrderEventsModel(null
- , orderEvent.ouid, orderEvent.uuid, orderEvent.orderId, orderEvent.price
- , orderEvent.quantity, orderEvent.quantity - orderEvent.remainedQuantity
- , orderEvent.javaClass.simpleName
- , "agent", "127.0.0.1", orderEvent.eventDate, LocalDateTime.now())).awaitFirstOrNull()
- }
-
- override suspend fun updateOrder(orderEvent: UpdatedOrderEvent) {
- orderEventRepository.save(OrderEventsModel(null
- , orderEvent.ouid, orderEvent.uuid, orderEvent.orderId, orderEvent.price
- , orderEvent.quantity, orderEvent.quantity - orderEvent.remainedQuantity
- , orderEvent.javaClass.simpleName
- , "agent", "127.0.0.1", orderEvent.eventDate, LocalDateTime.now())).awaitFirstOrNull()
- }
-
- override suspend fun cancelOrder(orderEvent: CancelOrderEvent) {
- orderEventRepository.save(OrderEventsModel(null
- , orderEvent.ouid, orderEvent.uuid, orderEvent.orderId, orderEvent.price
- , orderEvent.quantity, orderEvent.quantity - orderEvent.remainedQuantity
- , orderEvent.javaClass.simpleName
- , "agent", "127.0.0.1", orderEvent.eventDate, LocalDateTime.now())).awaitFirst()
- }
-}
\ No newline at end of file
diff --git a/EventLog/pom.xml b/EventLog/pom.xml
deleted file mode 100644
index 25d17a0d6..000000000
--- a/EventLog/pom.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- eventlog
- 1.0-SNAPSHOT
- eventlog
- pom
- Event log root of Opex
-
-
- eventlog-core
- eventlog-ports/eventlog-persister-postgres
- eventlog-ports/eventlog-eventlistener-kafka
- eventlog-app
-
-
diff --git a/Jenkins/Jenkinsfile.deploy.groovy b/Jenkins/Jenkinsfile.deploy.groovy
index 29305ef4c..e5c4e0885 100644
--- a/Jenkins/Jenkinsfile.deploy.groovy
+++ b/Jenkins/Jenkinsfile.deploy.groovy
@@ -4,85 +4,42 @@ pipeline {
stages {
stage('Build') {
steps {
- setBuildStatus("?", "PENDING");
+ setBuildStatus("?", "PENDING")
withMaven(
maven: 'maven-latest'
) {
- dir("Utility") {
- sh 'mvn -B clean install'
- }
-
- dir("MatchingEngine") {
- sh 'mvn -B clean install'
- }
-
- dir("MatchingGateway") {
- sh 'mvn -B clean install'
- }
-
- dir("Accountant") {
- sh 'mvn -B clean install'
- }
-
- dir("EventLog") {
- sh 'mvn -B clean install'
- }
-
- dir("UserManagement") {
- sh 'mvn -B clean install'
- }
-
- dir("Wallet") {
- sh 'mvn -B clean install'
- }
-
- dir("Api") {
- sh 'mvn -B clean install'
- }
-
- dir("BlockchainGateway") {
- sh 'mvn -B clean install'
- }
-
- dir("Storage") {
- sh 'mvn -B clean install'
- }
-
- dir("Websocket") {
- sh 'mvn -B clean install'
- }
+ sh 'mvn -B clean install'
}
-
}
}
stage('Deliver') {
- environment {
- DATA = '/var/opex/runtime'
- }
- steps {
- dir("Deployment") {
- sh 'docker-compose build'
- sh 'docker-compose up -d'
- }
- }
+ environment {
+ DATA = '/var/opex/runtime'
+ }
+ steps {
+ dir("Deployment") {
+ sh 'docker-compose build'
+ sh 'docker-compose up -d'
+ }
+ }
}
}
-
+
post {
always {
echo 'One way or another, I have finished'
}
success {
echo ':)'
- setBuildStatus(":)", "SUCCESS");
+ setBuildStatus(":)", "SUCCESS")
}
unstable {
echo ':/'
- setBuildStatus(":/", "UNSTABLE");
+ setBuildStatus(":/", "UNSTABLE")
}
failure {
echo ':('
- setBuildStatus(":(", "FAILURE");
+ setBuildStatus(":(", "FAILURE")
}
changed {
echo 'Things were different before...'
@@ -91,11 +48,11 @@ pipeline {
}
void setBuildStatus(String message, String state) {
- step([
- $class: "GitHubCommitStatusSetter",
- reposSource: [$class: "ManuallyEnteredRepositorySource", url: "https://github.com/opexdev/OPEX-Core"],
- contextSource: [$class: "ManuallyEnteredCommitContextSource", context: "ci/jenkins/build-status"],
- errorHandlers: [[$class: "ChangingBuildStatusErrorHandler", result: "UNSTABLE"]],
- statusResultSource: [ $class: "ConditionalStatusResultSource", results: [[$class: "AnyBuildResult", message: message, state: state]] ]
- ]);
+ step([
+ $class : "GitHubCommitStatusSetter",
+ reposSource : [$class: "ManuallyEnteredRepositorySource", url: "https://github.com/opexdev/OPEX-Core"],
+ contextSource : [$class: "ManuallyEnteredCommitContextSource", context: "ci/jenkins/build-status"],
+ errorHandlers : [[$class: "ChangingBuildStatusErrorHandler", result: "UNSTABLE"]],
+ statusResultSource: [$class: "ConditionalStatusResultSource", results: [[$class: "AnyBuildResult", message: message, state: state]]]
+ ])
}
diff --git a/MatchingEngine/.gitignore b/MatchingEngine/.gitignore
deleted file mode 100644
index d0fc406b4..000000000
--- a/MatchingEngine/.gitignore
+++ /dev/null
@@ -1,86 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-.idea/
-*.iml
-*.ipr
-
-# CMake
-cmake-build-*/
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-# mpeltonen/sbt-idea plugin
-.idea_modules/
-
-# JIRA plugin
-atlassian-ide-plugin.xml
-
-# Cursive Clojure plugin
-.idea/replstate.xml
-
-# Crashlytics plugin (for Android Studio and IntelliJ)
-com_crashlytics_export_strings.xml
-crashlytics.properties
-crashlytics-build.properties
-fabric.properties
-
-
-### macOS template
-# General
-.DS_Store
-.AppleDouble
-.LSOverride
-
-# Icon must end with two \r
-Icon
-
-# Thumbnails
-._*
-
-# Files that might appear in the root of a volume
-.DocumentRevisions-V100
-.fseventsd
-.Spotlight-V100
-.TemporaryItems
-.Trashes
-.VolumeIcon.icns
-.com.apple.timemachine.donotpresent
-
-# Directories potentially created on remote AFP share
-.AppleDB
-.AppleDesktop
-Network Trash Folder
-Temporary Items
-.apdisk
-
diff --git a/MatchingEngine/matching-app/.gitignore b/MatchingEngine/matching-app/.gitignore
deleted file mode 100644
index 7f15adddb..000000000
--- a/MatchingEngine/matching-app/.gitignore
+++ /dev/null
@@ -1,77 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-
-
-
diff --git a/MatchingEngine/matching-app/pom.xml b/MatchingEngine/matching-app/pom.xml
deleted file mode 100644
index 1f93bef15..000000000
--- a/MatchingEngine/matching-app/pom.xml
+++ /dev/null
@@ -1,188 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- matching-app
- 1.0-SNAPSHOT
- matching-app
- Matching engine running app Opex
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
-
-
- co.nilin.opex
- matching-submitter-kafka
- ${matching.version}
-
-
- co.nilin.opex
- matching-eventlistener-kafka
- ${matching.version}
-
-
- co.nilin.opex
- matching-snapshots-redis
- ${matching.version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-matching-engine
-
-
-
diff --git a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/bl/OrderBooks.kt b/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/bl/OrderBooks.kt
deleted file mode 100644
index 53725d72b..000000000
--- a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/bl/OrderBooks.kt
+++ /dev/null
@@ -1,26 +0,0 @@
-package co.nilin.opex.app.bl
-
-import co.nilin.opex.matching.core.factory.OrderBookFactory
-import co.nilin.opex.matching.core.model.OrderBook
-import co.nilin.opex.matching.core.model.PersistentOrderBook
-
-object OrderBooks {
- private val orderBooks = mutableMapOf()
-
- fun createOrderBook(pair: String) {
- println("Going to add order book:" + pair + ", current order books#" + orderBooks.size)
- if ( orderBooks.containsKey(pair))
- throw IllegalArgumentException("${pair} has an order book right now!")
- val pairs = pair.split("_")
- orderBooks[pair] = OrderBookFactory.createOrderBook(co.nilin.opex.matching.core.model.Pair(pairs[0], pairs[1]))
- println("order book:" + pair + " added, current order books#" + orderBooks.size)
- }
-
- fun reloadOrderBook(orderBook: PersistentOrderBook){
- orderBooks["${orderBook.pair.leftSideName}_${orderBook.pair.rightSideName}"] = OrderBookFactory.createOrderBook(orderBook)
- }
-
- fun lookupOrderBook(pair: String): OrderBook {
- return orderBooks[pair]?:throw IllegalArgumentException("No orderbook for $pair")
- }
-}
\ No newline at end of file
diff --git "a/MatchingEngine/matching-app/src/test/kotlin/co/nilin/opex/matching/core/engine/OrderBook\331\215EventEmitsUnitTest.kt" "b/MatchingEngine/matching-app/src/test/kotlin/co/nilin/opex/matching/core/engine/OrderBook\331\215EventEmitsUnitTest.kt"
deleted file mode 100644
index 54c55731d..000000000
--- "a/MatchingEngine/matching-app/src/test/kotlin/co/nilin/opex/matching/core/engine/OrderBook\331\215EventEmitsUnitTest.kt"
+++ /dev/null
@@ -1,78 +0,0 @@
-package co.nilin.opex.matching.core.engine
-
-import co.nilin.opex.matching.core.eventh.EventDispatcher
-import co.nilin.opex.matching.core.eventh.events.OrderBookPublishedEvent
-import co.nilin.opex.matching.core.inout.OrderCancelCommand
-import co.nilin.opex.matching.core.inout.OrderCreateCommand
-import co.nilin.opex.matching.core.inout.OrderEditCommand
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import co.nilin.opex.matching.core.model.PersistentOrderBook
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.launch
-import org.junit.jupiter.api.Assertions
-import org.junit.jupiter.api.BeforeEach
-import org.junit.jupiter.api.Test
-import java.util.*
-
-class OrderBookEventEmitsUnitTest {
- val pair = co.nilin.opex.matching.core.model.Pair("BTC", "USDT")
- val uuid = UUID.randomUUID().toString()
-
- var persistentOrderBook: PersistentOrderBook? = null
-
- @BeforeEach
- fun setup(){
- val localHandler: (OrderBookPublishedEvent) -> Unit = {
- persistentOrderBook = it.persistentOrderBook
- }
- EventDispatcher.register(OrderBookPublishedEvent::class.java, localHandler)
- }
-
- @Test
- fun givenOrderBook_whenOrderCreated_thenOrderBookEventPublished() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- //when
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //then
- Assertions.assertNotNull(persistentOrderBook)
- }
-
-
-
- @Test
- fun givenOrderBook_whenCancelOrder_thenOrderBookEventPublished(){
- //given
- val orderBook = SimpleOrderBook(pair, false)
- val firstOrderId = UUID.randomUUID().toString()
- val secondOrderId = UUID.randomUUID().toString()
-
- val firstOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(firstOrderId, uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(secondOrderId, uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- persistentOrderBook = null
- //when
- orderBook.handleCancelCommand(OrderCancelCommand(firstOrderId, uuid, firstOrder!!.id()!!, pair))
- //then
- Assertions.assertNotNull(persistentOrderBook)
- }
-
-
- @Test
- fun givenOrderBook_whenEditOrder_thenOrderBookEventPublished(){
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val secondOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 3, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- persistentOrderBook = null
- //when
- orderBook.handleEditCommand(OrderEditCommand(UUID.randomUUID().toString(), uuid, secondOrder!!.id()!!, pair, 3, 2))
- //then
- Assertions.assertNotNull(persistentOrderBook)
- }
-
-
-}
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/.gitignore b/MatchingEngine/matching-core/.gitignore
deleted file mode 100644
index 7f15adddb..000000000
--- a/MatchingEngine/matching-core/.gitignore
+++ /dev/null
@@ -1,77 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-
-
-
diff --git a/MatchingEngine/matching-core/pom.xml b/MatchingEngine/matching-core/pom.xml
deleted file mode 100644
index 48b09607a..000000000
--- a/MatchingEngine/matching-core/pom.xml
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- matching-core
- 1.0-SNAPSHOT
- matching-core
- Matching engine of Opex
-
-
- 1.8
- 1.4.31
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- exchange.core2
- collections
- 0.5.1
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/OrderBookPublishedEvent.kt b/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/OrderBookPublishedEvent.kt
deleted file mode 100644
index fe84c455c..000000000
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/OrderBookPublishedEvent.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package co.nilin.opex.matching.core.eventh.events
-
-import co.nilin.opex.matching.core.model.PersistentOrderBook
-
-data class OrderBookPublishedEvent(val persistentOrderBook: PersistentOrderBook): CoreEvent()
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/RejectOrderEvent.kt b/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/RejectOrderEvent.kt
deleted file mode 100644
index 39cd75e5c..000000000
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/RejectOrderEvent.kt
+++ /dev/null
@@ -1,70 +0,0 @@
-package co.nilin.opex.matching.core.eventh.events
-
-import co.nilin.opex.matching.core.inout.RejectReason
-import co.nilin.opex.matching.core.inout.RequestedOperation
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-
-class RejectOrderEvent(): CoreEvent(), OneOrderEvent {
- var ouid: String = ""
- var uuid: String = ""
- var orderId: Long? = null
- var price: Long? = null
- var quantity: Long? = null
- var direction: OrderDirection? = null
- var matchConstraint: MatchConstraint? = null
- var orderType: OrderType? = null
- var requestedOperation: RequestedOperation = RequestedOperation.PLACE_ORDER
- var reason: RejectReason? = null
-
- constructor(ouid: String,
- uuid: String,
- pair: co.nilin.opex.matching.core.model.Pair,
- price: Long,
- quantity: Long,
- direction: OrderDirection,
- matchConstraint: MatchConstraint,
- orderType: OrderType,
- requestedOperation: RequestedOperation,
- reason: RejectReason?)
- : this(ouid, uuid, null, pair, price, quantity, direction, matchConstraint, orderType, requestedOperation, reason)
- constructor(ouid: String,
- uuid: String,
- orderId: Long,
- pair: co.nilin.opex.matching.core.model.Pair,
- requestedOperation: RequestedOperation,
- reason: RejectReason?)
- : this(ouid, uuid, orderId, pair, null, null, null, null, null, requestedOperation, reason)
- constructor(ouid: String,
- uuid: String,
- orderId: Long?,
- pair: co.nilin.opex.matching.core.model.Pair,
- price: Long?,
- quantity: Long?,
- direction: OrderDirection?,
- matchConstraint: MatchConstraint?,
- orderType: OrderType?,
- requestedOperation: RequestedOperation,
- reason: RejectReason?)
- : this(){
- this.ouid = ouid
- this.uuid = uuid
- this.orderId = orderId
- this.pair = pair
- this.price = price
- this.quantity = quantity
- this.direction = direction
- this.matchConstraint = matchConstraint
- this.orderType = orderType
- this.requestedOperation = requestedOperation
- this.reason = reason
- }
- override fun ouid(): String {
- return ouid
- }
-
- override fun uuid(): String {
- return uuid
- }
-}
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/factory/OrderBookFactory.kt b/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/factory/OrderBookFactory.kt
deleted file mode 100644
index ec504ecf5..000000000
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/factory/OrderBookFactory.kt
+++ /dev/null
@@ -1,20 +0,0 @@
-package co.nilin.opex.matching.core.factory
-
-import co.nilin.opex.matching.core.engine.SimpleOrderBook
-import co.nilin.opex.matching.core.model.OrderBook
-import co.nilin.opex.matching.core.model.PersistentOrderBook
-import kotlinx.coroutines.Dispatchers
-import kotlinx.coroutines.withContext
-
-object OrderBookFactory {
- fun createOrderBook(pair: co.nilin.opex.matching.core.model.Pair): OrderBook {
- return SimpleOrderBook(pair, false)
- }
-
- fun createOrderBook(persistentOrderBook: PersistentOrderBook): OrderBook {
- val orderBook = SimpleOrderBook(persistentOrderBook.pair, true)
- orderBook.rebuild(persistentOrderBook)
- orderBook.stopReplayMode()
- return orderBook
- }
-}
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderCancelCommand.kt b/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderCancelCommand.kt
deleted file mode 100644
index a62e0d4a7..000000000
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderCancelCommand.kt
+++ /dev/null
@@ -1,5 +0,0 @@
-package co.nilin.opex.matching.core.inout
-
-import co.nilin.opex.matching.core.model.Pair
-
-class OrderCancelCommand(val ouid: String, val uuid: String, val orderId: Long, val pair: Pair)
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderCreateCommand.kt b/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderCreateCommand.kt
deleted file mode 100644
index ae6fdc9e7..000000000
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderCreateCommand.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package co.nilin.opex.matching.core.inout
-
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import co.nilin.opex.matching.core.model.Pair
-
-
-data class OrderCreateCommand(val ouid: String,
- val uuid: String,
- val pair: Pair,
- val price: Long,
- val quantity: Long,
- val direction: OrderDirection,
- val matchConstraint: MatchConstraint,
- val orderType: OrderType)
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/Order.kt b/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/Order.kt
deleted file mode 100644
index cac761570..000000000
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/Order.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package co.nilin.opex.matching.core.model
-
-interface Order{
- fun id():Long?
- fun persistent():PersistentOrder
-}
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/PersistentOrderBook.kt b/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/PersistentOrderBook.kt
deleted file mode 100644
index 48c6e6c8e..000000000
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/PersistentOrderBook.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package co.nilin.opex.matching.core.model
-
-class PersistentOrderBook {
-
- lateinit var pair: Pair
- var lastOrder: PersistentOrder? = null
- var orders : List? = emptyList()
-
- constructor(){
- }
-
- constructor(pair: Pair){
- this.pair = pair
- }
-
-}
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/test/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBookUnitTest.kt b/MatchingEngine/matching-core/src/test/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBookUnitTest.kt
deleted file mode 100644
index 02130a642..000000000
--- a/MatchingEngine/matching-core/src/test/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBookUnitTest.kt
+++ /dev/null
@@ -1,320 +0,0 @@
-package co.nilin.opex.matching.core.engine
-
-import co.nilin.opex.matching.core.inout.OrderCancelCommand
-import co.nilin.opex.matching.core.inout.OrderCreateCommand
-import co.nilin.opex.matching.core.inout.OrderEditCommand
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import kotlinx.coroutines.Dispatchers
-import org.junit.jupiter.api.Assertions
-import org.junit.jupiter.api.Test
-import java.util.*
-
-class SimpleOrderBookUnitTest {
- val pair = co.nilin.opex.matching.core.model.Pair("BTC", "USDT")
- val ETH_BTC_PAIR = co.nilin.opex.matching.core.model.Pair("ETH", "BTC")
- val uuid = UUID.randomUUID().toString()
-
- @Test
- fun givenEmptyOrderBook_whenGtcBidLimitOrderCreated_then1BucketWithSize1() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- //when
- val order = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 1)
- Assertions.assertEquals(orderBook.bestBidOrder, order)
- Dispatchers.Default
- }
-
- @Test
- fun givenOrderBookWithBidOrders_whenGtcBidLimitOrderWithSamePriceCreated_then() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val bestBidOrder = orderBook.bestBidOrder
- //when
- val order: SimpleOrderBook.SimpleOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 1)
- Assertions.assertEquals(orderBook.bestBidOrder, bestBidOrder)
- Assertions.assertEquals(bestBidOrder!!.worse, order)
- Assertions.assertEquals(order.better, bestBidOrder)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).lastOrder, order)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).totalQuantity, 2)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).ordersCount, 2)
- }
-
- @Test
- fun givenOrderBookWithBidOrders_whenGtcBidLimitOrderWithLowerPriceCreated_thenBestOrderNotChange() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val bestBidOrder = orderBook.bestBidOrder
- //when
- val order: SimpleOrderBook.SimpleOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 2)
- Assertions.assertEquals(orderBook.bestBidOrder, bestBidOrder)
- Assertions.assertEquals(bestBidOrder!!.worse, order)
- Assertions.assertEquals(order.better, bestBidOrder)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).lastOrder, order)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).totalQuantity, 1)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).ordersCount, 1)
- }
-
- @Test
- fun givenOrderBookWithBidOrders_whenGtcBidLimitOrderWithHigherPriceCreated_thenBestOrderChanged() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val bestBidOrder = orderBook.bestBidOrder
- //when
- val order: SimpleOrderBook.SimpleOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 2)
- Assertions.assertEquals(orderBook.bestBidOrder, order)
- Assertions.assertEquals(bestBidOrder!!.better, order)
- Assertions.assertEquals(order.worse, bestBidOrder)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).lastOrder, order)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).totalQuantity, 1)
- Assertions.assertEquals(orderBook.bidOrders.get(order.price).ordersCount, 1)
- }
-
- @Test
- fun givenOrderBookWithBidOrders_whenGtcAskLimitOrderWithSamePriceCreated_thenInstantMatch() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //when
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 0)
- Assertions.assertEquals(orderBook.askOrders.entriesList().size , 0)
- Assertions.assertNull(orderBook.bestBidOrder)
- Assertions.assertNull(orderBook.bestAskOrder)
- }
-
- @Test
- fun givenOrderBookWithBidOrders_whenGtcAskLimitOrderWithNotMatchPriceCreated_thenAddToQueue() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //when
- val order: SimpleOrderBook.SimpleOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 3, 1, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 2)
- Assertions.assertEquals(orderBook.askOrders.entriesList().size , 1)
- Assertions.assertNotNull(orderBook.bestBidOrder)
- Assertions.assertEquals(orderBook.bestAskOrder, order)
- }
-
- @Test
- fun givenOrderBookWithBidAndAskOrders_whenGtcAskLimitOrderWithMatchPriceGreaterQuantityCreated_thenAddToQueue() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 3, 1, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //when
- val order: SimpleOrderBook.SimpleOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 3, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 0)
- Assertions.assertEquals(orderBook.askOrders.entriesList().size , 2)
- Assertions.assertNull(orderBook.bestBidOrder)
- Assertions.assertEquals(orderBook.bestAskOrder, order)
- }
-
- @Test
- fun givenOrderBook_whenCancelBestBidOrder_thenBestBidOrderChange(){
- //given
- val orderBook = SimpleOrderBook(pair, false)
- val firstOrderId = UUID.randomUUID().toString()
- val secondOrderId = UUID.randomUUID().toString()
-
- val firstOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(firstOrderId, uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val lastOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(secondOrderId, uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //when
- orderBook.handleCancelCommand(OrderCancelCommand(firstOrderId, uuid, firstOrder!!.id()!!, pair))
- //then
- Assertions.assertEquals(orderBook.bestBidOrder, lastOrder)
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 1)
- }
-
- @Test
- fun givenOrderBookWithMoreBids_whenCancelBestBidOrder_thenBestBidOrderChange(){
- //given
- val orderBook = SimpleOrderBook(pair, false)
- val firstOrderId = UUID.randomUUID().toString()
- val secondOrderId = UUID.randomUUID().toString()
-
- val firstOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(firstOrderId, uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val secondOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(secondOrderId, uuid, pair, 2, 3, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //when
- orderBook.handleCancelCommand(OrderCancelCommand(firstOrderId, uuid, firstOrder!!.id()!!, pair))
- //then
- Assertions.assertEquals(orderBook.bestBidOrder, secondOrder)
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 2)
- }
-
- @Test
- fun givenOrderBookWithMoreBids_whenCancelABidOrder_thenBestBidOrderNotChange(){
- //given
- val orderBook = SimpleOrderBook(pair, false)
- val firstOrderId = UUID.randomUUID().toString()
- val secondOrderId = UUID.randomUUID().toString()
-
- val firstOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(firstOrderId, uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val secondOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(secondOrderId, uuid, pair, 2, 3, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //when
- orderBook.handleCancelCommand(OrderCancelCommand(secondOrderId, uuid, secondOrder!!.id()!!, pair))
- //then
- Assertions.assertEquals(orderBook.bestBidOrder, firstOrder)
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 2)
- }
-
-
- @Test
- fun givenOrderBookWithMoreBids_whenEditABidOrder_thenBestBidOrderChange(){
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val secondOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 3, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //when
- val order = orderBook.handleEditCommand(OrderEditCommand(UUID.randomUUID().toString(), uuid, secondOrder!!.id()!!, pair, 3, 2))
- //then
- Assertions.assertEquals(secondOrder.id(), order?.id())
- Assertions.assertEquals(orderBook.bestBidOrder, order)
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 3)
- }
-
- @Test
- fun givenOrderBookWithBidAndAskOrders_whenEditABidOrder_thenRefill() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val secondBid = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 3, 1, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- //when
- val order: SimpleOrderBook.SimpleOrder = orderBook.handleEditCommand(OrderEditCommand(UUID.randomUUID().toString(), uuid, secondBid!!.id()!!, pair, 3, 3)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(2 , orderBook.bidOrders.entriesList().size )
- Assertions.assertEquals(0, orderBook.askOrders.entriesList().size )
- Assertions.assertEquals(orderBook.bestBidOrder, order)
- Assertions.assertNull(orderBook.bestAskOrder)
- }
-
- @Test
- fun givenEmptyOrderBook_whenGtcBidMarketOrderCreated_thenRejected() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- //when
-
- val order = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.MARKET_ORDER))
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 0)
- Assertions.assertNull(orderBook.bestBidOrder)
- Assertions.assertNull(order)
- }
-
- @Test
- fun givenEmptyOrderBook_whenIocBidMarketOrderCreated_thenNoOrderCreated() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- //when
-
- val order = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.MARKET_ORDER))
- //then
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 0)
- Assertions.assertNull(orderBook.bestBidOrder)
- Assertions.assertNull(order)
- }
-
- @Test
- fun givenOrderBookWithBidAndAskOrders_whenIocAskMarketOrderWithGreaterQuantityCreated_thenPartiallyFilled() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 3, 1, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val bestAskOrder = orderBook.bestAskOrder
- //when
- val order: SimpleOrderBook.SimpleOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 0, 3, OrderDirection.ASK, MatchConstraint.IOC, OrderType.MARKET_ORDER)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(2, order.filledQuantity)
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 0)
- Assertions.assertEquals(orderBook.askOrders.entriesList().size , 1)
- Assertions.assertNull(orderBook.bestBidOrder)
- Assertions.assertEquals(orderBook.bestAskOrder, bestAskOrder)
- }
-
- @Test
- fun givenOrderBookWithBidAndAskOrders_whenIocAskLimitOrderWithHigherPriceAndGreaterQuantityCreated_thenNotFilled() {
- //given
- val orderBook = SimpleOrderBook(pair, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 2, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 1, 1, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 3, 1, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER))
- val bestAskOrder = orderBook.bestAskOrder
- val bestBidOrder = orderBook.bestBidOrder
- //when
- val order: SimpleOrderBook.SimpleOrder = orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, pair, 3, 3, OrderDirection.ASK, MatchConstraint.IOC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- //then
- Assertions.assertEquals(0, order.filledQuantity)
- Assertions.assertEquals(orderBook.bidOrders.entriesList().size , 2)
- Assertions.assertEquals(orderBook.askOrders.entriesList().size , 1)
- Assertions.assertEquals(bestBidOrder, orderBook.bestBidOrder)
- Assertions.assertEquals(bestAskOrder, orderBook.bestAskOrder)
- }
-
- @Test
- fun whenSample1SequenceOfOrdersOccurs_thenAllSuccess() {
-
- val orderBook = SimpleOrderBook(ETH_BTC_PAIR, false)
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, ETH_BTC_PAIR, 5000000, 10000, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- Assertions.assertNotNull(orderBook.bestBidOrder)
- Assertions.assertEquals(1, orderBook.bidOrders.entriesList().size)
- Assertions.assertEquals(1, orderBook.orders.size)
-
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, ETH_BTC_PAIR, 4900000, 20000, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- Assertions.assertNull(orderBook.bestBidOrder)
- Assertions.assertNotNull(orderBook.bestAskOrder)
- Assertions.assertEquals(0, orderBook.bidOrders.entriesList().size)
- Assertions.assertEquals(1, orderBook.askOrders.entriesList().size)
- Assertions.assertEquals(1, orderBook.orders.size)
-
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, ETH_BTC_PAIR, 4800000, 10000, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- Assertions.assertNull(orderBook.bestBidOrder)
- Assertions.assertNotNull(orderBook.bestAskOrder)
- Assertions.assertEquals(0, orderBook.bidOrders.entriesList().size)
- Assertions.assertEquals(2, orderBook.askOrders.entriesList().size)
- Assertions.assertEquals(2, orderBook.orders.size)
-
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, ETH_BTC_PAIR, 4850000, 20000, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- Assertions.assertEquals(1, orderBook.bidOrders.entriesList().size)
- Assertions.assertEquals(1, orderBook.askOrders.entriesList().size)
- Assertions.assertEquals(2, orderBook.orders.size)
- Assertions.assertNotNull(orderBook.bestBidOrder)
- Assertions.assertNotNull(orderBook.bestAskOrder)
-
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, ETH_BTC_PAIR, 4850100, 10000, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- Assertions.assertEquals(1, orderBook.bidOrders.entriesList().size)
- Assertions.assertEquals(2, orderBook.askOrders.entriesList().size)
- Assertions.assertEquals(3, orderBook.orders.size)
- Assertions.assertNotNull(orderBook.bestBidOrder)
- Assertions.assertNotNull(orderBook.bestAskOrder)
-
- orderBook.handleNewOrderCommand(OrderCreateCommand(UUID.randomUUID().toString(), uuid, ETH_BTC_PAIR, 4849900, 10000, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER)) as SimpleOrderBook.SimpleOrder
- Assertions.assertEquals(2, orderBook.bidOrders.entriesList().size)
- Assertions.assertEquals(2, orderBook.askOrders.entriesList().size)
- Assertions.assertEquals(4, orderBook.orders.size)
- Assertions.assertNotNull(orderBook.bestBidOrder)
- Assertions.assertNotNull(orderBook.bestAskOrder)
- }
-
-}
\ No newline at end of file
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/.gitignore b/MatchingEngine/matching-ports/matching-eventlistener-kafka/.gitignore
deleted file mode 100644
index 8851f0e4a..000000000
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/.gitignore
+++ /dev/null
@@ -1,79 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-.DS_Store
-
-
-
-
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/pom.xml b/MatchingEngine/matching-ports/matching-eventlistener-kafka/pom.xml
deleted file mode 100644
index 4f0975361..000000000
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/pom.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- matching-eventlistener-kafka
- 1.0-SNAPSHOT
- matching-eventlistener-kafka
- Matching engine kafka order submitter of Opex
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/consumer/EventKafkaListener.kt b/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/consumer/EventKafkaListener.kt
deleted file mode 100644
index e26a14466..000000000
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/consumer/EventKafkaListener.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package co.nilin.opex.port.order.kafka.consumer
-
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.order.kafka.spi.EventListener
-import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.springframework.kafka.listener.MessageListener
-import org.springframework.stereotype.Component
-
-@Component
-class EventKafkaListener: MessageListener {
-
- val eventListeners = arrayListOf()
-
- override fun onMessage(data: ConsumerRecord) {
- eventListeners.forEach{
- tl -> tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
- }
- }
-
- fun addEventListener(tl: EventListener){
- eventListeners.add(tl)
- }
-
- fun removeEventListener(tl: EventListener){
- eventListeners.removeIf {
- item -> item.id() == tl.id()
- }
- }
-}
\ No newline at end of file
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitResult.kt b/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitResult.kt
deleted file mode 100644
index 35d4430ec..000000000
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitResult.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package co.nilin.opex.port.order.kafka.inout
-
-class OrderSubmitResult(offset: Long?)
\ No newline at end of file
diff --git a/MatchingEngine/matching-ports/matching-snapshots-redis/.gitignore b/MatchingEngine/matching-ports/matching-snapshots-redis/.gitignore
deleted file mode 100644
index 807d27eef..000000000
--- a/MatchingEngine/matching-ports/matching-snapshots-redis/.gitignore
+++ /dev/null
@@ -1,76 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-.DS_Store
-
diff --git a/MatchingEngine/matching-ports/matching-snapshots-redis/pom.xml b/MatchingEngine/matching-ports/matching-snapshots-redis/pom.xml
deleted file mode 100644
index 5d1854fe3..000000000
--- a/MatchingEngine/matching-ports/matching-snapshots-redis/pom.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- matching-snapshots-redis
- 1.0-SNAPSHOT
- matching-snapshots-redis
- Persist Matching engine snapshot of Opex on Redis
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
-
- org.springframework.boot
- spring-boot-starter-data-redis-reactive
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
- com.fasterxml.jackson.core
- jackson-databind
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/MatchingEngine/matching-ports/matching-submitter-kafka/.gitignore b/MatchingEngine/matching-ports/matching-submitter-kafka/.gitignore
deleted file mode 100644
index 36b20dfa2..000000000
--- a/MatchingEngine/matching-ports/matching-submitter-kafka/.gitignore
+++ /dev/null
@@ -1,77 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-.DS_Store
-
-
diff --git a/MatchingEngine/matching-ports/matching-submitter-kafka/pom.xml b/MatchingEngine/matching-ports/matching-submitter-kafka/pom.xml
deleted file mode 100644
index 9313485aa..000000000
--- a/MatchingEngine/matching-ports/matching-submitter-kafka/pom.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- matching-submitter-kafka
- 1.0-SNAPSHOT
- matching-submitter-kafka
- Matching engine kafka order submitter of Opex
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/MatchingEngine/pom.xml b/MatchingEngine/pom.xml
deleted file mode 100644
index bd686f926..000000000
--- a/MatchingEngine/pom.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- matching-engine
- 1.0-SNAPSHOT
- matching-engine
- pom
- Matching Engine root of Opex
-
-
- matching-core
- matching-ports/matching-submitter-kafka
- matching-ports/matching-eventlistener-kafka
- matching-ports/matching-snapshots-redis
- matching-app
-
-
diff --git a/MatchingGateway/.gitignore b/MatchingGateway/.gitignore
deleted file mode 100644
index 90ffaa853..000000000
--- a/MatchingGateway/.gitignore
+++ /dev/null
@@ -1,73 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
diff --git a/MatchingGateway/gateway-app/.gitignore b/MatchingGateway/gateway-app/.gitignore
deleted file mode 100644
index 7f15adddb..000000000
--- a/MatchingGateway/gateway-app/.gitignore
+++ /dev/null
@@ -1,77 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-
-
-
diff --git a/MatchingGateway/gateway-app/pom.xml b/MatchingGateway/gateway-app/pom.xml
deleted file mode 100644
index 576baf60c..000000000
--- a/MatchingGateway/gateway-app/pom.xml
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- matching-gateway-app
- 1.0-SNAPSHOT
- matching-gateway-app
- Matching gateway running app Opex
-
-
- 1.8
- 1.4.31
- 2020.0.2
- ${version}
- ${version}
-
-
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
-
-
- co.nilin.opex
- gateway-order-submitter-kafka
- ${matching.version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-all
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-oauth2-resource-server
-
-
- org.bouncycastle
- bcprov-jdk15on
- 1.60
-
-
- io.springfox
- springfox-boot-starter
- 3.0.0
-
-
- co.nilin.opex
- error-handler
- ${utility.version}
-
-
- co.nilin.opex
- logging-handler
- ${utility.version}
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-matching-gateway
-
-
-
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/exception/NotAllowedToSubmitOrderException.kt b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/exception/NotAllowedToSubmitOrderException.kt
deleted file mode 100644
index 28cb47ced..000000000
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/exception/NotAllowedToSubmitOrderException.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package co.nilin.opex.app.exception
-
-import java.lang.RuntimeException
-
-class NotAllowedToSubmitOrderException: RuntimeException() {
-}
\ No newline at end of file
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/spi/PairConfigLoader.kt b/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/spi/PairConfigLoader.kt
deleted file mode 100644
index c2108a08b..000000000
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/spi/PairConfigLoader.kt
+++ /dev/null
@@ -1,8 +0,0 @@
-package co.nilin.opex.app.spi
-
-import co.nilin.opex.app.inout.PairFeeConfig
-import co.nilin.opex.matching.core.model.OrderDirection
-
-interface PairConfigLoader {
- suspend fun load(pair: String, direction: OrderDirection, userLevel: String): PairFeeConfig
-}
\ No newline at end of file
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/.gitignore b/MatchingGateway/gateway-port/order-submitter-kafka/.gitignore
deleted file mode 100644
index 7f15adddb..000000000
--- a/MatchingGateway/gateway-port/order-submitter-kafka/.gitignore
+++ /dev/null
@@ -1,77 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-
-
-
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/pom.xml b/MatchingGateway/gateway-port/order-submitter-kafka/pom.xml
deleted file mode 100644
index 0e915bdbb..000000000
--- a/MatchingGateway/gateway-port/order-submitter-kafka/pom.xml
+++ /dev/null
@@ -1,113 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- gateway-order-submitter-kafka
- 1.0-SNAPSHOT
- gateway-order-submitter-kafka
- Matching gateway kafka order submitter of Opex
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitResult.kt b/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitResult.kt
deleted file mode 100644
index 35d4430ec..000000000
--- a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitResult.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package co.nilin.opex.port.order.kafka.inout
-
-class OrderSubmitResult(offset: Long?)
\ No newline at end of file
diff --git a/MatchingGateway/pom.xml b/MatchingGateway/pom.xml
deleted file mode 100644
index c50dd1464..000000000
--- a/MatchingGateway/pom.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- matching-gateway-root
- 1.0-SNAPSHOT
- matching-gateway-root
- pom
- Matching Api Gateway root of Opex
-
- gateway-app
- gateway-port/order-submitter-kafka
-
-
diff --git a/README.md b/README.md
index 4d21eed12..f40dc44c6 100644
--- a/README.md
+++ b/README.md
@@ -19,7 +19,8 @@
- **OPEX** Core is a Kotlin based cryptocurrency exchange and matching engine from the OPEX project. This extendable and microservice architectured project work as a vanilla core for running cryptocurrency exchanges.
+**OPEX** Core is a Kotlin based cryptocurrency exchange and matching engine from the OPEX project. This extendable and
+microservice architectured project work as a vanilla core for running cryptocurrency exchanges.
## Contents
@@ -31,15 +32,17 @@
- [License](#license)
- [Additional Info](#info)
+## Install
-## Install
You need to have [Maven](https://maven.apache.org) and [Docker](https://www.docker.com) installed.
1. Clone this repository or [download the latest zip](https://github.com/opexdev/Back-end).
2. Build each module using `mvn clean install` command.
3. Change directory to `./Deployment` and build docker containers using `docker-compose build`.
-4. In `./Deployment` directory, run docker containers which you've built in previous step by using `docker-compose up -d` and wait for modules to be up and running.
-5. You can make sure each module is running correctly by typing `http://localhost:8500` to your browser and check module health.
+4. In `./Deployment` directory, run docker containers which you've built in previous step by
+ using `docker-compose up -d` and wait for modules to be up and running.
+5. You can make sure each module is running correctly by typing `http://localhost:8500` to your browser and check module
+ health.
6. You can also make sure middlewares (kafka, consule, etc) are running correctly by using `docker ps`.
## Architecture Overview
@@ -48,13 +51,13 @@ You need to have [Maven](https://maven.apache.org) and [Docker](https://www.dock
-## Demo
+## Demo
Check out Opex [demo][WebDemo].
[WebDemo]: https://opex.dev/demo
-## Documentation
+## Documentation
The full documentation for Opex can be found on our [website][docs].
@@ -62,7 +65,8 @@ The full documentation for Opex can be found on our [website][docs].
## How to Contribute
- We want to make contributing to this project as easy and transparent as possible, and we are grateful to the developer for contributing bug fixes and improvements. Read our contribution docutmentation [here][contribute].
+We want to make contributing to this project as easy and transparent as possible, and we are grateful to the developer
+for contributing bug fixes and improvements. Read our contribution docutmentation [here][contribute].
[contribute]: https://opex.dev
diff --git a/Storage/.gitignore b/Storage/.gitignore
deleted file mode 100644
index 797b705f6..000000000
--- a/Storage/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.iml
\ No newline at end of file
diff --git a/Storage/pom.xml b/Storage/pom.xml
deleted file mode 100644
index fdb55344e..000000000
--- a/Storage/pom.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex.storage
- storage
- 1.0-SNAPSHOT
- Storage
- pom
- File storage service of Opex
-
- storage-app
-
-
diff --git a/Storage/storage-app/.gitignore b/Storage/storage-app/.gitignore
deleted file mode 100644
index e7c460346..000000000
--- a/Storage/storage-app/.gitignore
+++ /dev/null
@@ -1,80 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-.mvn/
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-.DS_Store
-
-
-
-
diff --git a/Storage/storage-app/pom.xml b/Storage/storage-app/pom.xml
deleted file mode 100644
index 94e59b2bb..000000000
--- a/Storage/storage-app/pom.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex.storage.app
- storage-app
- 1.0-SNAPSHOT
-
-
- 1.8
- 1.4.31
- ${project.version}
- ${project.version}
- 2020.0.2
-
-
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- co.nilin.opex
- error-handler
- ${utility.version}
-
-
- co.nilin.opex
- logging-handler
- ${utility.version}
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-all
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-oauth2-resource-server
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/kotlin
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/kotlin
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
-
-
diff --git a/UserManagement/.gitignore b/UserManagement/.gitignore
deleted file mode 100644
index 807d27eef..000000000
--- a/UserManagement/.gitignore
+++ /dev/null
@@ -1,76 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-.DS_Store
-
diff --git a/UserManagement/keycloak-gateway/.gitignore b/UserManagement/keycloak-gateway/.gitignore
deleted file mode 100644
index 90ffaa853..000000000
--- a/UserManagement/keycloak-gateway/.gitignore
+++ /dev/null
@@ -1,73 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio, WebStorm and Rider
-# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
-
-# User-specific stuff
-.idea/**/workspace.xml
-.idea/**/tasks.xml
-.idea/**/usage.statistics.xml
-.idea/**/dictionaries
-.idea/**/shelf
-
-# Generated files
-.idea/**/contentModel.xml
-
-# Sensitive or high-churn files
-.idea/**/dataSources/
-.idea/**/dataSources.ids
-.idea/**/dataSources.local.xml
-.idea/**/sqlDataSources.xml
-.idea/**/dynamic.xml
-.idea/**/uiDesigner.xml
-.idea/**/dbnavigator.xml
-
-# Gradle
-.idea/**/gradle.xml
-.idea/**/libraries
-
-# Gradle and Maven with auto-import
-# When using Gradle or Maven with auto-import, you should exclude module files,
-# since they will be recreated, and may cause churn. Uncomment if using
-# auto-import.
-.idea/artifacts
-.idea/compiler.xml
-.idea/jarRepositories.xml
-.idea/modules.xml
-.idea/*.iml
-.idea/modules
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
diff --git a/UserManagement/keycloak-gateway/pom.xml b/UserManagement/keycloak-gateway/pom.xml
deleted file mode 100644
index 98a1ef20f..000000000
--- a/UserManagement/keycloak-gateway/pom.xml
+++ /dev/null
@@ -1,239 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- keycloak-gateway
- 1.0-SNAPSHOT
- keycloak-gateway
- Keycloak gateway app Opex
-
-
- 13
- 13
- 13
- 1.4.31
- 12.0.4
- 3.13.2.Final
- 11.0.10.Final
- 2020.0.2
-
-
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- org.springframework.boot
- spring-boot-configuration-processor
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-web
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-all
-
-
-
-
-
- org.springframework.boot
- spring-boot-starter-data-jpa
-
-
- org.jboss.resteasy
- resteasy-jackson2-provider
- ${keycloak.resteasy.version}
-
-
- org.jboss.resteasy
- resteasy-client
- ${keycloak.resteasy.version}
-
-
- org.keycloak
- keycloak-dependencies-server-all
- ${keycloak.version}
- pom
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- org.postgresql
- postgresql
- runtime
-
-
- com.zaxxer
- HikariCP
-
-
- org.springframework.kafka
- spring-kafka
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-auth
-
-
diff --git a/UserManagement/keycloak-gateway/src/main/resources/opex-master-realm.json b/UserManagement/keycloak-gateway/src/main/resources/opex-master-realm.json
deleted file mode 100644
index 7ee034e06..000000000
--- a/UserManagement/keycloak-gateway/src/main/resources/opex-master-realm.json
+++ /dev/null
@@ -1,47 +0,0 @@
-{
- "id" : "master",
- "realm" : "master",
- "notBefore" : 0,
- "revokeRefreshToken" : false,
- "refreshTokenMaxReuse" : 0,
- "accessTokenLifespan" : 300,
- "accessTokenLifespanForImplicitFlow" : 900,
- "ssoSessionIdleTimeout" : 1800,
- "ssoSessionMaxLifespan" : 36000,
- "ssoSessionIdleTimeoutRememberMe" : 0,
- "ssoSessionMaxLifespanRememberMe" : 0,
- "offlineSessionIdleTimeout" : 2592000,
- "offlineSessionMaxLifespanEnabled" : false,
- "offlineSessionMaxLifespan" : 5184000,
- "accessCodeLifespan" : 60,
- "accessCodeLifespanUserAction" : 300,
- "accessCodeLifespanLogin" : 1800,
- "actionTokenGeneratedByAdminLifespan" : 43200,
- "actionTokenGeneratedByUserLifespan" : 300,
- "enabled" : true,
- "sslRequired" : "none",
- "registrationAllowed" : true,
- "registrationEmailAsUsername" : false,
- "rememberMe" : false,
- "verifyEmail" : false,
- "loginWithEmailAllowed" : true,
- "duplicateEmailsAllowed" : false,
- "resetPasswordAllowed" : true,
- "editUsernameAllowed" : false,
- "bruteForceProtected" : true,
- "permanentLockout" : false,
- "maxFailureWaitSeconds" : 900,
- "minimumQuickLoginWaitSeconds" : 60,
- "waitIncrementSeconds" : 60,
- "quickLoginCheckMilliSeconds" : 1000,
- "maxDeltaTimeSeconds" : 43200,
- "failureFactor" : 30,
- "smtpServer" : {
- "host": "smtp.elasticemail.com",
- "port": 2525,
- "from": "for.demo.purpose.only@opex.dev",
- "auth": true,
- "user": "for.demo.purpose.only@opex.dev",
- "password": "642467973026C6F093FB1E39C4BFC0D15042"
- }
-}
\ No newline at end of file
diff --git a/UserManagement/pom.xml b/UserManagement/pom.xml
deleted file mode 100644
index 8749a2ce1..000000000
--- a/UserManagement/pom.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- user-management-root
- 1.0-SNAPSHOT
- user-management-root
- pom
- User Management root of Opex
-
- keycloak-gateway
-
-
diff --git a/Utility/.gitignore b/Utility/.gitignore
deleted file mode 100644
index d6953c444..000000000
--- a/Utility/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-*.iml
-.idea
-/.idea/
diff --git a/Utility/error-handler/.gitignore b/Utility/error-handler/.gitignore
deleted file mode 100644
index 549e00a2a..000000000
--- a/Utility/error-handler/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/Utility/error-handler/pom.xml b/Utility/error-handler/pom.xml
deleted file mode 100644
index 7004e656e..000000000
--- a/Utility/error-handler/pom.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- error-handler
- 1.0-SNAPSHOT
- error-handler
- REST error handler
-
-
- 1.8
- 1.4.31
-
-
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Utility/interceptors/.gitignore b/Utility/interceptors/.gitignore
deleted file mode 100644
index 549e00a2a..000000000
--- a/Utility/interceptors/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/Utility/interceptors/pom.xml b/Utility/interceptors/pom.xml
deleted file mode 100644
index 7783aa213..000000000
--- a/Utility/interceptors/pom.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- interceptors
- 1.0-SNAPSHOT
- interceptors
- REST interceptors
-
-
- 1.8
- 1.4.31
-
-
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- io.projectreactor.netty
- reactor-netty
- 0.9.12.RELEASE
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/FormDataWorkaroundFilter.java b/Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/FormDataWorkaroundFilter.java
deleted file mode 100644
index a779571f9..000000000
--- a/Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/FormDataWorkaroundFilter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package co.nilin.opex.utility.interceptor;
-
-import co.nilin.opex.utility.interceptor.decorator.*;
-import org.springframework.http.codec.multipart.*;
-import org.springframework.http.server.reactive.*;
-import org.springframework.util.*;
-import org.springframework.web.server.*;
-import reactor.core.publisher.*;
-
-import java.util.*;
-
-public class FormDataWorkaroundFilter implements WebFilter {
-
- @Override
- public Mono filter(ServerWebExchange exchange, WebFilterChain chain) {
- final ServerHttpRequest request = exchange.getRequest();
-
- final MultiValueMap queryParams = new LinkedMultiValueMap<>();
-
- return exchange.getFormData()
- .doOnNext(queryParams::putAll)
- .flatMap( it ->
- exchange.getMultipartData().map(map -> {
- map.forEach((key, value) -> {
- value.forEach(item -> {
- //add each form field parts to query params
- if (item instanceof FormFieldPart) {
- final FormFieldPart formFieldPart = (FormFieldPart) item;
- queryParams.add(key, formFieldPart.value());
- }
- });
-
- });
- return map;
- })
- )
- .doOnNext(it ->
- queryParams.putAll(request.getQueryParams()))
- .flatMap(it ->
- chain.filter(new FormDataServerWebExchangeDecorator(queryParams, exchange))
- );
- }
-
-}
diff --git a/Utility/logging-handler/.gitignore b/Utility/logging-handler/.gitignore
deleted file mode 100644
index 549e00a2a..000000000
--- a/Utility/logging-handler/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/Utility/logging-handler/pom.xml b/Utility/logging-handler/pom.xml
deleted file mode 100644
index 3c6138820..000000000
--- a/Utility/logging-handler/pom.xml
+++ /dev/null
@@ -1,90 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- logging-handler
- 1.0-SNAPSHOT
- logging-handler
- REST logging handler
-
-
- 1.8
- 1.4.31
-
-
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- io.projectreactor.netty
- reactor-netty
- 0.9.12.RELEASE
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Utility/pom.xml b/Utility/pom.xml
deleted file mode 100644
index 2a7f7fc15..000000000
--- a/Utility/pom.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- utility-root
- 1.0-SNAPSHOT
- utility-root
- pom
- Utility root of Opex
-
-
- error-handler
- logging-handler
- interceptors
-
-
\ No newline at end of file
diff --git a/Utility/utility-root.ipr b/Utility/utility-root.ipr
deleted file mode 100644
index eae68a1a1..000000000
--- a/Utility/utility-root.ipr
+++ /dev/null
@@ -1,108 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Utility/utility-root.iws b/Utility/utility-root.iws
deleted file mode 100644
index 03c854e98..000000000
--- a/Utility/utility-root.iws
+++ /dev/null
@@ -1,418 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Wallet/.gitignore b/Wallet/.gitignore
deleted file mode 100644
index 785786ed7..000000000
--- a/Wallet/.gitignore
+++ /dev/null
@@ -1,47 +0,0 @@
-# Created by .ignore support plugin (hsz.mobi)
-### Kotlin template
-# Compiled class file
-*.class
-
-# Log file
-*.log
-
-# BlueJ files
-*.ctxt
-
-# Mobile Tools for Java (J2ME)
-.mtj.tmp/
-
-# Package Files #
-*.jar
-*.war
-*.nar
-*.ear
-*.zip
-*.tar.gz
-*.rar
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-
-### JetBrains template
-.idea/**
-.idea
-.idea/
-*.iml
-*.ipr
-
-# File-based project format
-*.iws
-
-# IntelliJ
-out/
-
-target/
-
-
-
-
-!/.idea/
-
-.DS_Store
diff --git a/Wallet/pom.xml b/Wallet/pom.xml
deleted file mode 100644
index cef5678c4..000000000
--- a/Wallet/pom.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- wallets
- 1.0-SNAPSHOT
- wallets
- pom
- Wallet managment root of Opex
-
-
- wallet-core
- wallet-app
- wallet-ports/wallet-persister-postgres
- wallet-ports/wallet-eventlistener-kafka
-
-
diff --git a/Wallet/wallet-app/.gitignore b/Wallet/wallet-app/.gitignore
deleted file mode 100644
index 0d6c2228e..000000000
--- a/Wallet/wallet-app/.gitignore
+++ /dev/null
@@ -1,35 +0,0 @@
-HELP.md
-target/
-.mvn/
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-
-.DS_Store
diff --git a/Wallet/wallet-app/pom.xml b/Wallet/wallet-app/pom.xml
deleted file mode 100644
index 82f80de08..000000000
--- a/Wallet/wallet-app/pom.xml
+++ /dev/null
@@ -1,257 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- wallet-app
- 1.0-SNAPSHOT
- wallet-app
- Wallet managment app of Opex
-
-
- 1.8
- 1.4.31
- 2020.0.2
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
-
- org.jetbrains.kotlin
- kotlin-stdlib
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- io.projectreactor
- reactor-test
- test
-
-
- co.nilin.opex
- wallet-core
- ${wallet.version}
-
-
- co.nilin.opex
- wallet-persister-postgres
- ${wallet.version}
-
-
- co.nilin.opex
- wallet-eventlistener-kafka
- ${wallet.version}
-
-
- co.nilin.opex
- error-handler
- ${utility.version}
-
-
- co.nilin.opex
- logging-handler
- ${utility.version}
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-all
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
- org.springframework.boot
- spring-boot-starter-security
-
-
- org.springframework.boot
- spring-boot-starter-oauth2-resource-server
-
-
- org.bouncycastle
- bcprov-jdk15on
- 1.60
-
-
- io.springfox
- springfox-boot-starter
- 3.0.0
-
-
- co.nilin.opex
- interceptors
- ${utility.version}
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-wallet
-
-
-
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt b/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt
deleted file mode 100644
index f0207afdd..000000000
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt
+++ /dev/null
@@ -1,32 +0,0 @@
-package co.nilin.opex.wallet.app
-
-import co.nilin.opex.utility.error.EnableOpexErrorHandler
-import org.springframework.beans.factory.annotation.Value
-import org.springframework.boot.autoconfigure.SpringBootApplication
-import org.springframework.boot.runApplication
-import org.springframework.context.annotation.Bean
-import org.springframework.context.annotation.ComponentScan
-import org.springframework.security.core.annotation.AuthenticationPrincipal
-import springfox.documentation.builders.ApiInfoBuilder
-import springfox.documentation.builders.OAuthBuilder
-import springfox.documentation.builders.PathSelectors.regex
-import springfox.documentation.builders.RequestParameterBuilder
-import springfox.documentation.service.*
-import springfox.documentation.spi.DocumentationType
-import springfox.documentation.spi.service.contexts.SecurityContext
-import springfox.documentation.spring.web.plugins.Docket
-import springfox.documentation.swagger.web.SecurityConfiguration
-import springfox.documentation.swagger.web.SecurityConfigurationBuilder
-import springfox.documentation.swagger2.annotations.EnableSwagger2
-import java.security.Principal
-import java.util.Collections.singletonList
-
-@SpringBootApplication
-@ComponentScan("co.nilin.opex")
-@EnableSwagger2
-@EnableOpexErrorHandler
-class WalletApp
-
-fun main(args: Array) {
- runApplication(*args)
-}
diff --git a/Wallet/wallet-core/.gitignore b/Wallet/wallet-core/.gitignore
deleted file mode 100644
index 8e22e6c21..000000000
--- a/Wallet/wallet-core/.gitignore
+++ /dev/null
@@ -1,35 +0,0 @@
-HELP.md
-target/
-.mvn
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-
-.DS_Store
diff --git a/Wallet/wallet-core/pom.xml b/Wallet/wallet-core/pom.xml
deleted file mode 100644
index a4d080f28..000000000
--- a/Wallet/wallet-core/pom.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- wallet-core
- 1.0-SNAPSHOT
- wallet-core
- Wallet managment of Opex
-
-
- 1.8
- 1.4.31
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
-
- org.springframework
- spring-tx
- provided
-
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/CurrencyNotMatchedException.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/CurrencyNotMatchedException.kt
deleted file mode 100644
index 80cee2fb6..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/CurrencyNotMatchedException.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package co.nilin.opex.wallet.core.exc
-
-class CurrencyNotMatchedException: Exception()
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/DepositLimitExceededException.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/DepositLimitExceededException.kt
deleted file mode 100644
index 382eb31ed..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/DepositLimitExceededException.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package co.nilin.opex.wallet.core.exc
-
-class DepositLimitExceededException: Exception()
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/NotEnoughBalanceException.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/NotEnoughBalanceException.kt
deleted file mode 100644
index 9dccc85ac..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/NotEnoughBalanceException.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package co.nilin.opex.wallet.core.exc
-
-class NotEnoughBalanceException: Exception()
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/WithdrawLimitExceededException.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/WithdrawLimitExceededException.kt
deleted file mode 100644
index ab8fc7389..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/WithdrawLimitExceededException.kt
+++ /dev/null
@@ -1,3 +0,0 @@
-package co.nilin.opex.wallet.core.exc
-
-class WithdrawLimitExceededException: Exception()
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferCommand.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferCommand.kt
deleted file mode 100644
index 5752c1a52..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferCommand.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package co.nilin.opex.wallet.core.inout
-
-import co.nilin.opex.wallet.core.model.Amount
-import co.nilin.opex.wallet.core.model.Wallet
-
-data class TransferCommand(val sourceWallet: Wallet, val destWallet: Wallet, val amount: Amount, val description: String?, val transferRef: String?, val additionalData: Map?)
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawCommand.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawCommand.kt
deleted file mode 100644
index 75cdeac91..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawCommand.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package co.nilin.opex.wallet.core.inout
-
-import java.math.BigDecimal
-
-class WithdrawCommand(
- val uuid: String
- , val symbol: String
- , val amount: BigDecimal
- , val description: String?
- , val transferRef: String?
- , val destCurrency: String
- , val destAddress: String
- , val destNetwork: String
- , val destNote: String?
- , val acceptedFee: BigDecimal
-)
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResult.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResult.kt
deleted file mode 100644
index db93db417..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResult.kt
+++ /dev/null
@@ -1,4 +0,0 @@
-package co.nilin.opex.wallet.core.inout
-
-class WithdrawResult(val withdrawId: Long, val status: String){
-}
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Transaction.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Transaction.kt
deleted file mode 100644
index b62b4be96..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Transaction.kt
+++ /dev/null
@@ -1,6 +0,0 @@
-package co.nilin.opex.wallet.core.model
-
-import java.math.BigDecimal
-import java.time.LocalDateTime
-
-data class Transaction(val sourceWallet: Wallet, val destWallet: Wallet, val sourceAmount: BigDecimal, val destAmount: BigDecimal, val description: String?, val transferRef: String?, val transactionDate: LocalDateTime)
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletListener.kt b/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletListener.kt
deleted file mode 100644
index 927cd3144..000000000
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletListener.kt
+++ /dev/null
@@ -1,10 +0,0 @@
-package co.nilin.opex.wallet.core.spi
-
-import co.nilin.opex.wallet.core.model.Amount
-import co.nilin.opex.wallet.core.model.Wallet
-import java.math.BigDecimal
-
-interface WalletListener {
- suspend fun onDeposit(me: Wallet, sourceWallet: Wallet, amount: Amount, finalAmount: BigDecimal, transaction: String, additionalData: Map?)
- suspend fun onWithdraw(me: Wallet, destWallet: Wallet, amount: Amount, transaction: String, additionalData: Map?)
-}
\ No newline at end of file
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/.gitignore b/Wallet/wallet-ports/wallet-eventlistener-kafka/.gitignore
deleted file mode 100644
index f4e066ca5..000000000
--- a/Wallet/wallet-ports/wallet-eventlistener-kafka/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-!/.mvn/
-
-.DS_Store
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/pom.xml b/Wallet/wallet-ports/wallet-eventlistener-kafka/pom.xml
deleted file mode 100644
index 7b8cba33b..000000000
--- a/Wallet/wallet-ports/wallet-eventlistener-kafka/pom.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- wallet-eventlistener-kafka
- 1.0-SNAPSHOT
- wallet-eventlistener-kafka
- Wallet kafka listener of Opex
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/consumer/UserCreatedKafkaListener.kt b/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/consumer/UserCreatedKafkaListener.kt
deleted file mode 100644
index 4fa267011..000000000
--- a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/consumer/UserCreatedKafkaListener.kt
+++ /dev/null
@@ -1,29 +0,0 @@
-package co.nilin.opex.port.wallet.kafka.consumer
-
-
-import co.nilin.opex.auth.gateway.model.UserCreatedEvent
-import co.nilin.opex.port.wallet.kafka.spi.UserCreatedEventListener
-import org.apache.kafka.clients.consumer.ConsumerRecord
-import org.springframework.kafka.listener.MessageListener
-import org.springframework.stereotype.Component
-
-@Component
-class UserCreatedKafkaListener: MessageListener {
- val eventListeners = arrayListOf()
-
- override fun onMessage(data: ConsumerRecord) {
- eventListeners.forEach{
- tl -> tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
- }
- }
-
- fun addEventListener(tl: UserCreatedEventListener){
- eventListeners.add(tl)
- }
-
- fun removeEventListener(tl: UserCreatedEventListener){
- eventListeners.removeIf {
- item -> item.id() == tl.id()
- }
- }
-}
\ No newline at end of file
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/.gitignore b/Wallet/wallet-ports/wallet-persister-postgres/.gitignore
deleted file mode 100644
index f4e066ca5..000000000
--- a/Wallet/wallet-ports/wallet-persister-postgres/.gitignore
+++ /dev/null
@@ -1,36 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-!/.mvn/
-
-.DS_Store
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/pom.xml b/Wallet/wallet-ports/wallet-persister-postgres/pom.xml
deleted file mode 100644
index b58ebde0f..000000000
--- a/Wallet/wallet-ports/wallet-persister-postgres/pom.xml
+++ /dev/null
@@ -1,110 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- wallet-persister-postgres
- 1.0-SNAPSHOT
- wallet-persister-postgres
- Persist items of Opex wallet on Postgres
-
-
- 1.8
- 1.4.31
- ${version}
-
-
-
-
- co.nilin.opex
- wallet-core
- ${wallet.version}
- provided
-
-
- org.springframework.boot
- spring-boot-starter-data-r2dbc
-
-
- io.r2dbc
- r2dbc-postgresql
- runtime
-
-
- org.postgresql
- postgresql
- runtime
-
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- com.fasterxml.jackson.core
- jackson-annotations
- provided
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
-
- spring-milestones
- Spring Milestones
- https://repo.spring.io/milestone
-
-
-
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/CurrencyRepository.kt b/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/CurrencyRepository.kt
deleted file mode 100644
index f541673c5..000000000
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/CurrencyRepository.kt
+++ /dev/null
@@ -1,16 +0,0 @@
-package co.nilin.opex.port.wallet.postgres.dao
-
-import co.nilin.opex.port.wallet.postgres.model.CurrencyModel
-import co.nilin.opex.port.wallet.postgres.model.CurrencyRateModel
-import kotlinx.coroutines.flow.Flow
-import org.springframework.data.domain.Pageable
-import org.springframework.data.r2dbc.repository.Query
-import org.springframework.data.repository.query.Param
-import org.springframework.data.repository.reactive.ReactiveCrudRepository
-import org.springframework.stereotype.Repository
-import reactor.core.publisher.Mono
-
-@Repository
-interface CurrencyRepository: ReactiveCrudRepository {
-
-}
\ No newline at end of file
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletConfigRepository.kt b/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletConfigRepository.kt
deleted file mode 100644
index 91bd67cc1..000000000
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletConfigRepository.kt
+++ /dev/null
@@ -1,12 +0,0 @@
-package co.nilin.opex.port.wallet.postgres.dao
-
-import co.nilin.opex.port.wallet.postgres.model.WalletConfigModel
-import co.nilin.opex.port.wallet.postgres.model.WalletModel
-import org.springframework.data.r2dbc.repository.Query
-import org.springframework.data.repository.query.Param
-import org.springframework.data.repository.reactive.ReactiveCrudRepository
-import org.springframework.stereotype.Repository
-import reactor.core.publisher.Mono
-
-@Repository
-interface WalletConfigRepository : ReactiveCrudRepository
\ No newline at end of file
diff --git a/Websocket/pom.xml b/Websocket/pom.xml
deleted file mode 100644
index e619d6c40..000000000
--- a/Websocket/pom.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-
-
- 4.0.0
- co.nilin.opex
- websocket-root
- 1.0-SNAPSHOT
- websocket-root
- pom
- Websocket root module
-
- websocket-app
- websocket-core
- websocket-ports/websocket-eventlistener-kafka
- websocket-ports/websocket-persister-postgres
-
-
\ No newline at end of file
diff --git a/Websocket/websocket-app/.gitignore b/Websocket/websocket-app/.gitignore
deleted file mode 100644
index 549e00a2a..000000000
--- a/Websocket/websocket-app/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/Websocket/websocket-app/pom.xml b/Websocket/websocket-app/pom.xml
deleted file mode 100644
index c0e773b5e..000000000
--- a/Websocket/websocket-app/pom.xml
+++ /dev/null
@@ -1,230 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- websocket-app
- 1.0-SNAPSHOT
- websocket-app
- Websocket app
-
-
- 1.8
- 1.4.31
- 2020.0.2
- ${version}
- ${version}
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
-
- org.springframework.boot
- spring-boot-starter-oauth2-resource-server
-
-
-
- org.springframework.boot
- spring-boot-starter-actuator
-
-
-
- org.springframework.cloud
- spring-cloud-starter-consul-all
-
-
-
- org.springframework.boot
- spring-boot-starter-websocket
-
-
-
- org.springframework.security
- spring-security-messaging
-
-
-
- com.fasterxml.jackson.module
- jackson-module-kotlin
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
-
-
- co.nilin.opex
- websocket-core
- ${websocket.version}
-
-
- co.nilin.opex
- websocket-eventlistener-kafka
- ${websocket.version}
-
-
- co.nilin.opex
- websocket-persister-postgres
- ${websocket.version}
-
-
-
- io.projectreactor
- reactor-test
- test
-
-
-
-
-
-
- org.springframework.cloud
- spring-cloud-dependencies
- ${spring-cloud.version}
- pom
- import
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.springframework.boot
- spring-boot-maven-plugin
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.18
-
-
- ${skip.unit.tests}
-
-
- **/*IntegrationTest.java
-
-
-
-
- org.codehaus.mojo
- build-helper-maven-plugin
-
-
- add-test-source
- generate-test-sources
-
- add-test-source
-
-
-
- src/test/java
-
-
-
-
- compile
-
- add-source
-
-
-
- src/main/java
-
-
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
- ${kotlin.version}
-
-
- compile
- compile
-
- compile
-
-
-
- test-compile
- test-compile
-
- test-compile
-
-
-
-
-
- -Xjsr305=strict
-
-
- spring
-
- 1.8
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
-
- compile
- compile
-
- compile
-
-
-
- testCompile
- test-compile
-
- testCompile
-
-
-
-
-
- opex-websocket
-
-
-
diff --git a/Websocket/websocket-core/.gitignore b/Websocket/websocket-core/.gitignore
deleted file mode 100644
index f3a8317d6..000000000
--- a/Websocket/websocket-core/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-*.iml
-target/
-.mvn/
-.idea/
\ No newline at end of file
diff --git a/Websocket/websocket-core/pom.xml b/Websocket/websocket-core/pom.xml
deleted file mode 100644
index fe5f9c8ee..000000000
--- a/Websocket/websocket-core/pom.xml
+++ /dev/null
@@ -1,104 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- websocket-core
- 1.0-SNAPSHOT
- websocket-core
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
- provided
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
- org.springframework
- spring-tx
- provided
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Websocket/websocket-ports/.gitignore b/Websocket/websocket-ports/.gitignore
deleted file mode 100644
index 549e00a2a..000000000
--- a/Websocket/websocket-ports/.gitignore
+++ /dev/null
@@ -1,33 +0,0 @@
-HELP.md
-target/
-!.mvn/wrapper/maven-wrapper.jar
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
diff --git a/Websocket/websocket-ports/websocket-eventlistener-kafka/.gitignore b/Websocket/websocket-ports/websocket-eventlistener-kafka/.gitignore
deleted file mode 100644
index bb9840a17..000000000
--- a/Websocket/websocket-ports/websocket-eventlistener-kafka/.gitignore
+++ /dev/null
@@ -1,34 +0,0 @@
-HELP.md
-target/
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-.mvn/
-
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-
-
-### VS Code ###
-.vscode/
-
-.DS_Store
diff --git a/Websocket/websocket-ports/websocket-eventlistener-kafka/pom.xml b/Websocket/websocket-ports/websocket-eventlistener-kafka/pom.xml
deleted file mode 100644
index 2a2d9f3c4..000000000
--- a/Websocket/websocket-ports/websocket-eventlistener-kafka/pom.xml
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
- 4.0.0
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
-
- co.nilin.opex
- websocket-eventlistener-kafka
- 1.0-SNAPSHOT
- websocket-eventlistener-kafka
-
-
- 1.8
- 1.4.31
- ${version}
- ${version}
- ${version}
-
-
-
-
- org.springframework.boot
- spring-boot-starter
-
-
- org.springframework.boot
- spring-boot-starter-webflux
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
-
-
- co.nilin.opex
- accountant-core
- ${accountant.version}
- provided
-
-
- co.nilin.opex
- websocket-core
- ${websocket.version}
- provided
-
-
- org.springframework.kafka
- spring-kafka
-
-
- io.projectreactor.kotlin
- reactor-kotlin-extensions
-
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-reactor
-
-
- org.jetbrains.kotlinx
- kotlinx-coroutines-core
-
-
- org.springframework.kafka
- spring-kafka-test
- test
-
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- org.junit.vintage
- junit-vintage-engine
-
-
-
-
-
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
-
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/.gitignore b/Websocket/websocket-ports/websocket-persister-postgres/.gitignore
deleted file mode 100644
index de5a9214d..000000000
--- a/Websocket/websocket-ports/websocket-persister-postgres/.gitignore
+++ /dev/null
@@ -1,34 +0,0 @@
-HELP.md
-target/
-!**/src/main/**/target/
-!**/src/test/**/target/
-
-### STS ###
-.apt_generated
-.classpath
-.factorypath
-.project
-.settings
-.springBeans
-.sts4-cache
-
-### IntelliJ IDEA ###
-.idea
-*.iws
-*.iml
-*.ipr
-.mvn/
-### NetBeans ###
-/nbproject/private/
-/nbbuild/
-/dist/
-/nbdist/
-/.nb-gradle/
-build/
-!**/src/main/**/build/
-!**/src/test/**/build/
-
-### VS Code ###
-.vscode/
-
-.DS_Store
diff --git a/Websocket/websocket-root.iml b/Websocket/websocket-root.iml
deleted file mode 100644
index 4fd5057cb..000000000
--- a/Websocket/websocket-root.iml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Accountant/accountant-app/Dockerfile b/accountant/accountant-app/Dockerfile
similarity index 100%
rename from Accountant/accountant-app/Dockerfile
rename to accountant/accountant-app/Dockerfile
diff --git a/accountant/accountant-app/pom.xml b/accountant/accountant-app/pom.xml
new file mode 100644
index 000000000..aeb891bef
--- /dev/null
+++ b/accountant/accountant-app/pom.xml
@@ -0,0 +1,68 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.accountant
+ accountant
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.accountant.app
+ accountant-app
+ accountant-app
+ Accountant app Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ co.nilin.opex.accountant.ports.kafka.listener
+ accountant-eventlistener-kafka
+
+
+ co.nilin.opex.accountant.ports.kafka.submitter
+ accountant-submitter-kafka
+
+
+ co.nilin.opex.accountant.ports.postgres
+ accountant-persister-postgres
+
+
+ co.nilin.opex.accountant.ports.walletproxy
+ accountant-wallet-proxy
+
+
+ co.nilin.opex.utility.error
+ error-handler
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/AccountantApp.kt b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/AccountantApp.kt
similarity index 91%
rename from Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/AccountantApp.kt
rename to accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/AccountantApp.kt
index 8b5c89f25..428bc4c13 100644
--- a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/AccountantApp.kt
+++ b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/AccountantApp.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app
+package co.nilin.opex.accountant.app
import co.nilin.opex.utility.error.EnableOpexErrorHandler
import org.springframework.boot.autoconfigure.SpringBootApplication
diff --git a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/config/AppConfig.kt
similarity index 70%
rename from Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt
rename to accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/config/AppConfig.kt
index 1ddca4bdd..cdd6f954c 100644
--- a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt
+++ b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/config/AppConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.accountant.app.config
import co.nilin.opex.accountant.core.api.FinancialActionJobManager
import co.nilin.opex.accountant.core.api.OrderManager
@@ -7,16 +7,16 @@ import co.nilin.opex.accountant.core.service.FinancialActionJobManagerImpl
import co.nilin.opex.accountant.core.service.OrderManagerImpl
import co.nilin.opex.accountant.core.service.TradeManagerImpl
import co.nilin.opex.accountant.core.spi.*
-import co.nilin.opex.matching.core.eventh.events.*
-import co.nilin.opex.port.accountant.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.accountant.kafka.spi.OrderSubmitRequestListener
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
-import co.nilin.opex.port.accountant.kafka.consumer.EventKafkaListener
-import co.nilin.opex.port.accountant.kafka.consumer.TempEventKafkaListener
-import co.nilin.opex.port.accountant.kafka.consumer.TradeKafkaListener
-import co.nilin.opex.port.accountant.kafka.spi.EventListener
-import co.nilin.opex.port.accountant.kafka.spi.TempEventListener
-import co.nilin.opex.port.accountant.kafka.spi.TradeListener
+import co.nilin.opex.matching.engine.core.eventh.events.*
+import co.nilin.opex.accountant.ports.kafka.listener.consumer.EventKafkaListener
+import co.nilin.opex.accountant.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.accountant.ports.kafka.listener.consumer.TempEventKafkaListener
+import co.nilin.opex.accountant.ports.kafka.listener.consumer.TradeKafkaListener
+import co.nilin.opex.accountant.ports.kafka.listener.spi.EventListener
+import co.nilin.opex.accountant.ports.kafka.listener.spi.OrderSubmitRequestListener
+import co.nilin.opex.accountant.ports.kafka.listener.spi.TempEventListener
+import co.nilin.opex.accountant.ports.kafka.listener.spi.TradeListener
+import co.nilin.opex.accountant.ports.kafka.listener.inout.OrderSubmitRequest
import kotlinx.coroutines.runBlocking
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
@@ -43,47 +43,47 @@ class AppConfig {
@Bean
fun orderManager(
- pairConfigLoader: PairConfigLoader,
- financialActionPersister: FinancialActionPersister,
- financeActionLoader: FinancialActionLoader,
- orderPersister: OrderPersister,
- tempEventPersister: TempEventPersister,
- tempEventRepublisher: TempEventRepublisher,
- richOrderPublisher: RichOrderPublisher
+ pairConfigLoader: PairConfigLoader,
+ financialActionPersister: FinancialActionPersister,
+ financeActionLoader: FinancialActionLoader,
+ orderPersister: OrderPersister,
+ tempEventPersister: TempEventPersister,
+ tempEventRepublisher: TempEventRepublisher,
+ richOrderPublisher: RichOrderPublisher
): OrderManager {
return OrderManagerImpl(
- pairConfigLoader,
- financialActionPersister,
- financeActionLoader,
- orderPersister,
- tempEventPersister,
- tempEventRepublisher,
- richOrderPublisher
+ pairConfigLoader,
+ financialActionPersister,
+ financeActionLoader,
+ orderPersister,
+ tempEventPersister,
+ tempEventRepublisher,
+ richOrderPublisher
)
}
@Bean
fun tradeManager(
- pairStaticRateLoader: PairStaticRateLoader,
- financeActionPersister: FinancialActionPersister,
- financeActionLoader: FinancialActionLoader,
- orderPersister: OrderPersister,
- tempEventPersister: TempEventPersister,
- richTradePublisher: RichTradePublisher,
- walletProxy: WalletProxy,
- @Value("\${app.coin}") platformCoin: String,
- @Value("\${app.address}") platformAddress: String
+ pairStaticRateLoader: PairStaticRateLoader,
+ financeActionPersister: FinancialActionPersister,
+ financeActionLoader: FinancialActionLoader,
+ orderPersister: OrderPersister,
+ tempEventPersister: TempEventPersister,
+ richTradePublisher: RichTradePublisher,
+ walletProxy: WalletProxy,
+ @Value("\${app.coin}") platformCoin: String,
+ @Value("\${app.address}") platformAddress: String
): TradeManager {
return TradeManagerImpl(
- pairStaticRateLoader,
- financeActionPersister,
- financeActionLoader,
- orderPersister,
- tempEventPersister,
- richTradePublisher,
- walletProxy,
- platformCoin,
- platformAddress
+ pairStaticRateLoader,
+ financeActionPersister,
+ financeActionLoader,
+ orderPersister,
+ tempEventPersister,
+ richTradePublisher,
+ walletProxy,
+ platformCoin,
+ platformAddress
)
}
@@ -151,16 +151,16 @@ class AppConfig {
runBlocking(AppDispatchers.kafkaExecutor) {
orderManager.handleRequestOrder(
SubmitOrderEvent(
- order.ouid,
- order.uuid,
- order.orderId,
- order.pair,
- order.price,
- order.quantity,
- order.quantity,
- order.direction,
- order.matchConstraint,
- order.orderType
+ order.ouid,
+ order.uuid,
+ order.orderId,
+ order.pair,
+ order.price,
+ order.quantity,
+ order.quantity,
+ order.direction,
+ order.matchConstraint,
+ order.orderType
)
)
}
diff --git a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/config/AppDispatchers.kt b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/config/AppDispatchers.kt
similarity index 81%
rename from Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/config/AppDispatchers.kt
rename to accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/config/AppDispatchers.kt
index a94b76fb9..8c20c7ef3 100644
--- a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/config/AppDispatchers.kt
+++ b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/config/AppDispatchers.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.accountant.app.config
import kotlinx.coroutines.asCoroutineDispatcher
import java.util.concurrent.Executors
diff --git a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/controller/AccountantController.kt b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/controller/AccountantController.kt
similarity index 86%
rename from Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/controller/AccountantController.kt
rename to accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/controller/AccountantController.kt
index 7cb4ce65b..3ce8cc282 100644
--- a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/controller/AccountantController.kt
+++ b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/controller/AccountantController.kt
@@ -1,15 +1,14 @@
-package co.nilin.opex.app.controller
+package co.nilin.opex.accountant.app.controller
import co.nilin.opex.accountant.core.model.PairConfig
import co.nilin.opex.accountant.core.model.PairFeeConfig
import co.nilin.opex.accountant.core.spi.FinancialActionLoader
import co.nilin.opex.accountant.core.spi.PairConfigLoader
import co.nilin.opex.accountant.core.spi.WalletProxy
-import co.nilin.opex.matching.core.eventh.events.SubmitOrderEvent
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.eventh.events.SubmitOrderEvent
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import org.springframework.web.bind.annotation.GetMapping
import org.springframework.web.bind.annotation.PathVariable
-import org.springframework.web.bind.annotation.RequestMapping
import org.springframework.web.bind.annotation.RestController
import java.math.BigDecimal
@@ -45,7 +44,7 @@ class AccountantController(
}
@GetMapping("/config/all")
- suspend fun fetchPairConfigs():List{
+ suspend fun fetchPairConfigs(): List {
return pairConfigLoader.loadPairConfigs()
}
diff --git a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/scheduler/FinancialActionsJob.kt b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/scheduler/FinancialActionsJob.kt
similarity index 94%
rename from Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/scheduler/FinancialActionsJob.kt
rename to accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/scheduler/FinancialActionsJob.kt
index c95291fea..b8b1a73db 100644
--- a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/scheduler/FinancialActionsJob.kt
+++ b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/scheduler/FinancialActionsJob.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.scheduler
+package co.nilin.opex.accountant.app.scheduler
import co.nilin.opex.accountant.core.api.FinancialActionJobManager
import kotlinx.coroutines.runBlocking
diff --git a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/scheduler/TempEventsJob.kt b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/scheduler/TempEventsJob.kt
similarity index 96%
rename from Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/scheduler/TempEventsJob.kt
rename to accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/scheduler/TempEventsJob.kt
index e98faedb5..26964877a 100644
--- a/Accountant/accountant-app/src/main/kotlin/co/nilin/opex/app/scheduler/TempEventsJob.kt
+++ b/accountant/accountant-app/src/main/kotlin/co/nilin/opex/accountant/app/scheduler/TempEventsJob.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.scheduler
+package co.nilin.opex.accountant.app.scheduler
import co.nilin.opex.accountant.core.spi.TempEventPersister
import co.nilin.opex.accountant.core.spi.TempEventRepublisher
diff --git a/Accountant/accountant-app/src/main/resources/application-docker.yml b/accountant/accountant-app/src/main/resources/application-docker.yml
similarity index 100%
rename from Accountant/accountant-app/src/main/resources/application-docker.yml
rename to accountant/accountant-app/src/main/resources/application-docker.yml
diff --git a/Accountant/accountant-app/src/main/resources/application.yml b/accountant/accountant-app/src/main/resources/application.yml
similarity index 89%
rename from Accountant/accountant-app/src/main/resources/application.yml
rename to accountant/accountant-app/src/main/resources/application.yml
index aa238fa2f..eb96dcbd9 100644
--- a/Accountant/accountant-app/src/main/resources/application.yml
+++ b/accountant/accountant-app/src/main/resources/application.yml
@@ -7,11 +7,11 @@ spring:
application:
name: opex-accountant
main:
- allow-bean-definition-overriding: false
+ allow-bean-definition-overriding: false
kafka:
bootstrap-servers: 192.168.178.29:9092
consumer:
- group-id: accountant
+ group-id: accountant
redis:
hostname: 127.0.0.1
port: 6379
@@ -32,6 +32,6 @@ spring:
prefer-ip-address: true
app:
coin: nln
- address: 1
+ address: 1
wallet:
url: lb://opex-wallet/
diff --git a/Accountant/accountant-core/mvnw b/accountant/accountant-core/mvnw
similarity index 100%
rename from Accountant/accountant-core/mvnw
rename to accountant/accountant-core/mvnw
diff --git a/Accountant/accountant-core/mvnw.cmd b/accountant/accountant-core/mvnw.cmd
similarity index 100%
rename from Accountant/accountant-core/mvnw.cmd
rename to accountant/accountant-core/mvnw.cmd
diff --git a/accountant/accountant-core/pom.xml b/accountant/accountant-core/pom.xml
new file mode 100644
index 000000000..65ff8aef1
--- /dev/null
+++ b/accountant/accountant-core/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.accountant
+ accountant
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+ accountant-core
+ Accountant logic of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ exchange.core2
+ collections
+ 0.5.1
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ org.springframework
+ spring-tx
+ provided
+
+
+
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/FinancialActionJobManager.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/FinancialActionJobManager.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/FinancialActionJobManager.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/FinancialActionJobManager.kt
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/OrderManager.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/OrderManager.kt
similarity index 91%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/OrderManager.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/OrderManager.kt
index fb947ea8d..dfe2ef748 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/OrderManager.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/OrderManager.kt
@@ -1,7 +1,7 @@
package co.nilin.opex.accountant.core.api
import co.nilin.opex.accountant.core.model.FinancialAction
-import co.nilin.opex.matching.core.eventh.events.*
+import co.nilin.opex.matching.engine.core.eventh.events.*
interface OrderManager {
suspend fun handleRequestOrder(submitOrderEvent: SubmitOrderEvent): List
diff --git a/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/TradeManager.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/TradeManager.kt
new file mode 100644
index 000000000..14153bf7e
--- /dev/null
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/api/TradeManager.kt
@@ -0,0 +1,8 @@
+package co.nilin.opex.accountant.core.api
+
+import co.nilin.opex.accountant.core.model.FinancialAction
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
+
+interface TradeManager {
+ suspend fun handleTrade(trade: TradeEvent): List
+}
\ No newline at end of file
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/OrderStatus.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/OrderStatus.kt
similarity index 81%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/OrderStatus.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/OrderStatus.kt
index b554691b6..b4c0f47dc 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/OrderStatus.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/OrderStatus.kt
@@ -8,7 +8,10 @@ enum class OrderStatus(val code: Int, private val orderOfAppearance: Int) {
FILLED(5, 3), //The order has been completed.
CANCELED(2, 3), //The order has been canceled by the user.
REJECTED(3, 3), //The order was not accepted by the engine and not processed.
- EXPIRED(6, 3); //The order was canceled according to the order type's rules (e.g. LIMIT FOK orders with no fill, LIMIT IOC or MARKET orders that partially fill) or by the exchange, (e.g. orders canceled during liquidation, orders canceled during maintenance)
+ EXPIRED(
+ 6,
+ 3
+ ); //The order was canceled according to the order type's rules (e.g. LIMIT FOK orders with no fill, LIMIT IOC or MARKET orders that partially fill) or by the exchange, (e.g. orders canceled during liquidation, orders canceled during maintenance)
fun comesBefore(status: OrderStatus?): Boolean {
if (status == null)
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichOrder.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichOrder.kt
similarity index 65%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichOrder.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichOrder.kt
index dd5a98893..569d890ca 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichOrder.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichOrder.kt
@@ -1,8 +1,8 @@
package co.nilin.opex.accountant.core.inout
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
import java.math.BigDecimal
class RichOrder() {
@@ -26,24 +26,24 @@ class RichOrder() {
var status: Int = 0;
constructor(
- orderId: Long?,
- pair: String,
- ouid: String,
- uuid: String,
- userLevel: String,
- makerFee: BigDecimal,
- takerFee: BigDecimal,
- leftSideFraction: BigDecimal,
- rightSideFraction: BigDecimal,
- direction: OrderDirection,
- constraint: MatchConstraint,
- type: OrderType,
- price: BigDecimal,
- quantity: BigDecimal,
- quoteQuantity: BigDecimal,
- executedQuantity: BigDecimal,
- accumulativeQuoteQty: BigDecimal,
- status: Int
+ orderId: Long?,
+ pair: String,
+ ouid: String,
+ uuid: String,
+ userLevel: String,
+ makerFee: BigDecimal,
+ takerFee: BigDecimal,
+ leftSideFraction: BigDecimal,
+ rightSideFraction: BigDecimal,
+ direction: OrderDirection,
+ constraint: MatchConstraint,
+ type: OrderType,
+ price: BigDecimal,
+ quantity: BigDecimal,
+ quoteQuantity: BigDecimal,
+ executedQuantity: BigDecimal,
+ accumulativeQuoteQty: BigDecimal,
+ status: Int
) : this() {
this.orderId = orderId
this.pair = pair
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichTrade.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichTrade.kt
similarity index 69%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichTrade.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichTrade.kt
index 964b5b5e1..60626f0a5 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichTrade.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/inout/RichTrade.kt
@@ -1,6 +1,6 @@
package co.nilin.opex.accountant.core.inout
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import java.math.BigDecimal
import java.time.LocalDateTime
@@ -32,30 +32,30 @@ class RichTrade() {
lateinit var tradeDateTime: LocalDateTime
constructor(
- id: Long,
- pair: String,
- takerOuid: String,
- takerUuid: String,
- takerOrderId: Long,
- takerDirection: OrderDirection,
- takerPrice: BigDecimal,
- takerQuantity: BigDecimal,
- takerQuoteQuantity: BigDecimal,
- takerRemainedQuantity: BigDecimal,
- takerCommision: BigDecimal,
- takerCommisionAsset: String,
- makerOuid: String,
- makerUuid: String,
- makerOrderId: Long,
- makerDirection: OrderDirection,
- makerPrice: BigDecimal,
- makerQuantity: BigDecimal,
- makerQuoteQuantity: BigDecimal,
- makerRemainedQuantity: BigDecimal,
- makerCommision: BigDecimal,
- makerCommisionAsset: String,
- matchedQuantity: BigDecimal,
- tradeDateTime: LocalDateTime
+ id: Long,
+ pair: String,
+ takerOuid: String,
+ takerUuid: String,
+ takerOrderId: Long,
+ takerDirection: OrderDirection,
+ takerPrice: BigDecimal,
+ takerQuantity: BigDecimal,
+ takerQuoteQuantity: BigDecimal,
+ takerRemainedQuantity: BigDecimal,
+ takerCommision: BigDecimal,
+ takerCommisionAsset: String,
+ makerOuid: String,
+ makerUuid: String,
+ makerOrderId: Long,
+ makerDirection: OrderDirection,
+ makerPrice: BigDecimal,
+ makerQuantity: BigDecimal,
+ makerQuoteQuantity: BigDecimal,
+ makerRemainedQuantity: BigDecimal,
+ makerCommision: BigDecimal,
+ makerCommisionAsset: String,
+ matchedQuantity: BigDecimal,
+ tradeDateTime: LocalDateTime
) : this() {
this.id = id
this.pair = pair
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/FinancialAction.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/FinancialAction.kt
similarity index 83%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/FinancialAction.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/FinancialAction.kt
index e6f57e4d7..0de5d8a81 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/FinancialAction.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/FinancialAction.kt
@@ -27,7 +27,19 @@ class FinancialAction(
receiver: String,
receiverWalletType: String,
createDate: LocalDateTime
- ) : this(null, parent, eventType, pointer, symbol, amount, sender, senderWalletType, receiver, receiverWalletType, createDate)
+ ) : this(
+ null,
+ parent,
+ eventType,
+ pointer,
+ symbol,
+ amount,
+ sender,
+ senderWalletType,
+ receiver,
+ receiverWalletType,
+ createDate
+ )
override fun toString(): String {
return "FinancialAction(id=$id, parent=$parent, eventType='$eventType', pointer='$pointer', symbol='$symbol', amount=$amount, sender='$sender', senderWalletType='$senderWalletType', receiver='$receiver', receiverWalletType='$receiverWalletType', createDate=$createDate)"
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/Order.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/Order.kt
similarity index 80%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/Order.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/Order.kt
index ca311f1a6..2298687b1 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/Order.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/Order.kt
@@ -1,8 +1,8 @@
package co.nilin.opex.accountant.core.model
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
import java.math.BigDecimal
data class Order(
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/PairConfig.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/PairConfig.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/PairConfig.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/PairConfig.kt
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/PairFeeConfig.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/PairFeeConfig.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/PairFeeConfig.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/PairFeeConfig.kt
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/TempEvent.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/TempEvent.kt
similarity index 73%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/TempEvent.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/TempEvent.kt
index 144cddf19..b0a631321 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/TempEvent.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/model/TempEvent.kt
@@ -1,6 +1,6 @@
package co.nilin.opex.accountant.core.model
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
import java.time.LocalDateTime
data class TempEvent(val id: Long, val ouid: String, val eventBody: CoreEvent, val eventDate: LocalDateTime)
\ No newline at end of file
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/FinancialActionJobManagerImpl.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/FinancialActionJobManagerImpl.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/FinancialActionJobManagerImpl.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/FinancialActionJobManagerImpl.kt
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImpl.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImpl.kt
similarity index 98%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImpl.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImpl.kt
index 06638663f..30b08dfb3 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImpl.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImpl.kt
@@ -6,8 +6,8 @@ import co.nilin.opex.accountant.core.inout.RichOrder
import co.nilin.opex.accountant.core.model.FinancialAction
import co.nilin.opex.accountant.core.model.Order
import co.nilin.opex.accountant.core.spi.*
-import co.nilin.opex.matching.core.eventh.events.*
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.eventh.events.*
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import org.springframework.transaction.annotation.Transactional
import java.math.BigDecimal
import java.time.LocalDateTime
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImpl.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImpl.kt
similarity index 98%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImpl.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImpl.kt
index 223280f20..e407b3adb 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImpl.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImpl.kt
@@ -4,8 +4,8 @@ import co.nilin.opex.accountant.core.api.TradeManager
import co.nilin.opex.accountant.core.inout.RichTrade
import co.nilin.opex.accountant.core.model.FinancialAction
import co.nilin.opex.accountant.core.spi.*
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import org.slf4j.LoggerFactory
import org.springframework.transaction.annotation.Transactional
import java.math.BigDecimal
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionLoader.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionLoader.kt
similarity index 91%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionLoader.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionLoader.kt
index 98721879d..e10e32b5c 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionLoader.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionLoader.kt
@@ -1,7 +1,6 @@
package co.nilin.opex.accountant.core.spi
import co.nilin.opex.accountant.core.model.FinancialAction
-import kotlinx.coroutines.flow.Flow
interface FinancialActionLoader {
suspend fun findLast(uuid: String, ouid: String): FinancialAction?
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionPersister.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionPersister.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionPersister.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/FinancialActionPersister.kt
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/OrderPersister.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/OrderPersister.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/OrderPersister.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/OrderPersister.kt
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairConfigLoader.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairConfigLoader.kt
similarity index 84%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairConfigLoader.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairConfigLoader.kt
index 22a9c2518..f7414fd3a 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairConfigLoader.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairConfigLoader.kt
@@ -2,7 +2,7 @@ package co.nilin.opex.accountant.core.spi
import co.nilin.opex.accountant.core.model.PairConfig
import co.nilin.opex.accountant.core.model.PairFeeConfig
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderDirection
interface PairConfigLoader {
diff --git a/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairStaticRateLoader.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairStaticRateLoader.kt
new file mode 100644
index 000000000..a798ee6ef
--- /dev/null
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/PairStaticRateLoader.kt
@@ -0,0 +1,5 @@
+package co.nilin.opex.accountant.core.spi
+
+interface PairStaticRateLoader {
+ suspend fun calculateStaticRate(leftSide: String, rightSide: String): Double?
+}
\ No newline at end of file
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/RichOrderPublisher.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/RichOrderPublisher.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/RichOrderPublisher.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/RichOrderPublisher.kt
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/RichTradePublisher.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/RichTradePublisher.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/RichTradePublisher.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/RichTradePublisher.kt
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventPersister.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventPersister.kt
similarity index 86%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventPersister.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventPersister.kt
index a949f1c95..69990d609 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventPersister.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventPersister.kt
@@ -1,7 +1,7 @@
package co.nilin.opex.accountant.core.spi
import co.nilin.opex.accountant.core.model.TempEvent
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
interface TempEventPersister {
suspend fun saveTempEvent(ouid: String, event: CoreEvent)
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventRepublisher.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventRepublisher.kt
similarity index 66%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventRepublisher.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventRepublisher.kt
index f86f23901..c9579dff0 100644
--- a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventRepublisher.kt
+++ b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/TempEventRepublisher.kt
@@ -1,6 +1,6 @@
package co.nilin.opex.accountant.core.spi
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
interface TempEventRepublisher {
suspend fun republish(events: List)
diff --git a/Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/WalletProxy.kt b/accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/WalletProxy.kt
similarity index 100%
rename from Accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/WalletProxy.kt
rename to accountant/accountant-core/src/main/kotlin/co/nilin/opex/accountant/core/spi/WalletProxy.kt
diff --git a/Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/MockitoHelper.kt b/accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/MockitoHelper.kt
similarity index 83%
rename from Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/MockitoHelper.kt
rename to accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/MockitoHelper.kt
index d05650e71..b40a99504 100644
--- a/Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/MockitoHelper.kt
+++ b/accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/MockitoHelper.kt
@@ -7,6 +7,7 @@ object MockitoHelper {
Mockito.any()
return uninitialized()
}
+
@Suppress("UNCHECKED_CAST")
- fun uninitialized(): T = null as T
+ fun uninitialized(): T = null as T
}
\ No newline at end of file
diff --git a/Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImplTest.kt b/accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImplTest.kt
similarity index 78%
rename from Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImplTest.kt
rename to accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImplTest.kt
index 15f54a86c..224b67815 100644
--- a/Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImplTest.kt
+++ b/accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/OrderManagerImplTest.kt
@@ -5,11 +5,10 @@ import co.nilin.opex.accountant.core.model.FinancialAction
import co.nilin.opex.accountant.core.model.PairConfig
import co.nilin.opex.accountant.core.model.PairFeeConfig
import co.nilin.opex.accountant.core.spi.*
-import co.nilin.opex.matching.core.eventh.events.SubmitOrderEvent
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import co.nilin.opex.matching.core.model.Pair
+import co.nilin.opex.matching.engine.core.eventh.events.SubmitOrderEvent
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Assertions.assertEquals
import org.junit.jupiter.api.Test
@@ -47,7 +46,13 @@ internal class OrderManagerImplTest() {
init {
MockitoAnnotations.openMocks(this)
orderManager = OrderManagerImpl(
- pairConfigLoader, financialActionPersister, financialActionLoader, orderPersister, tempEventPersister, tempEventRepublisher, richOrderPublisher
+ pairConfigLoader,
+ financialActionPersister,
+ financialActionLoader,
+ orderPersister,
+ tempEventPersister,
+ tempEventRepublisher,
+ richOrderPublisher
)
runBlocking {
Mockito.`when`(tempEventPersister.loadTempEvents(anyString())).thenReturn(emptyList())
@@ -58,27 +63,27 @@ internal class OrderManagerImplTest() {
fun givenAskOrder_whenHandleRequestOrder_thenFAMatch() {
runBlocking {
//given
- val pair = Pair("eth", "btc")
+ val pair = co.nilin.opex.matching.engine.core.model.Pair("eth", "btc")
val pairConfig = PairConfig(
pair.toString(), pair.leftSideName, pair.rightSideName, 1.0, 0.001
)
val submitOrderEvent = SubmitOrderEvent(
- "ouid", "uuid", null, pair, 30, 60, 0, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER
+ "ouid", "uuid", null, pair, 30, 60, 0, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER
)
Mockito.`when`(pairConfigLoader.load(pair.toString(), submitOrderEvent.direction, ""))
- .thenReturn(
- PairFeeConfig(
- pairConfig,
- submitOrderEvent.direction.toString(),
- "",
- 0.1,
- 0.12
- )
+ .thenReturn(
+ PairFeeConfig(
+ pairConfig,
+ submitOrderEvent.direction.toString(),
+ "",
+ 0.1,
+ 0.12
)
+ )
Mockito.`when`(financialActionPersister.persist(MockitoHelper.anyObject()))
- .then {
- return@then it.getArgument>(0)
- }
+ .then {
+ return@then it.getArgument>(0)
+ }
//when
val financialActions = orderManager.handleRequestOrder(submitOrderEvent)
@@ -111,23 +116,23 @@ internal class OrderManagerImplTest() {
fun givenBidOrder_whenHandleRequestOrder_thenFAMatch() {
runBlocking {
//given
- val pair = Pair("eth", "btc")
+ val pair = co.nilin.opex.matching.engine.core.model.Pair("eth", "btc")
val pairConfig = PairConfig(
pair.toString(), pair.leftSideName, pair.rightSideName, 1.0, 0.001
)
val submitOrderEvent = SubmitOrderEvent(
- "ouid", "uuid", null, pair, 35, 14, 0, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER
+ "ouid", "uuid", null, pair, 35, 14, 0, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER
)
Mockito.`when`(pairConfigLoader.load(pair.toString(), submitOrderEvent.direction, ""))
- .thenReturn(
- PairFeeConfig(
- pairConfig, submitOrderEvent.direction.toString(), "", 0.08, 0.1
- )
+ .thenReturn(
+ PairFeeConfig(
+ pairConfig, submitOrderEvent.direction.toString(), "", 0.08, 0.1
)
+ )
Mockito.`when`(financialActionPersister.persist(MockitoHelper.anyObject()))
- .then {
- return@then it.getArgument>(0)
- }
+ .then {
+ return@then it.getArgument>(0)
+ }
//when
val financialActions = runBlocking {
diff --git a/Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImplTest.kt b/accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImplTest.kt
similarity index 79%
rename from Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImplTest.kt
rename to accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImplTest.kt
index b6b9d9296..4f963d8b3 100644
--- a/Accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImplTest.kt
+++ b/accountant/accountant-core/src/test/kotlin/co/nilin/opex/accountant/core/service/TradeManagerImplTest.kt
@@ -7,17 +7,16 @@ import co.nilin.opex.accountant.core.model.Order
import co.nilin.opex.accountant.core.model.PairConfig
import co.nilin.opex.accountant.core.model.PairFeeConfig
import co.nilin.opex.accountant.core.spi.*
-import co.nilin.opex.matching.core.eventh.events.SubmitOrderEvent
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import co.nilin.opex.matching.core.model.Pair
+import co.nilin.opex.matching.engine.core.eventh.events.SubmitOrderEvent
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.Pair
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.mockito.ArgumentMatchers
-
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.MockitoAnnotations
@@ -94,12 +93,30 @@ internal class TradeManagerImplTest() {
pair.toString(), pair.leftSideName, pair.rightSideName, 1.0, 0.01
)
val makerSubmitOrderEvent = SubmitOrderEvent(
- "mouid", "muuid", null, pair, 60000, 1, 0, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER
+ "mouid",
+ "muuid",
+ null,
+ pair,
+ 60000,
+ 1,
+ 0,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
)
prepareOrder(pair, pairConfig, makerSubmitOrderEvent, 0.1, 0.12)
val takerSubmitOrderEvent = SubmitOrderEvent(
- "touid", "tuuid", null, pair, 70000, 1, 0, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER
+ "touid",
+ "tuuid",
+ null,
+ pair,
+ 70000,
+ 1,
+ 0,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
)
prepareOrder(pair, pairConfig, takerSubmitOrderEvent, 0.08, 0.1)
@@ -109,7 +126,10 @@ internal class TradeManagerImplTest() {
val tradeFinancialActions = tradeManager.handleTrade(tradeEvent)
Assertions.assertEquals(4, tradeFinancialActions.size)
- Assertions.assertEquals( (makerSubmitOrderEvent.price * pairConfig.rightSideFraction), tradeFinancialActions[0].amount.toDouble())
+ Assertions.assertEquals(
+ (makerSubmitOrderEvent.price * pairConfig.rightSideFraction),
+ tradeFinancialActions[0].amount.toDouble()
+ )
}
}
@@ -122,12 +142,30 @@ internal class TradeManagerImplTest() {
pair.toString(), pair.leftSideName, pair.rightSideName, 1.0, 0.001
)
val makerSubmitOrderEvent = SubmitOrderEvent(
- "mouid", "muuid", null, pair, 70000, 1, 0, OrderDirection.BID, MatchConstraint.GTC, OrderType.LIMIT_ORDER
+ "mouid",
+ "muuid",
+ null,
+ pair,
+ 70000,
+ 1,
+ 0,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
)
prepareOrder(pair, pairConfig, makerSubmitOrderEvent, 0.1, 0.12)
val takerSubmitOrderEvent = SubmitOrderEvent(
- "touid", "tuuid", null, pair, 60000, 1, 0, OrderDirection.ASK, MatchConstraint.GTC, OrderType.LIMIT_ORDER
+ "touid",
+ "tuuid",
+ null,
+ pair,
+ 60000,
+ 1,
+ 0,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
)
prepareOrder(pair, pairConfig, takerSubmitOrderEvent, 0.08, 0.1)
@@ -137,7 +175,10 @@ internal class TradeManagerImplTest() {
val tradeFinancialActions = tradeManager.handleTrade(tradeEvent)
Assertions.assertEquals(4, tradeFinancialActions.size)
- Assertions.assertEquals( makerSubmitOrderEvent.price * pairConfig.rightSideFraction, tradeFinancialActions[2].amount.toDouble())
+ Assertions.assertEquals(
+ makerSubmitOrderEvent.price * pairConfig.rightSideFraction,
+ tradeFinancialActions[2].amount.toDouble()
+ )
}
}
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/mvnw b/accountant/accountant-ports/accountant-eventlistener-kafka/mvnw
similarity index 100%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/mvnw
rename to accountant/accountant-ports/accountant-eventlistener-kafka/mvnw
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/mvnw.cmd b/accountant/accountant-ports/accountant-eventlistener-kafka/mvnw.cmd
similarity index 100%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/mvnw.cmd
rename to accountant/accountant-ports/accountant-eventlistener-kafka/mvnw.cmd
diff --git a/accountant/accountant-ports/accountant-eventlistener-kafka/pom.xml b/accountant/accountant-ports/accountant-eventlistener-kafka/pom.xml
new file mode 100644
index 000000000..53582bc51
--- /dev/null
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/pom.xml
@@ -0,0 +1,61 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.accountant
+ accountant
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.accountant.ports.kafka.listener
+ accountant-eventlistener-kafka
+ accountant-eventlistener-kafka
+ Accountant kafka listener of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/config/AccountantKafkaConfig.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/config/AccountantKafkaConfig.kt
similarity index 73%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/config/AccountantKafkaConfig.kt
rename to accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/config/AccountantKafkaConfig.kt
index 6c4781a87..b30385a56 100644
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/config/AccountantKafkaConfig.kt
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/config/AccountantKafkaConfig.kt
@@ -1,11 +1,11 @@
-package co.nilin.opex.port.accountant.kafka.config
+package co.nilin.opex.accountant.ports.kafka.listener.config
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.accountant.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.accountant.kafka.consumer.EventKafkaListener
-import co.nilin.opex.port.accountant.kafka.consumer.TempEventKafkaListener
-import co.nilin.opex.port.accountant.kafka.consumer.TradeKafkaListener
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.accountant.ports.kafka.listener.consumer.EventKafkaListener
+import co.nilin.opex.accountant.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.accountant.ports.kafka.listener.consumer.TempEventKafkaListener
+import co.nilin.opex.accountant.ports.kafka.listener.consumer.TradeKafkaListener
import org.apache.kafka.clients.admin.NewTopic
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.clients.producer.ProducerConfig
@@ -18,19 +18,13 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.support.GenericApplicationContext
-import org.springframework.kafka.core.ConsumerFactory
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory
-import org.springframework.kafka.core.DefaultKafkaProducerFactory
-import org.springframework.kafka.core.KafkaTemplate
-import org.springframework.kafka.core.ProducerFactory
+import org.springframework.kafka.core.*
import org.springframework.kafka.listener.ConcurrentMessageListenerContainer
import org.springframework.kafka.listener.ContainerProperties
import org.springframework.kafka.support.serializer.JsonDeserializer
import org.springframework.kafka.support.serializer.JsonSerializer
-import java.util.*
import java.util.regex.Pattern
-
@Configuration
class AccountantKafkaConfig {
@Value("\${spring.kafka.bootstrap-servers}")
@@ -51,7 +45,7 @@ class AccountantKafkaConfig {
}
@Bean("accountantConsumerFactory")
- fun consumerFactory(@Qualifier("accountantConsumerConfig")consumerConfigs: Map): ConsumerFactory {
+ fun consumerFactory(@Qualifier("accountantConsumerConfig") consumerConfigs: Map): ConsumerFactory {
return DefaultKafkaConsumerFactory(consumerConfigs)
}
@@ -77,8 +71,10 @@ class AccountantKafkaConfig {
@Autowired
@ConditionalOnBean(TradeKafkaListener::class)
- fun configureTradeListener(tradeListener: TradeKafkaListener
- , @Qualifier("accountantConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureTradeListener(
+ tradeListener: TradeKafkaListener,
+ @Qualifier("accountantConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("trades_.*"))
containerProps.messageListener = tradeListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
@@ -88,8 +84,10 @@ class AccountantKafkaConfig {
@Autowired
@ConditionalOnBean(EventKafkaListener::class)
- fun configureEventListener(eventListener: EventKafkaListener
- , @Qualifier("accountantConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureEventListener(
+ eventListener: EventKafkaListener,
+ @Qualifier("accountantConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("events_.*"))
containerProps.messageListener = eventListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
@@ -99,8 +97,10 @@ class AccountantKafkaConfig {
@Autowired
@ConditionalOnBean(OrderKafkaListener::class)
- fun configureOrderListener(orderListener: OrderKafkaListener
- , @Qualifier("accountantConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureOrderListener(
+ orderListener: OrderKafkaListener,
+ @Qualifier("accountantConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("orders_.*"))
containerProps.messageListener = orderListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
@@ -109,14 +109,16 @@ class AccountantKafkaConfig {
}
@Autowired
- fun createTempTopics(applicationContext: GenericApplicationContext){
- applicationContext.registerBean("topic_tempevents", NewTopic::class.java, "tempevents", 1 ,1)
+ fun createTempTopics(applicationContext: GenericApplicationContext) {
+ applicationContext.registerBean("topic_tempevents", NewTopic::class.java, "tempevents", 1, 1)
}
@Autowired
@ConditionalOnBean(TempEventKafkaListener::class)
- fun configureTempEventListener(eventListener: TempEventKafkaListener
- , @Qualifier("accountantConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureTempEventListener(
+ eventListener: TempEventKafkaListener,
+ @Qualifier("accountantConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("tempevents"))
containerProps.messageListener = eventListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
diff --git a/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/EventKafkaListener.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/EventKafkaListener.kt
new file mode 100644
index 000000000..773a7a0ba
--- /dev/null
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/EventKafkaListener.kt
@@ -0,0 +1,29 @@
+package co.nilin.opex.accountant.ports.kafka.listener.consumer
+
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.accountant.ports.kafka.listener.spi.EventListener
+import org.apache.kafka.clients.consumer.ConsumerRecord
+import org.springframework.kafka.listener.MessageListener
+import org.springframework.stereotype.Component
+
+@Component
+class EventKafkaListener : MessageListener {
+
+ val eventListeners = arrayListOf()
+
+ override fun onMessage(data: ConsumerRecord) {
+ eventListeners.forEach { tl ->
+ tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
+ }
+ }
+
+ fun addEventListener(tl: EventListener) {
+ eventListeners.add(tl)
+ }
+
+ fun removeEventListener(tl: EventListener) {
+ eventListeners.removeIf { item ->
+ item.id() == tl.id()
+ }
+ }
+}
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/OrderKafkaListener.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/OrderKafkaListener.kt
similarity index 77%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/OrderKafkaListener.kt
rename to accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/OrderKafkaListener.kt
index 208b7e039..53a52f16b 100644
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/consumer/OrderKafkaListener.kt
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/OrderKafkaListener.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.accountant.kafka.consumer
+package co.nilin.opex.accountant.ports.kafka.listener.consumer
-import co.nilin.opex.port.accountant.kafka.spi.OrderSubmitRequestListener
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
+import co.nilin.opex.accountant.ports.kafka.listener.spi.OrderSubmitRequestListener
+import co.nilin.opex.accountant.ports.kafka.listener.inout.OrderSubmitRequest
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.listener.MessageListener
import org.springframework.stereotype.Component
diff --git a/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/TempEventKafkaListener.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/TempEventKafkaListener.kt
new file mode 100644
index 000000000..f9fe310b0
--- /dev/null
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/TempEventKafkaListener.kt
@@ -0,0 +1,31 @@
+package co.nilin.opex.accountant.ports.kafka.listener.consumer
+
+
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.accountant.ports.kafka.listener.spi.TempEventListener
+import org.apache.kafka.clients.consumer.ConsumerRecord
+import org.springframework.kafka.listener.MessageListener
+import org.springframework.stereotype.Component
+
+@Component
+class TempEventKafkaListener : MessageListener {
+
+ val eventListeners = arrayListOf()
+
+ override fun onMessage(data: ConsumerRecord) {
+ println("TempEvent onMessage")
+ eventListeners.forEach { tl ->
+ tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
+ }
+ }
+
+ fun addEventListener(tl: TempEventListener) {
+ eventListeners.add(tl)
+ }
+
+ fun removeEventListener(tl: TempEventListener) {
+ eventListeners.removeIf { item ->
+ item.id() == tl.id()
+ }
+ }
+}
\ No newline at end of file
diff --git a/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/TradeKafkaListener.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/TradeKafkaListener.kt
new file mode 100644
index 000000000..70116cebb
--- /dev/null
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/consumer/TradeKafkaListener.kt
@@ -0,0 +1,29 @@
+package co.nilin.opex.accountant.ports.kafka.listener.consumer
+
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
+import co.nilin.opex.accountant.ports.kafka.listener.spi.TradeListener
+import org.apache.kafka.clients.consumer.ConsumerRecord
+import org.springframework.kafka.listener.MessageListener
+import org.springframework.stereotype.Component
+
+@Component
+class TradeKafkaListener : MessageListener {
+
+ val tradeListeners = arrayListOf()
+
+ override fun onMessage(data: ConsumerRecord) {
+ tradeListeners.forEach { tl ->
+ tl.onTrade(data.value(), data.partition(), data.offset(), data.timestamp())
+ }
+ }
+
+ fun addTradeListener(tl: TradeListener) {
+ tradeListeners.add(tl)
+ }
+
+ fun removeTradeListener(tl: TradeListener) {
+ tradeListeners.removeIf { item ->
+ item.id() == tl.id()
+ }
+ }
+}
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/inout/OrderSubmitRequest.kt
similarity index 75%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt
rename to accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/inout/OrderSubmitRequest.kt
index db9f6e74f..724850ab4 100644
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/inout/OrderSubmitRequest.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.order.kafka.inout
+package co.nilin.opex.accountant.ports.kafka.listener.inout
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import co.nilin.opex.matching.core.model.Pair
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.Pair
class OrderSubmitRequest() {
@@ -38,6 +38,4 @@ class OrderSubmitRequest() {
this.matchConstraint = matchConstraint
this.orderType = orderType
}
-
-
}
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/EventListener.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/EventListener.kt
similarity index 52%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/EventListener.kt
rename to accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/EventListener.kt
index 4bc2c860f..50304b05d 100644
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/EventListener.kt
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/EventListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.accountant.kafka.spi
+package co.nilin.opex.accountant.ports.kafka.listener.spi
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
interface EventListener {
fun id(): String
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/OrderSubmitRequestListener.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
similarity index 52%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/OrderSubmitRequestListener.kt
rename to accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
index a956db9fe..71756af2c 100644
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/OrderSubmitRequestListener.kt
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.accountant.kafka.spi
+package co.nilin.opex.accountant.ports.kafka.listener.spi
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
+import co.nilin.opex.accountant.ports.kafka.listener.inout.OrderSubmitRequest
interface OrderSubmitRequestListener {
fun id(): String
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/TempEventListener.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/TempEventListener.kt
similarity index 52%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/TempEventListener.kt
rename to accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/TempEventListener.kt
index 76e14cce2..6d069c573 100644
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/TempEventListener.kt
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/TempEventListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.accountant.kafka.spi
+package co.nilin.opex.accountant.ports.kafka.listener.spi
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
interface TempEventListener {
fun id(): String
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/TradeListener.kt b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/TradeListener.kt
similarity index 52%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/TradeListener.kt
rename to accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/TradeListener.kt
index f4f958b97..1d277a953 100644
--- a/Accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/spi/TradeListener.kt
+++ b/accountant/accountant-ports/accountant-eventlistener-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/listener/spi/TradeListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.accountant.kafka.spi
+package co.nilin.opex.accountant.ports.kafka.listener.spi
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
interface TradeListener {
fun id(): String
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/mvnw b/accountant/accountant-ports/accountant-persister-postgres/mvnw
similarity index 100%
rename from Accountant/accountant-ports/accountant-persister-postgres/mvnw
rename to accountant/accountant-ports/accountant-persister-postgres/mvnw
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/mvnw.cmd b/accountant/accountant-ports/accountant-persister-postgres/mvnw.cmd
similarity index 100%
rename from Accountant/accountant-ports/accountant-persister-postgres/mvnw.cmd
rename to accountant/accountant-ports/accountant-persister-postgres/mvnw.cmd
diff --git a/accountant/accountant-ports/accountant-persister-postgres/pom.xml b/accountant/accountant-ports/accountant-persister-postgres/pom.xml
new file mode 100644
index 000000000..250464a58
--- /dev/null
+++ b/accountant/accountant-ports/accountant-persister-postgres/pom.xml
@@ -0,0 +1,79 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.accountant
+ accountant
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.accountant.ports.postgres
+ accountant-persister-postgres
+ accountant-persister-postgres
+ Persist items of Opex accountant on Postgres
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ org.springframework.boot
+ spring-boot-starter-data-r2dbc
+
+
+ io.r2dbc
+ r2dbc-postgresql
+ runtime
+
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ com.google.code.gson
+ gson
+
+
+ co.nilin.opex.utility.error
+ error-handler
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/config/PostgresConfig.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/config/PostgresConfig.kt
similarity index 94%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/config/PostgresConfig.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/config/PostgresConfig.kt
index 6dd35e742..10fe331da 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/config/PostgresConfig.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/config/PostgresConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.accountant.postgres.config
+package co.nilin.opex.accountant.ports.postgres.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Configuration
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/FinancialActionRepository.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/FinancialActionRepository.kt
similarity index 91%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/FinancialActionRepository.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/FinancialActionRepository.kt
index 3113cdcde..92b5a6138 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/FinancialActionRepository.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/FinancialActionRepository.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.accountant.postgres.dao
+package co.nilin.opex.accountant.ports.postgres.dao
import co.nilin.opex.accountant.core.model.FinancialActionStatus
-import co.nilin.opex.port.accountant.postgres.model.FinancialActionModel
+import co.nilin.opex.accountant.ports.postgres.model.FinancialActionModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.domain.Pageable
import org.springframework.data.r2dbc.repository.Query
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/OrderRepository.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/OrderRepository.kt
similarity index 80%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/OrderRepository.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/OrderRepository.kt
index 3c80e1448..ed70b5aad 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/OrderRepository.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/OrderRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.accountant.postgres.dao
+package co.nilin.opex.accountant.ports.postgres.dao
-import co.nilin.opex.port.accountant.postgres.model.OrderModel
+import co.nilin.opex.accountant.ports.postgres.model.OrderModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/PairConfigRepository.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/PairConfigRepository.kt
similarity index 64%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/PairConfigRepository.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/PairConfigRepository.kt
index 5bffd8efb..9f76a937b 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/PairConfigRepository.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/PairConfigRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.accountant.postgres.dao
+package co.nilin.opex.accountant.ports.postgres.dao
-import co.nilin.opex.port.accountant.postgres.model.PairConfigModel
+import co.nilin.opex.accountant.ports.postgres.model.PairConfigModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/PairFeeConfigRepository.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/PairFeeConfigRepository.kt
similarity index 74%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/PairFeeConfigRepository.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/PairFeeConfigRepository.kt
index 60903c0c9..8e964c318 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/PairFeeConfigRepository.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/PairFeeConfigRepository.kt
@@ -1,8 +1,7 @@
-package co.nilin.opex.port.accountant.postgres.dao
+package co.nilin.opex.accountant.ports.postgres.dao
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.port.accountant.postgres.model.PairConfigModel
-import co.nilin.opex.port.accountant.postgres.model.PairFeeConfigModel
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.accountant.ports.postgres.model.PairFeeConfigModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/TempEventRepository.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/TempEventRepository.kt
similarity index 83%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/TempEventRepository.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/TempEventRepository.kt
index 1eef9ea6d..d487418f3 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/dao/TempEventRepository.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/dao/TempEventRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.accountant.postgres.dao
+package co.nilin.opex.accountant.ports.postgres.dao
-import co.nilin.opex.port.accountant.postgres.model.TempEventModel
+import co.nilin.opex.accountant.ports.postgres.model.TempEventModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.domain.Pageable
import org.springframework.data.r2dbc.repository.Query
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/FinancialActionLoaderImpl.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/FinancialActionLoaderImpl.kt
similarity index 94%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/FinancialActionLoaderImpl.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/FinancialActionLoaderImpl.kt
index e7cba4d18..e5185f09a 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/FinancialActionLoaderImpl.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/FinancialActionLoaderImpl.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.accountant.postgres.impl
+package co.nilin.opex.accountant.ports.postgres.impl
import co.nilin.opex.accountant.core.model.FinancialAction
import co.nilin.opex.accountant.core.model.FinancialActionStatus
import co.nilin.opex.accountant.core.spi.FinancialActionLoader
-import co.nilin.opex.port.accountant.postgres.dao.FinancialActionRepository
+import co.nilin.opex.accountant.ports.postgres.dao.FinancialActionRepository
import kotlinx.coroutines.flow.firstOrNull
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/FinancialActionPersisterImpl.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/FinancialActionPersisterImpl.kt
similarity index 89%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/FinancialActionPersisterImpl.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/FinancialActionPersisterImpl.kt
index 6af5107d7..f5102e7f5 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/FinancialActionPersisterImpl.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/FinancialActionPersisterImpl.kt
@@ -1,15 +1,14 @@
-package co.nilin.opex.port.accountant.postgres.impl
+package co.nilin.opex.accountant.ports.postgres.impl
import co.nilin.opex.accountant.core.model.FinancialAction
import co.nilin.opex.accountant.core.model.FinancialActionStatus
import co.nilin.opex.accountant.core.spi.FinancialActionPersister
-import co.nilin.opex.port.accountant.postgres.dao.FinancialActionRepository
-import co.nilin.opex.port.accountant.postgres.model.FinancialActionModel
+import co.nilin.opex.accountant.ports.postgres.dao.FinancialActionRepository
+import co.nilin.opex.accountant.ports.postgres.model.FinancialActionModel
import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.reactive.awaitFirstOrElse
import kotlinx.coroutines.reactive.awaitLast
import org.springframework.stereotype.Component
-import java.lang.IllegalArgumentException
import java.time.LocalDateTime
@Component
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/OrderPersisterImpl.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/OrderPersisterImpl.kt
similarity index 92%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/OrderPersisterImpl.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/OrderPersisterImpl.kt
index 094d49e67..3f6b177fe 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/OrderPersisterImpl.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/OrderPersisterImpl.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.accountant.postgres.impl
+package co.nilin.opex.accountant.ports.postgres.impl
import co.nilin.opex.accountant.core.model.Order
import co.nilin.opex.accountant.core.spi.OrderPersister
-import co.nilin.opex.port.accountant.postgres.dao.OrderRepository
-import co.nilin.opex.port.accountant.postgres.model.OrderModel
+import co.nilin.opex.accountant.ports.postgres.dao.OrderRepository
+import co.nilin.opex.accountant.ports.postgres.model.OrderModel
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
import java.time.LocalDateTime
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/PairConfigLoaderImpl.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/PairConfigLoaderImpl.kt
similarity index 89%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/PairConfigLoaderImpl.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/PairConfigLoaderImpl.kt
index 5c499242c..39366acfd 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/PairConfigLoaderImpl.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/PairConfigLoaderImpl.kt
@@ -1,12 +1,12 @@
-package co.nilin.opex.port.accountant.postgres.impl
+package co.nilin.opex.accountant.ports.postgres.impl
import co.nilin.opex.accountant.core.model.PairConfig
import co.nilin.opex.accountant.core.model.PairFeeConfig
import co.nilin.opex.accountant.core.spi.PairConfigLoader
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.port.accountant.postgres.dao.PairConfigRepository
-import co.nilin.opex.port.accountant.postgres.dao.PairFeeConfigRepository
-import co.nilin.opex.port.accountant.postgres.model.PairFeeConfigModel
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.accountant.ports.postgres.dao.PairConfigRepository
+import co.nilin.opex.accountant.ports.postgres.dao.PairFeeConfigRepository
+import co.nilin.opex.accountant.ports.postgres.model.PairFeeConfigModel
import co.nilin.opex.utility.error.data.OpexError
import co.nilin.opex.utility.error.data.OpexException
import kotlinx.coroutines.reactive.awaitFirstOrElse
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/PairStaticRateLoaderImpl.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/PairStaticRateLoaderImpl.kt
similarity index 78%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/PairStaticRateLoaderImpl.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/PairStaticRateLoaderImpl.kt
index ea4345ff9..1f0a9ae3d 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/PairStaticRateLoaderImpl.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/PairStaticRateLoaderImpl.kt
@@ -1,10 +1,9 @@
-package co.nilin.opex.port.accountant.postgres.impl
+package co.nilin.opex.accountant.ports.postgres.impl
import co.nilin.opex.accountant.core.spi.PairStaticRateLoader
-import co.nilin.opex.port.accountant.postgres.dao.PairConfigRepository
+import co.nilin.opex.accountant.ports.postgres.dao.PairConfigRepository
import kotlinx.coroutines.reactive.awaitFirstOrElse
import org.springframework.stereotype.Component
-import java.lang.IllegalArgumentException
@Component
class PairStaticRateLoaderImpl(val pairConfigRepository: PairConfigRepository) : PairStaticRateLoader {
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/TempEventPersisterImpl.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/TempEventPersisterImpl.kt
similarity index 89%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/TempEventPersisterImpl.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/TempEventPersisterImpl.kt
index 7c723b392..8a43f4a34 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/impl/TempEventPersisterImpl.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/impl/TempEventPersisterImpl.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.port.accountant.postgres.impl
+package co.nilin.opex.accountant.ports.postgres.impl
import co.nilin.opex.accountant.core.model.TempEvent
import co.nilin.opex.accountant.core.spi.TempEventPersister
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.accountant.postgres.dao.TempEventRepository
-import co.nilin.opex.port.accountant.postgres.model.TempEventModel
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.accountant.ports.postgres.dao.TempEventRepository
+import co.nilin.opex.accountant.ports.postgres.model.TempEventModel
import com.google.gson.Gson
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/FinancialActionModel.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/FinancialActionModel.kt
similarity index 94%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/FinancialActionModel.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/FinancialActionModel.kt
index eefd9e7ad..ef18db937 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/FinancialActionModel.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/FinancialActionModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.accountant.postgres.model
+package co.nilin.opex.accountant.ports.postgres.model
import co.nilin.opex.accountant.core.model.FinancialActionStatus
import org.springframework.data.annotation.Id
diff --git a/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/OrderModel.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/OrderModel.kt
new file mode 100644
index 000000000..2a3973186
--- /dev/null
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/OrderModel.kt
@@ -0,0 +1,39 @@
+package co.nilin.opex.accountant.ports.postgres.model
+
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+import org.springframework.data.annotation.Id
+import org.springframework.data.relational.core.mapping.Column
+import org.springframework.data.relational.core.mapping.Table
+import java.math.BigDecimal
+import java.time.LocalDateTime
+
+@Table("orders")
+class OrderModel(
+ @Id var id: Long?,
+ val ouid: String,
+ val uuid: String,
+ val pair: String,
+ @Column(value = "matching_engine_id") val matchingEngineId: Long?,
+ @Column("maker_fee") val makerFee: Double,
+ @Column("taker_fee") val takerFee: Double,
+ @Column("left_side_fraction") val leftSideFraction: Double,
+ @Column("right_side_fraction") val rightSideFraction: Double,
+ @Column("user_level") val userLevel: String,
+ @Column("direction") val direction: OrderDirection,
+ @Column("match_constraint") val matchConstraint: MatchConstraint,
+ @Column("order_type") val orderType: OrderType,
+ @Column("price") val price: Long,
+ @Column("quantity") val quantity: Long,
+ @Column("filled_quantity") val filledQuantity: Long,
+ @Column("orig_price") val origPrice: BigDecimal,
+ @Column("orig_quantity") val origQuantity: BigDecimal,
+ @Column("filled_orig_quantity") val filledOrigQuantity: BigDecimal,
+ @Column("first_transfer_amount") val firstTransferAmount: BigDecimal,
+ @Column("remained_transfer_amount") val remainedTransferAmount: BigDecimal,
+ @Column("status") val status: Int,
+ val agent: String,
+ val ip: String,
+ @Column("create_date") val createDate: LocalDateTime
+)
\ No newline at end of file
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/PairConfigModel.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/PairConfigModel.kt
similarity index 92%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/PairConfigModel.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/PairConfigModel.kt
index c0c0726df..131f13268 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/PairConfigModel.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/PairConfigModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.accountant.postgres.model
+package co.nilin.opex.accountant.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/PairFeeConfigModel.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/PairFeeConfigModel.kt
similarity index 89%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/PairFeeConfigModel.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/PairFeeConfigModel.kt
index cc36748de..0b3b4c7e7 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/PairFeeConfigModel.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/PairFeeConfigModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.accountant.postgres.model
+package co.nilin.opex.accountant.ports.postgres.model
import org.springframework.data.relational.core.mapping.Column
import org.springframework.data.relational.core.mapping.Table
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/TempEventModel.kt b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/TempEventModel.kt
similarity index 89%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/TempEventModel.kt
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/TempEventModel.kt
index 61ce47ec2..043a2a58d 100644
--- a/Accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/port/accountant/postgres/model/TempEventModel.kt
+++ b/accountant/accountant-ports/accountant-persister-postgres/src/main/kotlin/co/nilin/opex/accountant/ports/postgres/model/TempEventModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.accountant.postgres.model
+package co.nilin.opex.accountant.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/resources/data.sql b/accountant/accountant-ports/accountant-persister-postgres/src/main/resources/data.sql
similarity index 100%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/resources/data.sql
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/resources/data.sql
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/src/main/resources/schema.sql b/accountant/accountant-ports/accountant-persister-postgres/src/main/resources/schema.sql
similarity index 100%
rename from Accountant/accountant-ports/accountant-persister-postgres/src/main/resources/schema.sql
rename to accountant/accountant-ports/accountant-persister-postgres/src/main/resources/schema.sql
diff --git a/Accountant/accountant-ports/accountant-submitter-kafka/mvnw b/accountant/accountant-ports/accountant-submitter-kafka/mvnw
similarity index 100%
rename from Accountant/accountant-ports/accountant-submitter-kafka/mvnw
rename to accountant/accountant-ports/accountant-submitter-kafka/mvnw
diff --git a/Accountant/accountant-ports/accountant-submitter-kafka/mvnw.cmd b/accountant/accountant-ports/accountant-submitter-kafka/mvnw.cmd
similarity index 100%
rename from Accountant/accountant-ports/accountant-submitter-kafka/mvnw.cmd
rename to accountant/accountant-ports/accountant-submitter-kafka/mvnw.cmd
diff --git a/accountant/accountant-ports/accountant-submitter-kafka/pom.xml b/accountant/accountant-ports/accountant-submitter-kafka/pom.xml
new file mode 100644
index 000000000..2fbc81359
--- /dev/null
+++ b/accountant/accountant-ports/accountant-submitter-kafka/pom.xml
@@ -0,0 +1,69 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.accountant
+ accountant
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.accountant.ports.kafka.submitter
+ accountant-submitter-kafka
+ accountant-submitter-kafka
+ Accountant kafka event submitter of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/config/SubmitterKafkaConfig.kt b/accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/config/SubmitterKafkaConfig.kt
similarity index 96%
rename from Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/config/SubmitterKafkaConfig.kt
rename to accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/config/SubmitterKafkaConfig.kt
index f643d6bc7..27098e88a 100644
--- a/Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/config/SubmitterKafkaConfig.kt
+++ b/accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/config/SubmitterKafkaConfig.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.accountant.kafka.config
+package co.nilin.opex.accountant.ports.kafka.submitter.config
import co.nilin.opex.accountant.core.inout.RichOrder
import co.nilin.opex.accountant.core.inout.RichTrade
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
import org.apache.kafka.clients.admin.NewTopic
import org.apache.kafka.clients.producer.ProducerConfig
import org.apache.kafka.common.serialization.StringSerializer
diff --git a/Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/RichOrderSubmitter.kt b/accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/RichOrderSubmitter.kt
similarity index 93%
rename from Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/RichOrderSubmitter.kt
rename to accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/RichOrderSubmitter.kt
index 52c0ecf22..a06b7b0a5 100644
--- a/Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/RichOrderSubmitter.kt
+++ b/accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/RichOrderSubmitter.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.accountant.kafka.service
+package co.nilin.opex.accountant.ports.kafka.submitter.service
import co.nilin.opex.accountant.core.inout.RichOrder
import co.nilin.opex.accountant.core.spi.RichOrderPublisher
diff --git a/Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/RichTradeSubmitter.kt b/accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/RichTradeSubmitter.kt
similarity index 93%
rename from Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/RichTradeSubmitter.kt
rename to accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/RichTradeSubmitter.kt
index 0336e91b7..31ed37b7f 100644
--- a/Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/RichTradeSubmitter.kt
+++ b/accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/RichTradeSubmitter.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.accountant.kafka.service
+package co.nilin.opex.accountant.ports.kafka.submitter.service
import co.nilin.opex.accountant.core.inout.RichTrade
import co.nilin.opex.accountant.core.spi.RichTradePublisher
diff --git a/Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/TempEventSubmitter.kt b/accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/TempEventSubmitter.kt
similarity index 85%
rename from Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/TempEventSubmitter.kt
rename to accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/TempEventSubmitter.kt
index 4c4c0a977..2fa563725 100644
--- a/Accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/port/accountant/kafka/service/TempEventSubmitter.kt
+++ b/accountant/accountant-ports/accountant-submitter-kafka/src/main/kotlin/co/nilin/opex/accountant/ports/kafka/submitter/service/TempEventSubmitter.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.accountant.kafka.service
+package co.nilin.opex.accountant.ports.kafka.submitter.service
import co.nilin.opex.accountant.core.spi.TempEventRepublisher
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.kafka.core.KafkaTemplate
import org.springframework.stereotype.Component
@@ -11,7 +11,7 @@ import kotlin.coroutines.suspendCoroutine
@Component
class TempEventSubmitter(@Qualifier("accountantEventKafkaTemplate") val kafkaTemplate: KafkaTemplate) :
- TempEventRepublisher {
+ TempEventRepublisher {
override suspend fun republish(events: List): Unit = suspendCoroutine { cont ->
println("accountantEventSubmit!")
events.forEach { event ->
diff --git a/Accountant/accountant-ports/accountant-wallet-proxy/mvnw b/accountant/accountant-ports/accountant-wallet-proxy/mvnw
similarity index 100%
rename from Accountant/accountant-ports/accountant-wallet-proxy/mvnw
rename to accountant/accountant-ports/accountant-wallet-proxy/mvnw
diff --git a/Accountant/accountant-ports/accountant-wallet-proxy/mvnw.cmd b/accountant/accountant-ports/accountant-wallet-proxy/mvnw.cmd
similarity index 100%
rename from Accountant/accountant-ports/accountant-wallet-proxy/mvnw.cmd
rename to accountant/accountant-ports/accountant-wallet-proxy/mvnw.cmd
diff --git a/accountant/accountant-ports/accountant-wallet-proxy/pom.xml b/accountant/accountant-ports/accountant-wallet-proxy/pom.xml
new file mode 100644
index 000000000..14c9cf7ea
--- /dev/null
+++ b/accountant/accountant-ports/accountant-wallet-proxy/pom.xml
@@ -0,0 +1,103 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.accountant
+ accountant
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.accountant.ports.walletproxy
+ accountant-wallet-proxy
+ accountant-wallet-proxy
+ Opex wallet proxy
+
+
+ 2020.0.2
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-data-r2dbc
+
+
+ io.r2dbc
+ r2dbc-postgresql
+ runtime
+
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/WebClientConfig.kt b/accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/accountant/ports/walletproxy/config/WebClientConfig.kt
similarity index 89%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/WebClientConfig.kt
rename to accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/accountant/ports/walletproxy/config/WebClientConfig.kt
index 84aa19305..718eade2b 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/WebClientConfig.kt
+++ b/accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/accountant/ports/walletproxy/config/WebClientConfig.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.api.binance.config
+package co.nilin.opex.accountant.ports.walletproxy.config
-import co.nilin.opex.utility.log.interceptor.CustomLogger
+import co.nilin.opex.utility.log.CustomLogger
import org.springframework.cloud.client.ServiceInstance
import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties
import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer
@@ -16,7 +16,7 @@ class WebClientConfig {
@Bean
fun webClient(loadBalancerFactory: ReactiveLoadBalancer.Factory): WebClient {
- val logger = CustomLogger(HttpClient::class.java)
+ val logger = CustomLogger(HttpClient::class.java)
return WebClient.builder()
.clientConnector(
ReactorClientHttpConnector(
diff --git a/Accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/port/accountant/wallet/proxy/WalletProxyImpl.kt b/accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/accountant/ports/walletproxy/proxy/WalletProxyImpl.kt
similarity index 80%
rename from Accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/port/accountant/wallet/proxy/WalletProxyImpl.kt
rename to accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/accountant/ports/walletproxy/proxy/WalletProxyImpl.kt
index 1ba445d11..69616db32 100644
--- a/Accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/port/accountant/wallet/proxy/WalletProxyImpl.kt
+++ b/accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/accountant/ports/walletproxy/proxy/WalletProxyImpl.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.accountant.wallet.proxy
+package co.nilin.opex.accountant.ports.walletproxy.proxy
import co.nilin.opex.accountant.core.spi.WalletProxy
import kotlinx.coroutines.reactive.awaitFirst
@@ -8,18 +8,18 @@ import org.springframework.stereotype.Component
import org.springframework.web.reactive.function.client.WebClient
import java.math.BigDecimal
import java.net.URI
-import java.time.LocalDateTime
inline fun typeRef(): ParameterizedTypeReference = object : ParameterizedTypeReference() {}
-data class TransferResult(val date: Long
- , val sourceUuid: String
- , val sourceWalletType: String
- , val sourceBalanceBeforeAction: Amount
- , val sourceBalanceAfterAction: Amount
- , val amount: Amount
- , val destUuid: String
- , val destWalletType: String
- , val receivedAmount: Amount
+data class TransferResult(
+ val date: Long,
+ val sourceUuid: String,
+ val sourceWalletType: String,
+ val sourceBalanceBeforeAction: Amount,
+ val sourceBalanceAfterAction: Amount,
+ val amount: Amount,
+ val destUuid: String,
+ val destWalletType: String,
+ val receivedAmount: Amount
)
data class Amount(val currency: Currency, val amount: BigDecimal)
diff --git a/accountant/pom.xml b/accountant/pom.xml
new file mode 100644
index 000000000..7714383c5
--- /dev/null
+++ b/accountant/pom.xml
@@ -0,0 +1,78 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.accountant
+ accountant
+ accountant
+ pom
+ Accountant root of Opex
+
+
+ accountant-core
+ accountant-app
+ accountant-ports/accountant-persister-postgres
+ accountant-ports/accountant-wallet-proxy
+ accountant-ports/accountant-submitter-kafka
+ accountant-ports/accountant-eventlistener-kafka
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+ ${project.version}
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+ ${project.version}
+
+
+ co.nilin.opex.accountant.ports.kafka.listener
+ accountant-eventlistener-kafka
+ ${project.version}
+
+
+ co.nilin.opex.accountant.ports.kafka.submitter
+ accountant-submitter-kafka
+ ${project.version}
+
+
+ co.nilin.opex.accountant.ports.postgres
+ accountant-persister-postgres
+ ${project.version}
+
+
+ co.nilin.opex.accountant.ports.walletproxy
+ accountant-wallet-proxy
+ ${project.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+
+
diff --git a/Api/api-app/Dockerfile b/api/api-app/Dockerfile
similarity index 100%
rename from Api/api-app/Dockerfile
rename to api/api-app/Dockerfile
diff --git a/api/api-app/pom.xml b/api/api-app/pom.xml
new file mode 100644
index 000000000..e60b9784b
--- /dev/null
+++ b/api/api-app/pom.xml
@@ -0,0 +1,77 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.api
+ api
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.api.app
+ api-app
+ api-app
+ Api app Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+
+
+ co.nilin.opex.utility.error
+ error-handler
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ co.nilin.opex.api.core
+ api-core
+
+
+ co.nilin.opex.api.ports.kafka.listener
+ api-eventlistener-kafka
+
+
+ co.nilin.opex.api.ports.binance
+ api-binance-rest
+
+
+ co.nilin.opex.api.ports.postgres
+ api-persister-postgres
+
+
+ io.springfox
+ springfox-boot-starter
+ 3.0.0
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt b/api/api-app/src/main/kotlin/co/nilin/opex/api/app/ApiApp.kt
similarity index 92%
rename from Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt
rename to api/api-app/src/main/kotlin/co/nilin/opex/api/app/ApiApp.kt
index 841b43d18..60cf684dd 100644
--- a/Api/api-app/src/main/kotlin/co/nilin/opex/app/ApiApp.kt
+++ b/api/api-app/src/main/kotlin/co/nilin/opex/api/app/ApiApp.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app
+package co.nilin.opex.api.app
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt b/api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/AppConfig.kt
similarity index 85%
rename from Api/api-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt
rename to api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/AppConfig.kt
index d544cd605..f54a029b0 100644
--- a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt
+++ b/api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/AppConfig.kt
@@ -1,13 +1,13 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.api.app.config
import co.nilin.opex.accountant.core.inout.RichOrder
import co.nilin.opex.accountant.core.inout.RichTrade
import co.nilin.opex.api.core.spi.OrderPersister
import co.nilin.opex.api.core.spi.TradePersister
-import co.nilin.opex.port.api.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.api.kafka.spi.RichOrderListener
-import co.nilin.opex.port.api.kafka.consumer.TradeKafkaListener
-import co.nilin.opex.port.api.kafka.spi.RichTradeListener
+import co.nilin.opex.api.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.api.ports.kafka.listener.consumer.TradeKafkaListener
+import co.nilin.opex.api.ports.kafka.listener.spi.RichOrderListener
+import co.nilin.opex.api.ports.kafka.listener.spi.RichTradeListener
import kotlinx.coroutines.runBlocking
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.context.annotation.Bean
diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/AppDispatchers.kt b/api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/AppDispatchers.kt
similarity index 88%
rename from Api/api-app/src/main/kotlin/co/nilin/opex/app/config/AppDispatchers.kt
rename to api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/AppDispatchers.kt
index a63f2d6a6..0db73c8ba 100644
--- a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/AppDispatchers.kt
+++ b/api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/AppDispatchers.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.api.app.config
import kotlinx.coroutines.asCoroutineDispatcher
import java.util.concurrent.Executors
diff --git a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/SwaggerConfig.kt
similarity index 98%
rename from Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
rename to api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/SwaggerConfig.kt
index 6758b8ee6..88de868df 100644
--- a/Api/api-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
+++ b/api/api-app/src/main/kotlin/co/nilin/opex/api/app/config/SwaggerConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.api.app.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
diff --git a/Api/api-app/src/main/resources/application-docker.yml b/api/api-app/src/main/resources/application-docker.yml
similarity index 100%
rename from Api/api-app/src/main/resources/application-docker.yml
rename to api/api-app/src/main/resources/application-docker.yml
diff --git a/Api/api-app/src/main/resources/application.yml b/api/api-app/src/main/resources/application.yml
similarity index 100%
rename from Api/api-app/src/main/resources/application.yml
rename to api/api-app/src/main/resources/application.yml
diff --git a/Api/api-core/mvnw b/api/api-core/mvnw
similarity index 100%
rename from Api/api-core/mvnw
rename to api/api-core/mvnw
diff --git a/Api/api-core/mvnw.cmd b/api/api-core/mvnw.cmd
similarity index 100%
rename from Api/api-core/mvnw.cmd
rename to api/api-core/mvnw.cmd
diff --git a/api/api-core/pom.xml b/api/api-core/pom.xml
new file mode 100644
index 000000000..0a8539071
--- /dev/null
+++ b/api/api-core/pom.xml
@@ -0,0 +1,52 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.api
+ api
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.api.core
+ api-core
+ api-core
+ Api logic of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ org.springframework
+ spring-tx
+ provided
+
+
+
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AggregatedOrderPriceModel.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AggregatedOrderPriceModel.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AggregatedOrderPriceModel.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AggregatedOrderPriceModel.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AllOrderRequest.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AllOrderRequest.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AllOrderRequest.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AllOrderRequest.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AssignResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AssignResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AssignResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AssignResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AssignedAddress.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AssignedAddress.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AssignedAddress.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/AssignedAddress.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CancelOrderRequest.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CancelOrderRequest.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CancelOrderRequest.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CancelOrderRequest.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CandleData.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CandleData.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CandleData.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CandleData.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CreateOrderRequest.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CreateOrderRequest.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CreateOrderRequest.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CreateOrderRequest.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CreateOrderResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CreateOrderResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CreateOrderResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/CreateOrderResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/DepositDetails.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/DepositDetails.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/DepositDetails.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/DepositDetails.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/MarketTradeResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/MarketTradeResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/MarketTradeResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/MarketTradeResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderBookResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderBookResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderBookResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderBookResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderEnums.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderEnums.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderEnums.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderEnums.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderSubmitResult.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderSubmitResult.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderSubmitResult.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderSubmitResult.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderTradeData.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderTradeData.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderTradeData.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OrderTradeData.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OwnerLimitsResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OwnerLimitsResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OwnerLimitsResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/OwnerLimitsResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PairInfoResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PairInfoResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PairInfoResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PairInfoResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PriceChangeResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PriceChangeResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PriceChangeResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PriceChangeResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PriceTickerResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PriceTickerResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PriceTickerResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/PriceTickerResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/QueryOrderRequest.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/QueryOrderRequest.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/QueryOrderRequest.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/QueryOrderRequest.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/QueryOrderResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/QueryOrderResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/QueryOrderResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/QueryOrderResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/RateLimit.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/RateLimit.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/RateLimit.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/RateLimit.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/RateLimitType.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/RateLimitType.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/RateLimitType.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/RateLimitType.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TradeRequest.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TradeRequest.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TradeRequest.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TradeRequest.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TradeResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TradeResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TradeResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TradeResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TransactionHistoryResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TransactionHistoryResponse.kt
similarity index 88%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TransactionHistoryResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TransactionHistoryResponse.kt
index 4eaf5b58f..5b03de954 100644
--- a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TransactionHistoryResponse.kt
+++ b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/TransactionHistoryResponse.kt
@@ -1,7 +1,6 @@
package co.nilin.opex.api.core.inout
import java.math.BigDecimal
-import java.time.LocalDateTime
data class TransactionHistoryResponse(
val id: Long,
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/Wallet.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/Wallet.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/Wallet.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/Wallet.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/WithdrawHistoryResponse.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/WithdrawHistoryResponse.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/WithdrawHistoryResponse.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/inout/WithdrawHistoryResponse.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/AccountantProxy.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/AccountantProxy.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/AccountantProxy.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/AccountantProxy.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/BlockchainGatewayProxy.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/BlockchainGatewayProxy.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/BlockchainGatewayProxy.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/BlockchainGatewayProxy.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MEGatewayProxy.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MEGatewayProxy.kt
similarity index 77%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MEGatewayProxy.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MEGatewayProxy.kt
index 7a427891d..8fe347450 100644
--- a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MEGatewayProxy.kt
+++ b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MEGatewayProxy.kt
@@ -2,10 +2,9 @@ package co.nilin.opex.api.core.spi
import co.nilin.opex.api.core.inout.CancelOrderRequest
import co.nilin.opex.api.core.inout.OrderSubmitResult
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import reactor.core.publisher.Mono
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
import java.math.BigDecimal
interface MEGatewayProxy {
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MarketQueryHandler.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MarketQueryHandler.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MarketQueryHandler.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/MarketQueryHandler.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/OrderPersister.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/OrderPersister.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/OrderPersister.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/OrderPersister.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/SymbolMapper.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/SymbolMapper.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/SymbolMapper.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/SymbolMapper.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/TradePersister.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/TradePersister.kt
similarity index 100%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/TradePersister.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/TradePersister.kt
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/UserQueryHandler.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/UserQueryHandler.kt
similarity index 93%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/UserQueryHandler.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/UserQueryHandler.kt
index 2c986aed3..0fb37a671 100644
--- a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/UserQueryHandler.kt
+++ b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/UserQueryHandler.kt
@@ -1,6 +1,5 @@
package co.nilin.opex.api.core.spi
-import co.nilin.opex.api.core.inout.*
import co.nilin.opex.api.core.inout.*
import kotlinx.coroutines.flow.Flow
import java.security.Principal
diff --git a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/WalletProxy.kt b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/WalletProxy.kt
similarity index 94%
rename from Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/WalletProxy.kt
rename to api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/WalletProxy.kt
index 54f13ae2f..6289963df 100644
--- a/Api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/WalletProxy.kt
+++ b/api/api-core/src/main/kotlin/co/nilin/opex/api/core/spi/WalletProxy.kt
@@ -14,7 +14,7 @@ interface WalletProxy {
suspend fun getDepositTransactions(
uuid: String,
token: String?,
- coin:String?,
+ coin: String?,
startTime: Long,
endTime: Long,
limit: Int,
@@ -24,7 +24,7 @@ interface WalletProxy {
suspend fun getWithdrawTransactions(
uuid: String,
token: String?,
- coin:String?,
+ coin: String?,
startTime: Long,
endTime: Long,
limit: Int,
diff --git a/Api/api-ports/api-binance-rest/mvnw b/api/api-ports/api-binance-rest/mvnw
similarity index 100%
rename from Api/api-ports/api-binance-rest/mvnw
rename to api/api-ports/api-binance-rest/mvnw
diff --git a/Api/api-ports/api-binance-rest/mvnw.cmd b/api/api-ports/api-binance-rest/mvnw.cmd
similarity index 100%
rename from Api/api-ports/api-binance-rest/mvnw.cmd
rename to api/api-ports/api-binance-rest/mvnw.cmd
diff --git a/Api/api-ports/api-binance-rest/pom.xml b/api/api-ports/api-binance-rest/pom.xml
similarity index 63%
rename from Api/api-ports/api-binance-rest/pom.xml
rename to api/api-ports/api-binance-rest/pom.xml
index 1484b63cc..31a7cd2ec 100644
--- a/Api/api-ports/api-binance-rest/pom.xml
+++ b/api/api-ports/api-binance-rest/pom.xml
@@ -2,57 +2,47 @@
4.0.0
+
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
+ co.nilin.opex.api
+ api
+ 1.0-SNAPSHOT
+ ../../pom.xml
- co.nilin.opex
+
+ co.nilin.opex.api.ports.binance
api-binance-rest
- 1.0-SNAPSHOT
api-binance-rest
Api Binance Rest
- 1.8
- 1.4.31
- ${version}
- ${version}
2020.0.2
- ${version}
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
+ org.jetbrains.kotlin
+ kotlin-reflect
- co.nilin.opex
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.api.core
api-core
- ${api.version}
- provided
- co.nilin.opex
+ co.nilin.opex.utility.log
logging-handler
- ${utility.version}
- provided
- co.nilin.opex
+ co.nilin.opex.utility.error
error-handler
- ${utility.version}
- provided
- co.nilin.opex
+ co.nilin.opex.utility.interceptors
interceptors
- ${utility.version}
- provided
org.springframework.boot
@@ -84,19 +74,10 @@
io.projectreactor.kotlin
reactor-kotlin-extensions
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
org.jetbrains.kotlinx
kotlinx-coroutines-reactor
-
org.springframework.boot
spring-boot-starter-security
@@ -110,7 +91,6 @@
bcprov-jdk15on
1.60
-
org.jetbrains.kotlinx
kotlinx-coroutines-core
@@ -127,32 +107,6 @@
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
spring-milestones
@@ -172,5 +126,4 @@
-
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/ErrorHandlerConfig.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/ErrorHandlerConfig.kt
similarity index 80%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/ErrorHandlerConfig.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/ErrorHandlerConfig.kt
index f500e712b..bc321e9e0 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/ErrorHandlerConfig.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/ErrorHandlerConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.config
+package co.nilin.opex.api.ports.binance.config
import co.nilin.opex.utility.error.EnableOpexErrorHandler
import org.springframework.context.annotation.Configuration
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/RestConfig.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/RestConfig.kt
similarity index 86%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/RestConfig.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/RestConfig.kt
index 4c6a23140..1357932d2 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/RestConfig.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/RestConfig.kt
@@ -1,11 +1,11 @@
-package co.nilin.opex.port.api.binance.config
+package co.nilin.opex.api.ports.binance.config
-import co.nilin.opex.utility.interceptor.FormDataWorkaroundFilter
+import co.nilin.opex.utility.interceptors.FormDataWorkaroundFilter
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.format.Formatter
-import java.util.*
import org.springframework.web.server.WebFilter
+import java.util.*
@Configuration
class RestConfig {
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/SecurityConfig.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/SecurityConfig.kt
similarity index 95%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/SecurityConfig.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/SecurityConfig.kt
index 047c58dc5..240c7cd9a 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/config/SecurityConfig.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/SecurityConfig.kt
@@ -1,8 +1,7 @@
-package co.nilin.opex.port.api.binance.config
+package co.nilin.opex.api.ports.binance.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
-import org.springframework.http.HttpMethod
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity
import org.springframework.security.config.web.server.ServerHttpSecurity
import org.springframework.security.oauth2.jwt.NimbusReactiveJwtDecoder
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/WebClientConfig.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/WebClientConfig.kt
similarity index 89%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/WebClientConfig.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/WebClientConfig.kt
index ae61545dd..7c30597f8 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/WebClientConfig.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/config/WebClientConfig.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.api.ports.binance.config
-import co.nilin.opex.utility.log.interceptor.CustomLogger
+import co.nilin.opex.utility.log.CustomLogger
import org.springframework.cloud.client.ServiceInstance
import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties
import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer
@@ -16,7 +16,7 @@ class WebClientConfig {
@Bean
fun webClient(loadBalancerFactory: ReactiveLoadBalancer.Factory): WebClient {
- val logger = CustomLogger(HttpClient::class.java)
+ val logger = CustomLogger(HttpClient::class.java)
return WebClient.builder()
.clientConnector(
ReactorClientHttpConnector(
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/AccountController.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/AccountController.kt
similarity index 98%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/AccountController.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/AccountController.kt
index 080e82456..0a6a791b7 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/AccountController.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/AccountController.kt
@@ -1,25 +1,28 @@
-package co.nilin.opex.port.api.binance.controller
+package co.nilin.opex.api.ports.binance.controller
import co.nilin.opex.api.core.inout.*
import co.nilin.opex.api.core.spi.MEGatewayProxy
import co.nilin.opex.api.core.spi.SymbolMapper
import co.nilin.opex.api.core.spi.UserQueryHandler
import co.nilin.opex.api.core.spi.WalletProxy
-import co.nilin.opex.port.api.binance.data.AccountInfoResponse
-import co.nilin.opex.port.api.binance.util.*
+import co.nilin.opex.api.ports.binance.data.AccountInfoResponse
+import co.nilin.opex.api.ports.binance.util.*
import co.nilin.opex.utility.error.data.OpexError
import co.nilin.opex.utility.error.data.OpexException
import com.fasterxml.jackson.annotation.JsonInclude
-import io.swagger.annotations.*
-import java.math.BigDecimal
-import java.security.Principal
-import java.util.*
+import io.swagger.annotations.ApiParam
+import io.swagger.annotations.ApiResponse
+import io.swagger.annotations.Example
+import io.swagger.annotations.ExampleProperty
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import org.springframework.http.MediaType
import org.springframework.security.core.annotation.CurrentSecurityContext
import org.springframework.security.core.context.SecurityContext
import org.springframework.web.bind.annotation.*
+import java.math.BigDecimal
+import java.security.Principal
+import java.util.*
@RestController
class AccountController(
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/FiltersController.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/FiltersController.kt
similarity index 67%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/FiltersController.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/FiltersController.kt
index 19ef78033..46db1b010 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/FiltersController.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/FiltersController.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.controller
+package co.nilin.opex.api.ports.binance.controller
import org.springframework.web.bind.annotation.RestController
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/MarketController.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/MarketController.kt
similarity index 97%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/MarketController.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/MarketController.kt
index ea3a51f59..92899a607 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/MarketController.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/MarketController.kt
@@ -1,11 +1,11 @@
-package co.nilin.opex.port.api.binance.controller
+package co.nilin.opex.api.ports.binance.controller
-import co.nilin.opex.api.core.spi.MarketQueryHandler
-import co.nilin.opex.api.core.spi.SymbolMapper
import co.nilin.opex.api.core.inout.PriceChangeResponse
import co.nilin.opex.api.core.inout.PriceTickerResponse
import co.nilin.opex.api.core.spi.AccountantProxy
-import co.nilin.opex.port.api.binance.data.*
+import co.nilin.opex.api.core.spi.MarketQueryHandler
+import co.nilin.opex.api.core.spi.SymbolMapper
+import co.nilin.opex.api.ports.binance.data.*
import co.nilin.opex.utility.error.data.OpexError
import co.nilin.opex.utility.error.data.OpexException
import co.nilin.opex.utility.error.data.throwError
@@ -17,10 +17,7 @@ import org.springframework.web.bind.annotation.RequestParam
import org.springframework.web.bind.annotation.RestController
import java.math.BigDecimal
import java.security.Principal
-import java.time.Instant
-import java.time.LocalDateTime
import java.time.ZoneId
-import kotlin.collections.ArrayList
@RestController
class MarketController(
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/WalletController.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/WalletController.kt
similarity index 93%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/WalletController.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/WalletController.kt
index 9cc1f8b2f..38c8b6dbe 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/controller/WalletController.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/controller/WalletController.kt
@@ -1,15 +1,15 @@
-package co.nilin.opex.port.api.binance.controller
+package co.nilin.opex.api.ports.binance.controller
import co.nilin.opex.api.core.inout.DepositDetails
import co.nilin.opex.api.core.inout.TransactionHistoryResponse
import co.nilin.opex.api.core.spi.BlockchainGatewayProxy
import co.nilin.opex.api.core.spi.WalletProxy
-import co.nilin.opex.port.api.binance.data.AssignAddressResponse
-import co.nilin.opex.port.api.binance.data.DepositResponse
-import co.nilin.opex.port.api.binance.data.Interval
-import co.nilin.opex.port.api.binance.data.WithdrawResponse
-import co.nilin.opex.port.api.binance.util.jwtAuthentication
-import co.nilin.opex.port.api.binance.util.tokenValue
+import co.nilin.opex.api.ports.binance.data.AssignAddressResponse
+import co.nilin.opex.api.ports.binance.data.DepositResponse
+import co.nilin.opex.api.ports.binance.data.Interval
+import co.nilin.opex.api.ports.binance.data.WithdrawResponse
+import co.nilin.opex.api.ports.binance.util.jwtAuthentication
+import co.nilin.opex.api.ports.binance.util.tokenValue
import org.springframework.security.core.annotation.CurrentSecurityContext
import org.springframework.security.core.context.SecurityContext
import org.springframework.web.bind.annotation.GetMapping
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/AccountInfoResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/AccountInfoResponse.kt
similarity index 91%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/AccountInfoResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/AccountInfoResponse.kt
index 0ace90f4c..0bcf57bd9 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/AccountInfoResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/AccountInfoResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import com.fasterxml.jackson.annotation.JsonInclude
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/AssignAddressResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/AssignAddressResponse.kt
similarity index 73%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/AssignAddressResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/AssignAddressResponse.kt
index d82d7207f..ac83b412d 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/AssignAddressResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/AssignAddressResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
data class AssignAddressResponse(
val address: String,
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/BalanceResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/BalanceResponse.kt
similarity index 78%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/BalanceResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/BalanceResponse.kt
index 09eeb523c..484970261 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/BalanceResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/BalanceResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import java.math.BigDecimal
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/DepositResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/DepositResponse.kt
similarity index 88%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/DepositResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/DepositResponse.kt
index 53411a853..641a5838c 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/DepositResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/DepositResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import java.math.BigDecimal
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/ExchangeInfoResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/ExchangeInfoResponse.kt
similarity index 90%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/ExchangeInfoResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/ExchangeInfoResponse.kt
index 9a5cd229f..84d49fe1e 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/ExchangeInfoResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/ExchangeInfoResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import co.nilin.opex.api.core.inout.RateLimit
import java.util.*
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/ExchangeInfoSymbol.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/ExchangeInfoSymbol.kt
similarity index 92%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/ExchangeInfoSymbol.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/ExchangeInfoSymbol.kt
index 4679e05ea..4fcd31a2c 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/ExchangeInfoSymbol.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/ExchangeInfoSymbol.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import co.nilin.opex.api.core.inout.OrderType
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/Interval.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/Interval.kt
similarity index 93%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/Interval.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/Interval.kt
index 2437fcc57..cd242b69d 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/Interval.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/Interval.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import java.time.Instant
import java.time.LocalDateTime
@@ -24,7 +24,7 @@ enum class Interval(val label: String, val unit: TimeUnit, val duration: Long) {
ThreeDays("3d", TimeUnit.DAYS, 3),
Week("1w", TimeUnit.DAYS, 7),
Month("1M", TimeUnit.DAYS, 31),
- ThreeMonth("3M",TimeUnit.DAYS, 90);
+ ThreeMonth("3M", TimeUnit.DAYS, 90);
private fun getOffsetTime() = unit.toMillis(duration)
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/OrderBookResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/OrderBookResponse.kt
similarity index 84%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/OrderBookResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/OrderBookResponse.kt
index dbe8f96c5..0ae205c18 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/OrderBookResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/OrderBookResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import java.math.BigDecimal
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/RateLimitResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/RateLimitResponse.kt
similarity index 81%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/RateLimitResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/RateLimitResponse.kt
index f102aeac6..6abb048c4 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/RateLimitResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/RateLimitResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import co.nilin.opex.api.core.inout.RateLimitType
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/RecentTradeResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/RecentTradeResponse.kt
similarity index 84%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/RecentTradeResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/RecentTradeResponse.kt
index 2a6c76513..505bee074 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/RecentTradeResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/RecentTradeResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import java.math.BigDecimal
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/TransactionRequest.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/TransactionRequest.kt
similarity index 64%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/TransactionRequest.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/TransactionRequest.kt
index 3f73eaa06..2f64051b9 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/TransactionRequest.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/TransactionRequest.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
data class TransactionRequest(
- val coin:String?,
+ val coin: String?,
val startTime: Long,
val endTime: Long,
val limit: Int,
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/WithdrawResponse.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/WithdrawResponse.kt
similarity index 89%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/WithdrawResponse.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/WithdrawResponse.kt
index bd9d35378..c43d852a3 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/data/WithdrawResponse.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/data/WithdrawResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.data
+package co.nilin.opex.api.ports.binance.data
import java.math.BigDecimal
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/AccountantProxyImpl.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/AccountantProxyImpl.kt
similarity index 91%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/AccountantProxyImpl.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/AccountantProxyImpl.kt
index a457a1b75..4c94410b8 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/AccountantProxyImpl.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/AccountantProxyImpl.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.api.binance.proxy
+package co.nilin.opex.api.ports.binance.proxy
import co.nilin.opex.api.core.inout.PairInfoResponse
import co.nilin.opex.api.core.spi.AccountantProxy
-import co.nilin.opex.port.api.binance.util.LoggerDelegate
+import co.nilin.opex.api.ports.binance.util.LoggerDelegate
import kotlinx.coroutines.reactive.awaitSingle
import org.springframework.beans.factory.annotation.Value
import org.springframework.core.ParameterizedTypeReference
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/BlockchainGatewayProxyImpl.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/BlockchainGatewayProxyImpl.kt
similarity index 95%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/BlockchainGatewayProxyImpl.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/BlockchainGatewayProxyImpl.kt
index 259de99a5..b6f9c5ca4 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/BlockchainGatewayProxyImpl.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/BlockchainGatewayProxyImpl.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.api.binance.proxy
+package co.nilin.opex.api.ports.binance.proxy
import co.nilin.opex.api.core.inout.AssignResponse
import co.nilin.opex.api.core.inout.DepositDetails
import co.nilin.opex.api.core.spi.BlockchainGatewayProxy
-import co.nilin.opex.port.api.binance.util.LoggerDelegate
+import co.nilin.opex.api.ports.binance.util.LoggerDelegate
import kotlinx.coroutines.reactive.awaitSingleOrElse
import kotlinx.coroutines.reactive.awaitSingleOrNull
import org.springframework.beans.factory.annotation.Value
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/MEGatewayProxyImpl.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/MEGatewayProxyImpl.kt
similarity index 95%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/MEGatewayProxyImpl.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/MEGatewayProxyImpl.kt
index 4b1433cd7..b3b27337b 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/MEGatewayProxyImpl.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/MEGatewayProxyImpl.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.api.binance.proxy
+package co.nilin.opex.api.ports.binance.proxy
import co.nilin.opex.api.core.inout.CancelOrderRequest
import co.nilin.opex.api.core.inout.OrderSubmitResult
import co.nilin.opex.api.core.spi.MEGatewayProxy
-import co.nilin.opex.port.api.binance.util.LoggerDelegate
+import co.nilin.opex.api.ports.binance.util.LoggerDelegate
import kotlinx.coroutines.reactive.awaitSingleOrNull
import org.springframework.beans.factory.annotation.Value
import org.springframework.core.ParameterizedTypeReference
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/WalletProxyImpl.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/WalletProxyImpl.kt
similarity index 93%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/WalletProxyImpl.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/WalletProxyImpl.kt
index fd076c031..e2b1f6644 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/proxy/WalletProxyImpl.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/proxy/WalletProxyImpl.kt
@@ -1,12 +1,12 @@
-package co.nilin.opex.port.api.binance.proxy
+package co.nilin.opex.api.ports.binance.proxy
import co.nilin.opex.api.core.inout.OwnerLimitsResponse
import co.nilin.opex.api.core.inout.TransactionHistoryResponse
import co.nilin.opex.api.core.inout.Wallet
import co.nilin.opex.api.core.inout.WithdrawHistoryResponse
import co.nilin.opex.api.core.spi.WalletProxy
-import co.nilin.opex.port.api.binance.data.TransactionRequest
-import co.nilin.opex.port.api.binance.util.LoggerDelegate
+import co.nilin.opex.api.ports.binance.data.TransactionRequest
+import co.nilin.opex.api.ports.binance.util.LoggerDelegate
import kotlinx.coroutines.reactive.awaitFirstOrElse
import kotlinx.coroutines.reactive.awaitSingle
import org.springframework.beans.factory.annotation.Value
@@ -17,8 +17,6 @@ import org.springframework.stereotype.Component
import org.springframework.web.reactive.function.client.WebClient
import org.springframework.web.reactive.function.client.body
import reactor.core.publisher.Mono
-import java.math.BigDecimal
-import java.time.LocalDateTime
private inline fun typeRef(): ParameterizedTypeReference =
object : ParameterizedTypeReference() {}
@@ -59,7 +57,7 @@ class WalletProxyImpl(private val webClient: WebClient) : WalletProxy {
override suspend fun getDepositTransactions(
uuid: String,
token: String?,
- coin:String?,
+ coin: String?,
startTime: Long,
endTime: Long,
limit: Int,
@@ -81,7 +79,7 @@ class WalletProxyImpl(private val webClient: WebClient) : WalletProxy {
override suspend fun getWithdrawTransactions(
uuid: String,
token: String?,
- coin:String?,
+ coin: String?,
startTime: Long,
endTime: Long,
limit: Int,
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/BalanceParser.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/BalanceParser.kt
similarity index 88%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/BalanceParser.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/BalanceParser.kt
index e5fce23d3..e257a1517 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/BalanceParser.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/BalanceParser.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.api.binance.util
+package co.nilin.opex.api.ports.binance.util
import co.nilin.opex.api.core.inout.Wallet
-import co.nilin.opex.port.api.binance.data.BalanceResponse
+import co.nilin.opex.api.ports.binance.data.BalanceResponse
import java.math.BigDecimal
object BalanceParser {
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/EnumExtensions.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/EnumExtensions.kt
similarity index 80%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/EnumExtensions.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/EnumExtensions.kt
index 9f1c1974f..546cc78c0 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/EnumExtensions.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/EnumExtensions.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.port.api.binance.util
+package co.nilin.opex.api.ports.binance.util
import co.nilin.opex.api.core.inout.OrderSide
import co.nilin.opex.api.core.inout.TimeInForce
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderType
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
fun OrderSide.asOrderDirection(): OrderDirection {
if (this == OrderSide.BUY)
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/LoggerDelegate.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/LoggerDelegate.kt
similarity index 92%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/LoggerDelegate.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/LoggerDelegate.kt
index 4f64aa4d2..85bb44abc 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/LoggerDelegate.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/LoggerDelegate.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.util
+package co.nilin.opex.api.ports.binance.util
import org.slf4j.Logger
import org.slf4j.LoggerFactory
diff --git a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/SecurityExtension.kt b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/SecurityExtension.kt
similarity index 81%
rename from Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/SecurityExtension.kt
rename to api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/SecurityExtension.kt
index 5b043512f..3cd8a43ca 100644
--- a/Api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/port/api/binance/util/SecurityExtension.kt
+++ b/api/api-ports/api-binance-rest/src/main/kotlin/co/nilin/opex/api/ports/binance/util/SecurityExtension.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.binance.util
+package co.nilin.opex.api.ports.binance.util
import org.springframework.security.core.context.SecurityContext
import org.springframework.security.oauth2.server.resource.authentication.JwtAuthenticationToken
@@ -8,5 +8,5 @@ fun SecurityContext.jwtAuthentication(): JwtAuthenticationToken {
}
fun JwtAuthenticationToken.tokenValue(): String {
- return this.token.tokenValue
+ return this.token.tokenValue
}
\ No newline at end of file
diff --git a/Api/api-ports/api-eventlistener-kafka/mvnw b/api/api-ports/api-eventlistener-kafka/mvnw
similarity index 100%
rename from Api/api-ports/api-eventlistener-kafka/mvnw
rename to api/api-ports/api-eventlistener-kafka/mvnw
diff --git a/Api/api-ports/api-eventlistener-kafka/mvnw.cmd b/api/api-ports/api-eventlistener-kafka/mvnw.cmd
similarity index 100%
rename from Api/api-ports/api-eventlistener-kafka/mvnw.cmd
rename to api/api-ports/api-eventlistener-kafka/mvnw.cmd
diff --git a/api/api-ports/api-eventlistener-kafka/pom.xml b/api/api-ports/api-eventlistener-kafka/pom.xml
new file mode 100644
index 000000000..4763cdd35
--- /dev/null
+++ b/api/api-ports/api-eventlistener-kafka/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.api
+ api
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.api.ports.kafka.listener
+ api-eventlistener-kafka
+ api-eventlistener-kafka
+ Api kafka listener of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ co.nilin.opex.api.core
+ api-core
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
diff --git a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/config/ApiKafkaConfig.kt b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/config/ApiKafkaConfig.kt
similarity index 83%
rename from Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/config/ApiKafkaConfig.kt
rename to api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/config/ApiKafkaConfig.kt
index 5269d6acf..a8bf6a06e 100644
--- a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/config/ApiKafkaConfig.kt
+++ b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/config/ApiKafkaConfig.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.api.kafka.config
+package co.nilin.opex.api.ports.kafka.listener.config
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.api.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.api.kafka.consumer.EventKafkaListener
-import co.nilin.opex.port.api.kafka.consumer.TradeKafkaListener
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.api.ports.kafka.listener.consumer.EventKafkaListener
+import co.nilin.opex.api.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.api.ports.kafka.listener.consumer.TradeKafkaListener
import org.apache.kafka.clients.admin.NewTopic
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.clients.producer.ProducerConfig
@@ -69,7 +69,10 @@ class ApiKafkaConfig {
@Autowired
@ConditionalOnBean(TradeKafkaListener::class)
- fun configureTradeListener(tradeListener: TradeKafkaListener, @Qualifier("apiConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureTradeListener(
+ tradeListener: TradeKafkaListener,
+ @Qualifier("apiConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("richTrade"))
containerProps.messageListener = tradeListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
@@ -79,7 +82,10 @@ class ApiKafkaConfig {
@Autowired
@ConditionalOnBean(EventKafkaListener::class)
- fun configureEventListener(eventListener: EventKafkaListener, @Qualifier("apiConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureEventListener(
+ eventListener: EventKafkaListener,
+ @Qualifier("apiConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("events_.*"))
containerProps.messageListener = eventListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
@@ -89,7 +95,10 @@ class ApiKafkaConfig {
@Autowired
@ConditionalOnBean(OrderKafkaListener::class)
- fun configureOrderListener(orderListener: OrderKafkaListener, @Qualifier("apiConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureOrderListener(
+ orderListener: OrderKafkaListener,
+ @Qualifier("apiConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("richOrder"))
containerProps.messageListener = orderListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
diff --git a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/EventKafkaListener.kt b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/EventKafkaListener.kt
similarity index 79%
rename from Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/EventKafkaListener.kt
rename to api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/EventKafkaListener.kt
index a5aafc0e0..8c4320ed6 100644
--- a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/EventKafkaListener.kt
+++ b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/EventKafkaListener.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.api.kafka.consumer
+package co.nilin.opex.api.ports.kafka.listener.consumer
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.api.kafka.spi.EventListener
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.api.ports.kafka.listener.spi.EventListener
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.listener.MessageListener
import org.springframework.stereotype.Component
diff --git a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/consumer/OrderKafkaListener.kt b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/OrderKafkaListener.kt
similarity index 86%
rename from Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/consumer/OrderKafkaListener.kt
rename to api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/OrderKafkaListener.kt
index e9879e2ff..212dc6afb 100644
--- a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/consumer/OrderKafkaListener.kt
+++ b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/OrderKafkaListener.kt
@@ -1,20 +1,19 @@
-package co.nilin.opex.port.websocket.kafka.consumer
+package co.nilin.opex.api.ports.kafka.listener.consumer
import co.nilin.opex.accountant.core.inout.RichOrder
-import co.nilin.opex.port.websocket.kafka.spi.RichOrderListener
+import co.nilin.opex.api.ports.kafka.listener.spi.RichOrderListener
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.listener.MessageListener
import org.springframework.stereotype.Component
@Component
class OrderKafkaListener : MessageListener {
-
val orderListeners = arrayListOf()
-
override fun onMessage(data: ConsumerRecord) {
orderListeners.forEach { tl ->
tl.onOrder(data.value(), data.partition(), data.offset(), data.timestamp())
}
+
}
fun addOrderListener(tl: RichOrderListener) {
diff --git a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/consumer/TradeKafkaListener.kt b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/TradeKafkaListener.kt
similarity index 86%
rename from Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/consumer/TradeKafkaListener.kt
rename to api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/TradeKafkaListener.kt
index 7072951cd..ace560b20 100644
--- a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/consumer/TradeKafkaListener.kt
+++ b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/consumer/TradeKafkaListener.kt
@@ -1,16 +1,14 @@
-package co.nilin.opex.port.websocket.kafka.consumer
+package co.nilin.opex.api.ports.kafka.listener.consumer
import co.nilin.opex.accountant.core.inout.RichTrade
-import co.nilin.opex.port.websocket.kafka.spi.RichTradeListener
+import co.nilin.opex.api.ports.kafka.listener.spi.RichTradeListener
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.listener.MessageListener
import org.springframework.stereotype.Component
@Component
class TradeKafkaListener : MessageListener {
-
val tradeListeners = arrayListOf()
-
override fun onMessage(data: ConsumerRecord) {
tradeListeners.forEach { tl ->
tl.onTrade(data.value(), data.partition(), data.offset(), data.timestamp())
diff --git a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/EventListener.kt b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/EventListener.kt
similarity index 53%
rename from Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/EventListener.kt
rename to api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/EventListener.kt
index b8e111a40..e98cc1212 100644
--- a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/EventListener.kt
+++ b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/EventListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.websocket.kafka.spi
+package co.nilin.opex.api.ports.kafka.listener.spi
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
interface EventListener {
diff --git a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/RichOrderListener.kt b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/RichOrderListener.kt
similarity index 78%
rename from Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/RichOrderListener.kt
rename to api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/RichOrderListener.kt
index 75f759d06..31bf82954 100644
--- a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/RichOrderListener.kt
+++ b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/RichOrderListener.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.kafka.spi
+package co.nilin.opex.api.ports.kafka.listener.spi
import co.nilin.opex.accountant.core.inout.RichOrder
diff --git a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/RichTradeListener.kt b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/RichTradeListener.kt
similarity index 78%
rename from Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/RichTradeListener.kt
rename to api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/RichTradeListener.kt
index b6c596c4f..de14026e7 100644
--- a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/RichTradeListener.kt
+++ b/api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/api/ports/kafka/listener/spi/RichTradeListener.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.kafka.spi
+package co.nilin.opex.api.ports.kafka.listener.spi
import co.nilin.opex.accountant.core.inout.RichTrade
diff --git a/Api/api-ports/api-persister-postgres/mvnw b/api/api-ports/api-persister-postgres/mvnw
similarity index 100%
rename from Api/api-ports/api-persister-postgres/mvnw
rename to api/api-ports/api-persister-postgres/mvnw
diff --git a/Api/api-ports/api-persister-postgres/mvnw.cmd b/api/api-ports/api-persister-postgres/mvnw.cmd
similarity index 100%
rename from Api/api-ports/api-persister-postgres/mvnw.cmd
rename to api/api-ports/api-persister-postgres/mvnw.cmd
diff --git a/Api/api-ports/api-persister-postgres/pom.xml b/api/api-ports/api-persister-postgres/pom.xml
similarity index 51%
rename from Api/api-ports/api-persister-postgres/pom.xml
rename to api/api-ports/api-persister-postgres/pom.xml
index 3beabdc05..2de1d476c 100644
--- a/Api/api-ports/api-persister-postgres/pom.xml
+++ b/api/api-ports/api-persister-postgres/pom.xml
@@ -2,51 +2,39 @@
4.0.0
+
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
+ co.nilin.opex.api
+ api
+ 1.0-SNAPSHOT
+ ../../pom.xml
- co.nilin.opex
+
+ co.nilin.opex.api.ports.postgres
api-persister-postgres
- 1.0-SNAPSHOT
api-persister-postgres
Persist items of Opex api on Postgres
-
- 1.8
- 1.4.31
- ${version}
- ${version}
- ${version}
- ${version}
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
+ org.jetbrains.kotlin
+ kotlin-reflect
- co.nilin.opex
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.api.core
api-core
- ${api.version}
- provided
- co.nilin.opex
+ co.nilin.opex.accountant.core
accountant-core
- ${accountant.version}
- provided
- co.nilin.opex
+ co.nilin.opex.utility.error
error-handler
- ${utility.version}
- provided
org.springframework.boot
@@ -62,24 +50,14 @@
postgresql
runtime
-
io.projectreactor.kotlin
reactor-kotlin-extensions
-
- org.jetbrains.kotlin
- kotlin-reflect
-
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
org.jetbrains.kotlinx
kotlinx-coroutines-reactor
-
org.jetbrains.kotlinx
kotlinx-coroutines-core
@@ -95,32 +73,6 @@
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
spring-milestones
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/config/PostgresConfig.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/config/PostgresConfig.kt
similarity index 95%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/config/PostgresConfig.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/config/PostgresConfig.kt
index 66bed60b5..a2924ed23 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/config/PostgresConfig.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/config/PostgresConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.postgres.config
+package co.nilin.opex.api.ports.postgres.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Configuration
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/OrderRepository.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/OrderRepository.kt
similarity index 95%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/OrderRepository.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/OrderRepository.kt
index 1c3824c93..b8c6b7cb7 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/OrderRepository.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/OrderRepository.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.api.postgres.dao
+package co.nilin.opex.api.ports.postgres.dao
-import co.nilin.opex.matching.core.model.OrderDirection
import co.nilin.opex.api.core.inout.AggregatedOrderPriceModel
-import co.nilin.opex.port.api.postgres.model.OrderModel
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.api.ports.postgres.model.OrderModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/SymbolMapRepository.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/SymbolMapRepository.kt
similarity index 85%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/SymbolMapRepository.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/SymbolMapRepository.kt
index 1a1d7dcf6..4bc30a34a 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/SymbolMapRepository.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/SymbolMapRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.api.postgres.dao
+package co.nilin.opex.api.ports.postgres.dao
-import co.nilin.opex.port.api.postgres.model.SymbolMapModel
+import co.nilin.opex.api.ports.postgres.model.SymbolMapModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/TradeRepository.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/TradeRepository.kt
similarity index 97%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/TradeRepository.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/TradeRepository.kt
index aa95c6b09..7ec090bf4 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/dao/TradeRepository.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/dao/TradeRepository.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.api.postgres.dao
+package co.nilin.opex.api.ports.postgres.dao
-import co.nilin.opex.port.api.postgres.model.CandleInfoData
-import co.nilin.opex.port.api.postgres.model.TradeModel
-import co.nilin.opex.port.api.postgres.model.TradeTickerData
+import co.nilin.opex.api.ports.postgres.model.CandleInfoData
+import co.nilin.opex.api.ports.postgres.model.TradeModel
+import co.nilin.opex.api.ports.postgres.model.TradeTickerData
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/MarketQueryHandlerImpl.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/MarketQueryHandlerImpl.kt
similarity index 94%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/MarketQueryHandlerImpl.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/MarketQueryHandlerImpl.kt
index 211087e87..3949cac00 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/MarketQueryHandlerImpl.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/MarketQueryHandlerImpl.kt
@@ -1,21 +1,20 @@
-package co.nilin.opex.port.api.postgres.impl
+package co.nilin.opex.api.ports.postgres.impl
import co.nilin.opex.api.core.inout.*
import co.nilin.opex.api.core.spi.MarketQueryHandler
import co.nilin.opex.api.core.spi.SymbolMapper
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.port.api.postgres.dao.OrderRepository
-import co.nilin.opex.port.api.postgres.dao.TradeRepository
-import co.nilin.opex.port.api.postgres.model.OrderModel
-import co.nilin.opex.port.api.postgres.model.TradeTickerData
-import co.nilin.opex.port.api.postgres.util.*
+import co.nilin.opex.api.ports.postgres.dao.OrderRepository
+import co.nilin.opex.api.ports.postgres.dao.TradeRepository
+import co.nilin.opex.api.ports.postgres.model.OrderModel
+import co.nilin.opex.api.ports.postgres.model.TradeTickerData
+import co.nilin.opex.api.ports.postgres.util.*
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.reactive.awaitFirstOrElse
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
-import java.lang.Exception
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/OrderPersisterImpl.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/OrderPersisterImpl.kt
similarity index 95%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/OrderPersisterImpl.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/OrderPersisterImpl.kt
index 6c4f76b64..2cac898de 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/OrderPersisterImpl.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/OrderPersisterImpl.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.port.api.postgres.impl
+package co.nilin.opex.api.ports.postgres.impl
import co.nilin.opex.accountant.core.inout.RichOrder
import co.nilin.opex.accountant.core.inout.comesAfter
import co.nilin.opex.api.core.spi.OrderPersister
-import co.nilin.opex.port.api.postgres.dao.OrderRepository
-import co.nilin.opex.port.api.postgres.model.OrderModel
+import co.nilin.opex.api.ports.postgres.dao.OrderRepository
+import co.nilin.opex.api.ports.postgres.model.OrderModel
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
import java.time.LocalDateTime
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/SymbolMapperImpl.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/SymbolMapperImpl.kt
similarity index 89%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/SymbolMapperImpl.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/SymbolMapperImpl.kt
index 5f6795eb4..d8f462be7 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/SymbolMapperImpl.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/SymbolMapperImpl.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.api.postgres.impl
+package co.nilin.opex.api.ports.postgres.impl
import co.nilin.opex.api.core.spi.SymbolMapper
-import co.nilin.opex.port.api.postgres.dao.SymbolMapRepository
+import co.nilin.opex.api.ports.postgres.dao.SymbolMapRepository
import kotlinx.coroutines.reactive.awaitFirstOrElse
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/TradePersisterImpl.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/TradePersisterImpl.kt
similarity index 95%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/TradePersisterImpl.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/TradePersisterImpl.kt
index 064911e72..f4c34149e 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/TradePersisterImpl.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/TradePersisterImpl.kt
@@ -1,13 +1,13 @@
-package co.nilin.opex.port.api.postgres.impl
+package co.nilin.opex.api.ports.postgres.impl
import co.nilin.opex.accountant.core.inout.OrderStatus
import co.nilin.opex.accountant.core.inout.RichTrade
import co.nilin.opex.accountant.core.inout.comesBefore
import co.nilin.opex.api.core.spi.TradePersister
-import co.nilin.opex.port.api.postgres.dao.OrderRepository
-import co.nilin.opex.port.api.postgres.dao.TradeRepository
-import co.nilin.opex.port.api.postgres.model.OrderModel
-import co.nilin.opex.port.api.postgres.model.TradeModel
+import co.nilin.opex.api.ports.postgres.dao.OrderRepository
+import co.nilin.opex.api.ports.postgres.dao.TradeRepository
+import co.nilin.opex.api.ports.postgres.model.OrderModel
+import co.nilin.opex.api.ports.postgres.model.TradeModel
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
import org.springframework.transaction.annotation.Transactional
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/UserQueryHandlerImpl.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/UserQueryHandlerImpl.kt
similarity index 93%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/UserQueryHandlerImpl.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/UserQueryHandlerImpl.kt
index 1b967dded..36cd34eaa 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/impl/UserQueryHandlerImpl.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/impl/UserQueryHandlerImpl.kt
@@ -1,13 +1,12 @@
-package co.nilin.opex.port.api.postgres.impl
+package co.nilin.opex.api.ports.postgres.impl
import co.nilin.opex.api.core.inout.*
import co.nilin.opex.api.core.spi.UserQueryHandler
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.port.api.postgres.dao.OrderRepository
-import co.nilin.opex.port.api.postgres.dao.TradeRepository
-import co.nilin.opex.port.api.postgres.model.OrderModel
-import co.nilin.opex.port.api.postgres.util.*
-import co.nilin.opex.api.core.inout.*
+import co.nilin.opex.api.ports.postgres.dao.OrderRepository
+import co.nilin.opex.api.ports.postgres.dao.TradeRepository
+import co.nilin.opex.api.ports.postgres.model.OrderModel
+import co.nilin.opex.api.ports.postgres.util.*
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import co.nilin.opex.utility.error.data.OpexError
import co.nilin.opex.utility.error.data.OpexException
import kotlinx.coroutines.flow.Flow
@@ -16,7 +15,6 @@ import kotlinx.coroutines.flow.map
import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
-import java.math.BigDecimal
import java.security.Principal
import java.time.ZoneId
import java.util.*
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/CandleInfoData.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/CandleInfoData.kt
similarity index 88%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/CandleInfoData.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/CandleInfoData.kt
index a8d929499..fb41f988b 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/CandleInfoData.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/CandleInfoData.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.postgres.model
+package co.nilin.opex.api.ports.postgres.model
import org.springframework.data.relational.core.mapping.Column
import java.time.LocalDateTime
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/OrderModel.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/OrderModel.kt
similarity index 86%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/OrderModel.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/OrderModel.kt
index 81d653c97..987a9e264 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/OrderModel.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/OrderModel.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.api.postgres.model
+package co.nilin.opex.api.ports.postgres.model
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
import org.springframework.data.annotation.Id
import org.springframework.data.annotation.Version
import org.springframework.data.relational.core.mapping.Column
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/SymbolMapModel.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/SymbolMapModel.kt
similarity index 85%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/SymbolMapModel.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/SymbolMapModel.kt
index d43ee4e63..5897724ee 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/SymbolMapModel.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/SymbolMapModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.postgres.model
+package co.nilin.opex.api.ports.postgres.model
import org.springframework.data.annotation.Id
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/TradeModel.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/TradeModel.kt
similarity index 95%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/TradeModel.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/TradeModel.kt
index 1fc1206cd..55cbd97c2 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/TradeModel.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/TradeModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.postgres.model
+package co.nilin.opex.api.ports.postgres.model
import org.springframework.data.annotation.Id
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/TradeTickerData.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/TradeTickerData.kt
similarity index 94%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/TradeTickerData.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/TradeTickerData.kt
index c0e7bdd79..ee5f6dd42 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/model/TradeTickerData.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/model/TradeTickerData.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.postgres.model
+package co.nilin.opex.api.ports.postgres.model
import org.springframework.data.relational.core.mapping.Column
diff --git a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/util/EnumExtensions.kt b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/util/EnumExtensions.kt
similarity index 84%
rename from Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/util/EnumExtensions.kt
rename to api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/util/EnumExtensions.kt
index 8c993b8db..dc02cea43 100644
--- a/Api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/port/api/postgres/util/EnumExtensions.kt
+++ b/api/api-ports/api-persister-postgres/src/main/kotlin/co/nilin/opex/api/ports/postgres/util/EnumExtensions.kt
@@ -1,11 +1,11 @@
-package co.nilin.opex.port.api.postgres.util
+package co.nilin.opex.api.ports.postgres.util
import co.nilin.opex.api.core.inout.OrderSide
import co.nilin.opex.api.core.inout.OrderStatus
import co.nilin.opex.api.core.inout.TimeInForce
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
fun MatchConstraint.toTimeInForce(): TimeInForce {
if (this == MatchConstraint.FOK_BUDGET)
diff --git a/Api/api-ports/api-persister-postgres/src/main/resources/data.sql b/api/api-ports/api-persister-postgres/src/main/resources/data.sql
similarity index 100%
rename from Api/api-ports/api-persister-postgres/src/main/resources/data.sql
rename to api/api-ports/api-persister-postgres/src/main/resources/data.sql
diff --git a/Api/api-ports/api-persister-postgres/src/main/resources/schema.sql b/api/api-ports/api-persister-postgres/src/main/resources/schema.sql
similarity index 100%
rename from Api/api-ports/api-persister-postgres/src/main/resources/schema.sql
rename to api/api-ports/api-persister-postgres/src/main/resources/schema.sql
diff --git a/api/pom.xml b/api/pom.xml
new file mode 100644
index 000000000..d5b6f4589
--- /dev/null
+++ b/api/pom.xml
@@ -0,0 +1,82 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.api
+ api
+ api
+ pom
+ Api root of Opex
+
+
+ api-core
+ api-app
+ api-ports/api-persister-postgres
+ api-ports/api-binance-rest
+ api-ports/api-eventlistener-kafka
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+ ${project.version}
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+ ${project.version}
+
+
+ co.nilin.opex.api.core
+ api-core
+ ${project.version}
+
+
+ co.nilin.opex.api.ports.kafka.listener
+ api-eventlistener-kafka
+ ${project.version}
+
+
+ co.nilin.opex.api.ports.binance
+ api-binance-rest
+ ${project.version}
+
+
+ co.nilin.opex.api.ports.postgres
+ api-persister-postgres
+ ${project.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ ${project.version}
+
+
+
+
diff --git a/BlockchainGateway/bc-gateway-app/Dockerfile b/bc-gateway/bc-gateway-app/Dockerfile
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/Dockerfile
rename to bc-gateway/bc-gateway-app/Dockerfile
diff --git a/BlockchainGateway/bc-gateway-app/mvnw b/bc-gateway/bc-gateway-app/mvnw
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/mvnw
rename to bc-gateway/bc-gateway-app/mvnw
diff --git a/BlockchainGateway/bc-gateway-app/mvnw.cmd b/bc-gateway/bc-gateway-app/mvnw.cmd
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/mvnw.cmd
rename to bc-gateway/bc-gateway-app/mvnw.cmd
diff --git a/bc-gateway/bc-gateway-app/pom.xml b/bc-gateway/bc-gateway-app/pom.xml
new file mode 100644
index 000000000..3bbcc3e7c
--- /dev/null
+++ b/bc-gateway/bc-gateway-app/pom.xml
@@ -0,0 +1,116 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.bcgateway
+ bc-gateway
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.bcgateway.app
+ bc-gateway-app
+ bc-gateway-app
+ Blockchain gateway app of Opex
+
+
+ 2020.0.2
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-resource-server
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+ 1.60
+
+
+ co.nilin.opex.bcgateway.core
+ bc-gateway-core
+
+
+ co.nilin.opex.bcgateway.ports.postgres
+ bc-gateway-persister-postgres
+
+
+ co.nilin.opex.bcgateway.ports.walletproxy
+ bc-gateway-wallet-proxy
+
+
+ io.springfox
+ springfox-boot-starter
+ 3.0.0
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/BCGatewayApp.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/BCGatewayApp.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/BCGatewayApp.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/BCGatewayApp.kt
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/AppConfig.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/AppConfig.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/AppConfig.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/AppConfig.kt
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/AppDispatchers.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/AppDispatchers.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/AppDispatchers.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/AppDispatchers.kt
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SecurityConfig.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SecurityConfig.kt
similarity index 80%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SecurityConfig.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SecurityConfig.kt
index d6340e9d9..02bd1b3db 100644
--- a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SecurityConfig.kt
+++ b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SecurityConfig.kt
@@ -19,13 +19,13 @@ class SecurityConfig(@Qualifier("loadBalanced") private val webClient: WebClient
@Bean
fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain? {
http.csrf().disable()
- .authorizeExchange()
- .pathMatchers("/filter/**").hasAuthority("SCOPE_trust")
- .pathMatchers("/**").permitAll()
- .anyExchange().authenticated()
- .and()
- .oauth2ResourceServer()
- .jwt()
+ .authorizeExchange()
+ .pathMatchers("/filter/**").hasAuthority("SCOPE_trust")
+ .pathMatchers("/**").permitAll()
+ .anyExchange().authenticated()
+ .and()
+ .oauth2ResourceServer()
+ .jwt()
return http.build()
}
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SwaggerConfig.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SwaggerConfig.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SwaggerConfig.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/SwaggerConfig.kt
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/WebClientConfig.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/WebClientConfig.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/WebClientConfig.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/config/WebClientConfig.kt
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt
similarity index 93%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt
index ea25f2ca4..e505b99ba 100644
--- a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt
+++ b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/AddressController.kt
@@ -16,7 +16,8 @@ class AddressController(val assignAddressService: AssignAddressService) {
@PostMapping("/address/assign")
suspend fun assignAddress(@RequestBody assignAddressRequest: AssignAddressRequest): AssignAddressResponse {
val assignedAddress = assignAddressService
- .assignAddress(assignAddressRequest.uuid,
+ .assignAddress(
+ assignAddressRequest.uuid,
Currency(assignAddressRequest.currency, assignAddressRequest.currency)
)
return AssignAddressResponse(assignedAddress)
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/DepositController.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/DepositController.kt
similarity index 96%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/DepositController.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/DepositController.kt
index fb900032d..50e2f639e 100644
--- a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/DepositController.kt
+++ b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/DepositController.kt
@@ -1,7 +1,6 @@
package co.nilin.opex.bcgateway.app.controller
import co.nilin.opex.bcgateway.core.api.DepositService
-import co.nilin.opex.bcgateway.core.model.Deposit
import org.springframework.web.bind.annotation.PostMapping
import org.springframework.web.bind.annotation.RequestBody
import org.springframework.web.bind.annotation.RestController
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/NetworkController.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/NetworkController.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/NetworkController.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/controller/NetworkController.kt
diff --git a/BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/service/ScheduleService.kt b/bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/service/ScheduleService.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/service/ScheduleService.kt
rename to bc-gateway/bc-gateway-app/src/main/kotlin/co/nilin/opex/bcgateway/app/service/ScheduleService.kt
diff --git a/BlockchainGateway/bc-gateway-app/src/main/resources/application-docker.yml b/bc-gateway/bc-gateway-app/src/main/resources/application-docker.yml
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/resources/application-docker.yml
rename to bc-gateway/bc-gateway-app/src/main/resources/application-docker.yml
diff --git a/BlockchainGateway/bc-gateway-app/src/main/resources/application.yml b/bc-gateway/bc-gateway-app/src/main/resources/application.yml
similarity index 100%
rename from BlockchainGateway/bc-gateway-app/src/main/resources/application.yml
rename to bc-gateway/bc-gateway-app/src/main/resources/application.yml
diff --git a/BlockchainGateway/bc-gateway-core/mvnw b/bc-gateway/bc-gateway-core/mvnw
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/mvnw
rename to bc-gateway/bc-gateway-core/mvnw
diff --git a/BlockchainGateway/bc-gateway-core/mvnw.cmd b/bc-gateway/bc-gateway-core/mvnw.cmd
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/mvnw.cmd
rename to bc-gateway/bc-gateway-core/mvnw.cmd
diff --git a/bc-gateway/bc-gateway-core/pom.xml b/bc-gateway/bc-gateway-core/pom.xml
new file mode 100644
index 000000000..fa6b76aa0
--- /dev/null
+++ b/bc-gateway/bc-gateway-core/pom.xml
@@ -0,0 +1,57 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.bcgateway
+ bc-gateway
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.bcgateway.core
+ bc-gateway-core
+ bc-gateway-core
+ Blockchain gateway core of Opex
+
+
+ 3.2.0
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework
+ spring-tx
+ provided
+
+
+ org.mockito.kotlin
+ mockito-kotlin
+ ${mockito-kotlin.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+
+
+
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/AssignAddressService.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/AssignAddressService.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/AssignAddressService.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/AssignAddressService.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/ChainSyncService.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/ChainSyncService.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/ChainSyncService.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/ChainSyncService.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/DepositService.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/DepositService.kt
similarity index 64%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/DepositService.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/DepositService.kt
index 428353fed..7cc723693 100644
--- a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/DepositService.kt
+++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/DepositService.kt
@@ -4,6 +4,6 @@ import co.nilin.opex.bcgateway.core.model.Deposit
interface DepositService {
- suspend fun getDepositDetails(refs:List):List
+ suspend fun getDepositDetails(refs: List): List
}
\ No newline at end of file
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/InfoService.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/InfoService.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/InfoService.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/InfoService.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/WalletSyncService.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/WalletSyncService.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/WalletSyncService.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/api/WalletSyncService.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Address.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Address.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Address.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Address.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Chain.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Chain.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Chain.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Chain.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Currency.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Currency.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Currency.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Currency.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Deposit.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Deposit.kt
similarity index 92%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Deposit.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Deposit.kt
index ec5ac036f..ab9560eb6 100644
--- a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Deposit.kt
+++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/Deposit.kt
@@ -4,7 +4,7 @@ import java.math.BigDecimal
data class Deposit(
val id: Long?,
- val hash:String,
+ val hash: String,
val depositor: String,
val depositorMemo: String?,
val amount: BigDecimal,
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/DepositResult.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/DepositResult.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/DepositResult.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/DepositResult.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/WalletSync.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/WalletSync.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/WalletSync.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/model/WalletSync.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImpl.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImpl.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImpl.kt
similarity index 95%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImpl.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImpl.kt
index f4e5d7fd9..2f5bd9a21 100644
--- a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImpl.kt
+++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImpl.kt
@@ -2,7 +2,9 @@ package co.nilin.opex.bcgateway.core.service
import co.nilin.opex.bcgateway.core.api.ChainSyncService
import co.nilin.opex.bcgateway.core.spi.*
-import kotlinx.coroutines.*
+import kotlinx.coroutines.ExecutorCoroutineDispatcher
+import kotlinx.coroutines.async
+import kotlinx.coroutines.withContext
import org.slf4j.LoggerFactory
import org.springframework.transaction.reactive.TransactionalOperator
import org.springframework.transaction.reactive.executeAndAwait
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/DepositServiceImpl.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/DepositServiceImpl.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/DepositServiceImpl.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/DepositServiceImpl.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/InfoServiceImpl.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/InfoServiceImpl.kt
similarity index 89%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/InfoServiceImpl.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/InfoServiceImpl.kt
index e600f2369..3d604f4ee 100644
--- a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/InfoServiceImpl.kt
+++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/InfoServiceImpl.kt
@@ -3,7 +3,7 @@ package co.nilin.opex.bcgateway.core.service
import co.nilin.opex.bcgateway.core.api.InfoService
import co.nilin.opex.bcgateway.core.model.CurrencyInfo
-class InfoServiceImpl: InfoService {
+class InfoServiceImpl : InfoService {
override suspend fun countReservedAddresses(): Long {
TODO()
}
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/WalletSyncServiceImpl.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/WalletSyncServiceImpl.kt
similarity index 95%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/WalletSyncServiceImpl.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/WalletSyncServiceImpl.kt
index 575d0c992..a43f688b2 100644
--- a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/WalletSyncServiceImpl.kt
+++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/service/WalletSyncServiceImpl.kt
@@ -5,7 +5,10 @@ import co.nilin.opex.bcgateway.core.model.CurrencyImplementation
import co.nilin.opex.bcgateway.core.model.Deposit
import co.nilin.opex.bcgateway.core.model.WalletSyncRecord
import co.nilin.opex.bcgateway.core.spi.*
-import kotlinx.coroutines.*
+import kotlinx.coroutines.ExecutorCoroutineDispatcher
+import kotlinx.coroutines.async
+import kotlinx.coroutines.awaitAll
+import kotlinx.coroutines.withContext
import org.slf4j.LoggerFactory
import java.math.BigDecimal
import java.time.LocalDateTime
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/AssignedAddressHandler.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/AssignedAddressHandler.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/AssignedAddressHandler.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/AssignedAddressHandler.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxy.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxy.kt
similarity index 99%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxy.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxy.kt
index b73d94eec..51d3d7691 100644
--- a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxy.kt
+++ b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxy.kt
@@ -4,5 +4,6 @@ import co.nilin.opex.bcgateway.core.model.ChainSyncRecord
interface ChainEndpointProxy {
data class DepositFilter(val startBlock: Long?, val endBlock: Long?, val tokenAddresses: List?)
+
suspend fun syncTransfers(filter: DepositFilter): ChainSyncRecord
}
\ No newline at end of file
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxyFinder.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxyFinder.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxyFinder.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainEndpointProxyFinder.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainLoader.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainLoader.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainLoader.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainLoader.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainSyncRecordHandler.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainSyncRecordHandler.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainSyncRecordHandler.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainSyncRecordHandler.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainSyncSchedulerHandler.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainSyncSchedulerHandler.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainSyncSchedulerHandler.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ChainSyncSchedulerHandler.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/CurrencyLoader.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/CurrencyLoader.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/CurrencyLoader.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/CurrencyLoader.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/DepositHandler.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/DepositHandler.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/DepositHandler.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/DepositHandler.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ReservedAddressHandler.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ReservedAddressHandler.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ReservedAddressHandler.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/ReservedAddressHandler.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletProxy.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletProxy.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletProxy.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletProxy.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletSyncRecordHandler.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletSyncRecordHandler.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletSyncRecordHandler.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletSyncRecordHandler.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletSyncSchedulerHandler.kt b/bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletSyncSchedulerHandler.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletSyncSchedulerHandler.kt
rename to bc-gateway/bc-gateway-core/src/main/kotlin/co/nilin/opex/bcgateway/core/spi/WalletSyncSchedulerHandler.kt
diff --git a/BlockchainGateway/bc-gateway-core/src/main/resources/application.properties b/bc-gateway/bc-gateway-core/src/main/resources/application.properties
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/main/resources/application.properties
rename to bc-gateway/bc-gateway-core/src/main/resources/application.properties
diff --git a/BlockchainGateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt
similarity index 93%
rename from BlockchainGateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt
rename to bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt
index db884b76b..ccd60628d 100644
--- a/BlockchainGateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt
+++ b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/AssignAddressServiceImplUnitTest.kt
@@ -1,24 +1,18 @@
package co.nilin.opex.bcgateway.core.service
-import co.nilin.opex.bcgateway.core.model.AddressType
-import co.nilin.opex.bcgateway.core.model.AssignedAddress
-import co.nilin.opex.bcgateway.core.model.ReservedAddress
-import co.nilin.opex.bcgateway.core.model.Chain
+import co.nilin.opex.bcgateway.core.model.*
import co.nilin.opex.bcgateway.core.model.Currency
-import co.nilin.opex.bcgateway.core.model.CurrencyImplementation
-import co.nilin.opex.bcgateway.core.model.CurrencyInfo
import co.nilin.opex.bcgateway.core.spi.AssignedAddressHandler
-import co.nilin.opex.bcgateway.core.spi.ReservedAddressHandler
import co.nilin.opex.bcgateway.core.spi.CurrencyLoader
-import java.lang.RuntimeException
-import java.math.BigDecimal
-import java.util.UUID
+import co.nilin.opex.bcgateway.core.spi.ReservedAddressHandler
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Assertions
import org.junit.jupiter.api.Test
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.MockitoAnnotations
+import java.math.BigDecimal
+import java.util.*
class AssignAddressServiceImplUnitTest {
@Mock
diff --git a/BlockchainGateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImplTest.kt b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImplTest.kt
similarity index 87%
rename from BlockchainGateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImplTest.kt
rename to bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImplTest.kt
index f9997357e..88f1c148a 100644
--- a/BlockchainGateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImplTest.kt
+++ b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/core/service/ChainSyncServiceImplTest.kt
@@ -3,27 +3,18 @@ package co.nilin.opex.bcgateway.core.service
import co.nilin.opex.bcgateway.core.model.ChainSyncRecord
import co.nilin.opex.bcgateway.core.model.ChainSyncSchedule
import co.nilin.opex.bcgateway.core.model.Endpoint
-import co.nilin.opex.bcgateway.core.spi.ChainEndpointProxy
-import co.nilin.opex.bcgateway.core.spi.ChainEndpointProxyFinder
-import co.nilin.opex.bcgateway.core.spi.CurrencyLoader
-import co.nilin.opex.bcgateway.core.spi.ChainSyncRecordHandler
-import co.nilin.opex.bcgateway.core.spi.ChainSyncSchedulerHandler
-import co.nilin.opex.bcgateway.core.spi.WalletSyncRecordHandler
+import co.nilin.opex.bcgateway.core.spi.*
import co.nilin.opex.bcgateway.test.OPERATOR
-import java.time.LocalDateTime
-import java.time.temporal.ChronoUnit
-import java.util.concurrent.Executors
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.runBlocking
import org.junit.jupiter.api.Test
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.MockitoAnnotations
-import org.mockito.kotlin.any
-import org.mockito.kotlin.mock
-import org.mockito.kotlin.times
-import org.mockito.kotlin.verify
-import org.mockito.kotlin.verifyZeroInteractions
+import org.mockito.kotlin.*
+import java.time.LocalDateTime
+import java.time.temporal.ChronoUnit
+import java.util.concurrent.Executors
internal class ChainSyncServiceImplTest {
@@ -109,7 +100,10 @@ internal class ChainSyncServiceImplTest {
//then
verify(chainSyncRecordHandler).saveSyncRecord(any())
verify(walletSyncRecordHandler).saveReadyToSyncTransfers(any(), any())
- verify(chainSyncSchedulerHandler).prepareScheduleForNextTry(syncSchedule, time.plus(delay, ChronoUnit.SECONDS))
+ verify(chainSyncSchedulerHandler).prepareScheduleForNextTry(
+ syncSchedule,
+ time.plus(delay, ChronoUnit.SECONDS)
+ )
}
}
diff --git a/BlockchainGateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/test/MockTxExtension.kt b/bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/test/MockTxExtension.kt
similarity index 100%
rename from BlockchainGateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/test/MockTxExtension.kt
rename to bc-gateway/bc-gateway-core/src/test/kotlin/co/nilin/opex/bcgateway/test/MockTxExtension.kt
diff --git a/bc-gateway/bc-gateway-ports/bc-gateway-chain-proxy/pom.xml b/bc-gateway/bc-gateway-ports/bc-gateway-chain-proxy/pom.xml
new file mode 100644
index 000000000..20a70023d
--- /dev/null
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-chain-proxy/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.bcgateway
+ bc-gateway
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.bcgateway.ports.chainproxy
+ bc-gateway-chain-proxy
+ bc-gateway-chain-proxy
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ co.nilin.opex.bcgateway.core
+ bc-gateway-core
+
+
+ org.springframework
+ spring-webflux
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/BlockchainGateway/bc-gateway-ports/bc-chain-proxy/src/main/kotlin/co.nilin.opex.port.bcgateway.chainproxy/impl/ChainEndpointProxyImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-chain-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/chainproxy/impl/ChainEndpointProxyImpl.kt
similarity index 97%
rename from BlockchainGateway/bc-gateway-ports/bc-chain-proxy/src/main/kotlin/co.nilin.opex.port.bcgateway.chainproxy/impl/ChainEndpointProxyImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-chain-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/chainproxy/impl/ChainEndpointProxyImpl.kt
index 8676a3240..5c1a27265 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-chain-proxy/src/main/kotlin/co.nilin.opex.port.bcgateway.chainproxy/impl/ChainEndpointProxyImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-chain-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/chainproxy/impl/ChainEndpointProxyImpl.kt
@@ -1,11 +1,10 @@
-package co.nilin.opex.port.bcgateway.chainproxy.impl
+package co.nilin.opex.bcgateway.ports.chainproxy.impl
import co.nilin.opex.bcgateway.core.model.ChainSyncRecord
import co.nilin.opex.bcgateway.core.model.Deposit
import co.nilin.opex.bcgateway.core.model.DepositResult
import co.nilin.opex.bcgateway.core.model.Endpoint
import co.nilin.opex.bcgateway.core.spi.ChainEndpointProxy
-import kotlinx.coroutines.reactive.awaitFirstOrElse
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.slf4j.LoggerFactory
import org.springframework.core.ParameterizedTypeReference
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/mvnw b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/mvnw
similarity index 100%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/mvnw
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/mvnw
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/mvnw.cmd b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/mvnw.cmd
similarity index 100%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/mvnw.cmd
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/mvnw.cmd
diff --git a/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/pom.xml b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/pom.xml
new file mode 100644
index 000000000..71489fadd
--- /dev/null
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/pom.xml
@@ -0,0 +1,71 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.bcgateway
+ bc-gateway
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.bcgateway.ports.postgres
+ bc-gateway-persister-postgres
+ bc-gateway-persister-postgres
+ Persist items of Opex blockchain gateway on Postgres
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter-data-r2dbc
+
+
+ io.r2dbc
+ r2dbc-postgresql
+ runtime
+
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ co.nilin.opex.bcgateway.core
+ bc-gateway-core
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+ co.nilin.opex.bcgateway.ports.chainproxy
+ bc-gateway-chain-proxy
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/config/PostgresConfig.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/config/PostgresConfig.kt
similarity index 94%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/config/PostgresConfig.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/config/PostgresConfig.kt
index 2171c8bcb..0b6367666 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/config/PostgresConfig.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/config/PostgresConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.config
+package co.nilin.opex.bcgateway.ports.postgres.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Configuration
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AddressTypeRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AddressTypeRepository.kt
similarity index 64%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AddressTypeRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AddressTypeRepository.kt
index 657a2caf4..67d76791d 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AddressTypeRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AddressTypeRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.AddressTypeModel
+import co.nilin.opex.bcgateway.ports.postgres.model.AddressTypeModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AssignedAddressChainRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AssignedAddressChainRepository.kt
similarity index 74%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AssignedAddressChainRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AssignedAddressChainRepository.kt
index 47b7d7524..ab373e774 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AssignedAddressChainRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AssignedAddressChainRepository.kt
@@ -1,7 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.AssignedAddressChainModel
-import co.nilin.opex.port.bcgateway.postgres.model.AssignedAddressModel
+import co.nilin.opex.bcgateway.ports.postgres.model.AssignedAddressChainModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AssignedAddressRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AssignedAddressRepository.kt
similarity index 87%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AssignedAddressRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AssignedAddressRepository.kt
index e6e7e147c..9508f4a19 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/AssignedAddressRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/AssignedAddressRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.AssignedAddressModel
+import co.nilin.opex.bcgateway.ports.postgres.model.AssignedAddressModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainAddressTypeRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainAddressTypeRepository.kt
similarity index 64%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainAddressTypeRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainAddressTypeRepository.kt
index 2248a9474..721e64934 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainAddressTypeRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainAddressTypeRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.ChainAddressTypeModel
+import co.nilin.opex.bcgateway.ports.postgres.model.ChainAddressTypeModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainEndpointRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainEndpointRepository.kt
similarity index 64%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainEndpointRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainEndpointRepository.kt
index 88e5fdc26..057f033cb 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainEndpointRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainEndpointRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.ChainEndpointModel
+import co.nilin.opex.bcgateway.ports.postgres.model.ChainEndpointModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainRepository.kt
similarity index 79%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainRepository.kt
index 299ca7127..08f0ec606 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainRepository.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.AddressTypeModel
-import co.nilin.opex.port.bcgateway.postgres.model.ChainEndpointModel
-import co.nilin.opex.port.bcgateway.postgres.model.ChainModel
+import co.nilin.opex.bcgateway.ports.postgres.model.AddressTypeModel
+import co.nilin.opex.bcgateway.ports.postgres.model.ChainEndpointModel
+import co.nilin.opex.bcgateway.ports.postgres.model.ChainModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainSyncRecordRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainSyncRecordRepository.kt
similarity index 72%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainSyncRecordRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainSyncRecordRepository.kt
index 20044463e..339a836cd 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainSyncRecordRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainSyncRecordRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.ChainSyncRecordModel
+import co.nilin.opex.bcgateway.ports.postgres.model.ChainSyncRecordModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
import reactor.core.publisher.Mono
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainSyncScheduleRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainSyncScheduleRepository.kt
similarity index 70%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainSyncScheduleRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainSyncScheduleRepository.kt
index c4395e8d5..2b4e2603b 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ChainSyncScheduleRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ChainSyncScheduleRepository.kt
@@ -1,12 +1,10 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.ChainSyncScheduleModel
-import co.nilin.opex.port.bcgateway.postgres.model.WalletSyncScheduleModel
+import co.nilin.opex.bcgateway.ports.postgres.model.ChainSyncScheduleModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
-import reactor.core.publisher.Mono
import java.time.LocalDateTime
@Repository
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/CurrencyImplementationRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/CurrencyImplementationRepository.kt
similarity index 70%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/CurrencyImplementationRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/CurrencyImplementationRepository.kt
index 369ea8207..af0c4898b 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/CurrencyImplementationRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/CurrencyImplementationRepository.kt
@@ -1,9 +1,7 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.CurrencyImplementationModel
+import co.nilin.opex.bcgateway.ports.postgres.model.CurrencyImplementationModel
import kotlinx.coroutines.flow.Flow
-import org.springframework.data.r2dbc.repository.Query
-import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
import reactor.core.publisher.Mono
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/CurrencyRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/CurrencyRepository.kt
similarity index 54%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/CurrencyRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/CurrencyRepository.kt
index f44e25b6b..0da9a257e 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/CurrencyRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/CurrencyRepository.kt
@@ -1,9 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.CurrencyModel
-import kotlinx.coroutines.flow.Flow
-import org.springframework.data.r2dbc.repository.Query
-import org.springframework.data.repository.query.Param
+import co.nilin.opex.bcgateway.ports.postgres.model.CurrencyModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
import reactor.core.publisher.Mono
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/DepositRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/DepositRepository.kt
similarity index 94%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/DepositRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/DepositRepository.kt
index 29f84aad3..770601d10 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/DepositRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/DepositRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.DepositModel
+import co.nilin.opex.bcgateway.ports.postgres.model.DepositModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Modifying
import org.springframework.data.r2dbc.repository.Query
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ReservedAddressRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ReservedAddressRepository.kt
similarity index 86%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ReservedAddressRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ReservedAddressRepository.kt
index 11fc687cb..b39d08d55 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/ReservedAddressRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/ReservedAddressRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.ReservedAddressModel
+import co.nilin.opex.bcgateway.ports.postgres.model.ReservedAddressModel
import org.springframework.data.r2dbc.repository.Modifying
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/WalletSyncRecordRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/WalletSyncRecordRepository.kt
similarity index 64%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/WalletSyncRecordRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/WalletSyncRecordRepository.kt
index cab986087..5da849e81 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/WalletSyncRecordRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/WalletSyncRecordRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.WalletSyncRecordModel
+import co.nilin.opex.bcgateway.ports.postgres.model.WalletSyncRecordModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/WalletSyncScheduleRepository.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/WalletSyncScheduleRepository.kt
similarity index 80%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/WalletSyncScheduleRepository.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/WalletSyncScheduleRepository.kt
index 176ff6a23..22180f1de 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/dao/WalletSyncScheduleRepository.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/dao/WalletSyncScheduleRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.dao
+package co.nilin.opex.bcgateway.ports.postgres.dao
-import co.nilin.opex.port.bcgateway.postgres.model.WalletSyncScheduleModel
+import co.nilin.opex.bcgateway.ports.postgres.model.WalletSyncScheduleModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/AssignedAddressHandlerImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/AssignedAddressHandlerImpl.kt
similarity index 87%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/AssignedAddressHandlerImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/AssignedAddressHandlerImpl.kt
index 541025622..010ae69ef 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/AssignedAddressHandlerImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/AssignedAddressHandlerImpl.kt
@@ -1,13 +1,13 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.AddressType
import co.nilin.opex.bcgateway.core.model.AssignedAddress
import co.nilin.opex.bcgateway.core.spi.AssignedAddressHandler
import co.nilin.opex.bcgateway.core.spi.ChainLoader
-import co.nilin.opex.port.bcgateway.postgres.dao.AddressTypeRepository
-import co.nilin.opex.port.bcgateway.postgres.dao.AssignedAddressChainRepository
-import co.nilin.opex.port.bcgateway.postgres.dao.AssignedAddressRepository
-import co.nilin.opex.port.bcgateway.postgres.model.AssignedAddressModel
+import co.nilin.opex.bcgateway.ports.postgres.dao.AddressTypeRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.AssignedAddressChainRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.AssignedAddressRepository
+import co.nilin.opex.bcgateway.ports.postgres.model.AssignedAddressModel
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.awaitFirst
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainEndpointProxyFinderImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainEndpointProxyFinderImpl.kt
similarity index 73%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainEndpointProxyFinderImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainEndpointProxyFinderImpl.kt
index 2e15c726a..3bfea4b83 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainEndpointProxyFinderImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainEndpointProxyFinderImpl.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.Endpoint
import co.nilin.opex.bcgateway.core.spi.ChainEndpointProxy
import co.nilin.opex.bcgateway.core.spi.ChainEndpointProxyFinder
-import co.nilin.opex.port.bcgateway.chainproxy.impl.ChainEndpointProxyImpl
-import co.nilin.opex.port.bcgateway.postgres.dao.ChainRepository
+import co.nilin.opex.bcgateway.ports.chainproxy.impl.ChainEndpointProxyImpl
+import co.nilin.opex.bcgateway.ports.postgres.dao.ChainRepository
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import org.springframework.stereotype.Component
@@ -15,6 +15,6 @@ class ChainEndpointProxyFinderImpl(private val chainRepository: ChainRepository,
ChainEndpointProxyFinder {
override suspend fun findChainEndpointProxy(chainName: String): ChainEndpointProxy {
val endpoints = chainRepository.findEndpointsByName(chainName).map { Endpoint(it.url) }.toList()
- return ChainEndpointProxyImpl(chainName, endpoints,webClient)
+ return ChainEndpointProxyImpl(chainName, endpoints, webClient)
}
}
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainHandler.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainHandler.kt
similarity index 88%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainHandler.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainHandler.kt
index c0a3c3d67..285943589 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainHandler.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainHandler.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.AddressType
import co.nilin.opex.bcgateway.core.model.Chain
import co.nilin.opex.bcgateway.core.model.Endpoint
import co.nilin.opex.bcgateway.core.spi.ChainLoader
-import co.nilin.opex.port.bcgateway.postgres.dao.ChainRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.ChainRepository
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.awaitSingle
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainSyncRecordHandlerImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainSyncRecordHandlerImpl.kt
similarity index 89%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainSyncRecordHandlerImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainSyncRecordHandlerImpl.kt
index 3aa811004..02f130738 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainSyncRecordHandlerImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainSyncRecordHandlerImpl.kt
@@ -1,12 +1,12 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.ChainSyncRecord
import co.nilin.opex.bcgateway.core.model.Deposit
import co.nilin.opex.bcgateway.core.model.Endpoint
import co.nilin.opex.bcgateway.core.spi.ChainSyncRecordHandler
-import co.nilin.opex.port.bcgateway.postgres.dao.ChainSyncRecordRepository
-import co.nilin.opex.port.bcgateway.postgres.dao.DepositRepository
-import co.nilin.opex.port.bcgateway.postgres.model.ChainSyncRecordModel
+import co.nilin.opex.bcgateway.ports.postgres.dao.ChainSyncRecordRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.DepositRepository
+import co.nilin.opex.bcgateway.ports.postgres.model.ChainSyncRecordModel
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.awaitFirst
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainSyncSchedulerHandlerImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainSyncSchedulerHandlerImpl.kt
similarity index 82%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainSyncSchedulerHandlerImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainSyncSchedulerHandlerImpl.kt
index 19f096eee..c1c4664f3 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ChainSyncSchedulerHandlerImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ChainSyncSchedulerHandlerImpl.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.ChainSyncSchedule
import co.nilin.opex.bcgateway.core.spi.ChainSyncSchedulerHandler
-import co.nilin.opex.port.bcgateway.postgres.dao.ChainSyncScheduleRepository
-import co.nilin.opex.port.bcgateway.postgres.model.ChainSyncScheduleModel
+import co.nilin.opex.bcgateway.ports.postgres.dao.ChainSyncScheduleRepository
+import co.nilin.opex.bcgateway.ports.postgres.model.ChainSyncScheduleModel
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.awaitFirst
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/CurrencyLoaderImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/CurrencyLoaderImpl.kt
similarity index 83%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/CurrencyLoaderImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/CurrencyLoaderImpl.kt
index ca6f5c06e..31c3e3efe 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/CurrencyLoaderImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/CurrencyLoaderImpl.kt
@@ -1,12 +1,12 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.*
import co.nilin.opex.bcgateway.core.spi.CurrencyLoader
-import co.nilin.opex.port.bcgateway.postgres.dao.ChainRepository
-import co.nilin.opex.port.bcgateway.postgres.dao.CurrencyImplementationRepository
-import co.nilin.opex.port.bcgateway.postgres.dao.CurrencyRepository
-import co.nilin.opex.port.bcgateway.postgres.model.CurrencyImplementationModel
-import co.nilin.opex.port.bcgateway.postgres.model.CurrencyModel
+import co.nilin.opex.bcgateway.ports.postgres.dao.ChainRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.CurrencyImplementationRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.CurrencyRepository
+import co.nilin.opex.bcgateway.ports.postgres.model.CurrencyImplementationModel
+import co.nilin.opex.bcgateway.ports.postgres.model.CurrencyModel
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.awaitFirstOrNull
@@ -22,12 +22,12 @@ class CurrencyLoaderImpl(
) : CurrencyLoader {
override suspend fun fetchCurrencyInfo(symbol: String): CurrencyInfo {
- val symbol = symbol.toUpperCase()
- val currencyModel = currencyRepository.findBySymbol(symbol).awaitSingleOrNull()
+ val symbolUpperCase = symbol.toUpperCase()
+ val currencyModel = currencyRepository.findBySymbol(symbolUpperCase).awaitSingleOrNull()
if (currencyModel === null) {
- return CurrencyInfo(Currency("", symbol), emptyList())
+ return CurrencyInfo(Currency("", symbolUpperCase), emptyList())
}
- val currencyImplModel = currencyImplementationRepository.findBySymbol(symbol)
+ val currencyImplModel = currencyImplementationRepository.findBySymbol(symbolUpperCase)
val currency = Currency(currencyModel.symbol, currencyModel.name)
val implementations = currencyImplModel.map { projectCurrencyImplementation(it, currencyModel) }
return CurrencyInfo(currency, implementations.toList())
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/DepositHandlerImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/DepositHandlerImpl.kt
similarity index 87%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/DepositHandlerImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/DepositHandlerImpl.kt
index 528827945..2a5e2c804 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/DepositHandlerImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/DepositHandlerImpl.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.Deposit
import co.nilin.opex.bcgateway.core.spi.DepositHandler
-import co.nilin.opex.port.bcgateway.postgres.dao.DepositRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.DepositRepository
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import org.springframework.stereotype.Component
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ReservedAddressHandlerImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ReservedAddressHandlerImpl.kt
similarity index 87%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ReservedAddressHandlerImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ReservedAddressHandlerImpl.kt
index bb7d0f54a..d4071514a 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/ReservedAddressHandlerImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/ReservedAddressHandlerImpl.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.AddressType
import co.nilin.opex.bcgateway.core.model.ReservedAddress
import co.nilin.opex.bcgateway.core.spi.ReservedAddressHandler
-import co.nilin.opex.port.bcgateway.postgres.dao.ReservedAddressRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.ReservedAddressRepository
import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/WalletSyncRecordHandlerImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/WalletSyncRecordHandlerImpl.kt
similarity index 86%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/WalletSyncRecordHandlerImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/WalletSyncRecordHandlerImpl.kt
index 69d65d181..b826da49a 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/WalletSyncRecordHandlerImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/WalletSyncRecordHandlerImpl.kt
@@ -1,12 +1,11 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.Deposit
import co.nilin.opex.bcgateway.core.model.WalletSyncRecord
import co.nilin.opex.bcgateway.core.spi.WalletSyncRecordHandler
-import co.nilin.opex.port.bcgateway.postgres.dao.DepositRepository
-import co.nilin.opex.port.bcgateway.postgres.dao.WalletSyncRecordRepository
-import co.nilin.opex.port.bcgateway.postgres.model.DepositModel
-import co.nilin.opex.port.bcgateway.postgres.model.WalletSyncRecordModel
+import co.nilin.opex.bcgateway.ports.postgres.dao.DepositRepository
+import co.nilin.opex.bcgateway.ports.postgres.dao.WalletSyncRecordRepository
+import co.nilin.opex.bcgateway.ports.postgres.model.WalletSyncRecordModel
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.awaitFirst
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/WalletSyncSchedulerHandlerImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/WalletSyncSchedulerHandlerImpl.kt
similarity index 83%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/WalletSyncSchedulerHandlerImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/WalletSyncSchedulerHandlerImpl.kt
index ec3fa6206..acc9cae28 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/impl/WalletSyncSchedulerHandlerImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/impl/WalletSyncSchedulerHandlerImpl.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.bcgateway.postgres.impl
+package co.nilin.opex.bcgateway.ports.postgres.impl
import co.nilin.opex.bcgateway.core.model.WalletSyncSchedule
import co.nilin.opex.bcgateway.core.spi.WalletSyncSchedulerHandler
-import co.nilin.opex.port.bcgateway.postgres.dao.WalletSyncScheduleRepository
-import co.nilin.opex.port.bcgateway.postgres.model.WalletSyncScheduleModel
+import co.nilin.opex.bcgateway.ports.postgres.dao.WalletSyncScheduleRepository
+import co.nilin.opex.bcgateway.ports.postgres.model.WalletSyncScheduleModel
import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.reactive.awaitSingleOrNull
import org.springframework.stereotype.Component
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/AddressTypeModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/AddressTypeModel.kt
similarity index 88%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/AddressTypeModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/AddressTypeModel.kt
index dc971ed09..aacb8c606 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/AddressTypeModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/AddressTypeModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/AssignedAddressModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/AssignedAddressModel.kt
similarity index 91%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/AssignedAddressModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/AssignedAddressModel.kt
index 90b92ed90..0b1fe16b5 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/AssignedAddressModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/AssignedAddressModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ChainModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ChainModel.kt
similarity index 92%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ChainModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ChainModel.kt
index 98785aaed..aa4cc8f3c 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ChainModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ChainModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ChainSyncModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ChainSyncModel.kt
similarity index 92%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ChainSyncModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ChainSyncModel.kt
index c77b3da05..e294b57d6 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ChainSyncModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ChainSyncModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/CurrencyImplementationModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/CurrencyImplementationModel.kt
similarity index 93%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/CurrencyImplementationModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/CurrencyImplementationModel.kt
index d1883a3d6..2d1b17576 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/CurrencyImplementationModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/CurrencyImplementationModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.annotation.Id
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/CurrencyModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/CurrencyModel.kt
similarity index 84%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/CurrencyModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/CurrencyModel.kt
index 354398e25..1ba9b1523 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/CurrencyModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/CurrencyModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.annotation.Id
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/DepositModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/DepositModel.kt
similarity index 91%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/DepositModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/DepositModel.kt
index 2572e6781..e70b4ba2b 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/DepositModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/DepositModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ReservedAddressModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ReservedAddressModel.kt
similarity index 84%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ReservedAddressModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ReservedAddressModel.kt
index fb2d37358..343aff940 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/ReservedAddressModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/ReservedAddressModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.relational.core.mapping.Column
import org.springframework.data.relational.core.mapping.Table
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/WalletSyncModel.kt b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/WalletSyncModel.kt
similarity index 80%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/WalletSyncModel.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/WalletSyncModel.kt
index 3947af2b7..8ae63f43f 100644
--- a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/kotlin/co/nilin/opex/port/bcgateway/postgres/model/WalletSyncModel.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/kotlin/co/nilin/opex/bcgateway/ports/postgres/model/WalletSyncModel.kt
@@ -1,7 +1,6 @@
-package co.nilin.opex.port.bcgateway.postgres.model
+package co.nilin.opex.bcgateway.ports.postgres.model
import org.springframework.data.annotation.Id
-import org.springframework.data.relational.core.mapping.Column
import org.springframework.data.relational.core.mapping.Table
import java.time.LocalDateTime
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/resources/data.sql b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql
similarity index 100%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/resources/data.sql
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/data.sql
diff --git a/BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/resources/schema.sql b/bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/schema.sql
similarity index 100%
rename from BlockchainGateway/bc-gateway-ports/bc-persister-postgres/src/main/resources/schema.sql
rename to bc-gateway/bc-gateway-ports/bc-gateway-persister-postgres/src/main/resources/schema.sql
diff --git a/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/pom.xml b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/pom.xml
new file mode 100644
index 000000000..2251c6477
--- /dev/null
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.bcgateway
+ bc-gateway
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.bcgateway.ports.walletproxy
+ bc-gateway-wallet-proxy
+ bc-gateway-wallet-proxy
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ co.nilin.opex.bcgateway.core
+ bc-gateway-core
+
+
+ org.springframework
+ spring-webflux
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/impl/WalletProxyImpl.kt b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/impl/WalletProxyImpl.kt
similarity index 90%
rename from BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/impl/WalletProxyImpl.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/impl/WalletProxyImpl.kt
index 764c99a46..58bc075a1 100644
--- a/BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/impl/WalletProxyImpl.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/impl/WalletProxyImpl.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.bcgateway.walletproxy.impl
+package co.nilin.opex.bcgateway.ports.walletproxy.impl
import co.nilin.opex.bcgateway.core.spi.WalletProxy
-import co.nilin.opex.port.bcgateway.walletproxy.model.TransferResult
+import co.nilin.opex.bcgateway.ports.walletproxy.model.TransferResult
import kotlinx.coroutines.reactive.awaitFirst
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.beans.factory.annotation.Value
diff --git a/BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/Amount.kt b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/Amount.kt
similarity index 62%
rename from BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/Amount.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/Amount.kt
index 02158d6c9..eaf9abb6e 100644
--- a/BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/Amount.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/Amount.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.walletproxy.model
+package co.nilin.opex.bcgateway.ports.walletproxy.model
import java.math.BigDecimal
diff --git a/BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/Currency.kt b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/Currency.kt
similarity index 62%
rename from BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/Currency.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/Currency.kt
index 3ae3bd439..d059c03e8 100644
--- a/BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/Currency.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/Currency.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.walletproxy.model
+package co.nilin.opex.bcgateway.ports.walletproxy.model
data class Currency(
val symbol: String,
diff --git a/BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/TransferResult.kt b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/TransferResult.kt
similarity index 84%
rename from BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/TransferResult.kt
rename to bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/TransferResult.kt
index ddef01aa3..ea02101f2 100644
--- a/BlockchainGateway/bc-gateway-ports/wallet-proxy/src/main/kotlin/co/nilin/opex/port/bcgateway/walletproxy/model/TransferResult.kt
+++ b/bc-gateway/bc-gateway-ports/bc-gateway-wallet-proxy/src/main/kotlin/co/nilin/opex/bcgateway/ports/walletproxy/model/TransferResult.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.bcgateway.walletproxy.model
+package co.nilin.opex.bcgateway.ports.walletproxy.model
data class TransferResult(
val date: Long,
diff --git a/bc-gateway/pom.xml b/bc-gateway/pom.xml
new file mode 100644
index 000000000..34cf00bb6
--- /dev/null
+++ b/bc-gateway/pom.xml
@@ -0,0 +1,71 @@
+
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ 4.0.0
+ co.nilin.opex.bcgateway
+ bc-gateway
+ bc-gateway
+ pom
+ Blockchain gateway root of opex
+
+
+ bc-gateway-core
+ bc-gateway-app
+ bc-gateway-ports/bc-gateway-persister-postgres
+ bc-gateway-ports/bc-gateway-chain-proxy
+ bc-gateway-ports/bc-gateway-wallet-proxy
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ co.nilin.opex.bcgateway.core
+ bc-gateway-core
+ ${project.version}
+
+
+ co.nilin.opex.bcgateway.ports.postgres
+ bc-gateway-persister-postgres
+ ${project.version}
+
+
+ co.nilin.opex.bcgateway.ports.walletproxy
+ bc-gateway-wallet-proxy
+ ${project.version}
+
+
+ co.nilin.opex.bcgateway.ports.chainproxy
+ bc-gateway-chain-proxy
+ ${project.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ ${project.version}
+
+
+
+
diff --git a/EventLog/eventlog-app/Dockerfile b/eventlog/eventlog-app/Dockerfile
similarity index 100%
rename from EventLog/eventlog-app/Dockerfile
rename to eventlog/eventlog-app/Dockerfile
diff --git a/eventlog/eventlog-app/pom.xml b/eventlog/eventlog-app/pom.xml
new file mode 100644
index 000000000..88084c14c
--- /dev/null
+++ b/eventlog/eventlog-app/pom.xml
@@ -0,0 +1,60 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.eventlog
+ eventlog
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.eventlog.app
+ eventlog-app
+ eventlog-app
+ Event log running app Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.eventlog.core
+ eventlog-core
+
+
+ co.nilin.opex.eventlog.ports.kafka.listener
+ eventlog-eventlistener-kafka
+
+
+ co.nilin.opex.eventlog.ports.postgres
+ eventlog-persister-postgres
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/EventLog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/EventLogApp.kt b/eventlog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/EventLogApp.kt
similarity index 79%
rename from EventLog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/EventLogApp.kt
rename to eventlog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/EventLogApp.kt
index a42bd4d1f..eb6111caf 100644
--- a/EventLog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/EventLogApp.kt
+++ b/eventlog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/EventLogApp.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app
+package co.nilin.opex.eventlog.app
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
@@ -7,6 +7,7 @@ import org.springframework.context.annotation.ComponentScan
@SpringBootApplication
@ComponentScan("co.nilin.opex")
class EventLogApp
+
fun main(args: Array) {
- runApplication(*args)
+ runApplication(*args)
}
\ No newline at end of file
diff --git a/EventLog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/config/AppConfig.kt b/eventlog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/config/AppConfig.kt
similarity index 83%
rename from EventLog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/config/AppConfig.kt
rename to eventlog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/config/AppConfig.kt
index 82cb52f44..320f6601e 100644
--- a/EventLog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/config/AppConfig.kt
+++ b/eventlog/eventlog-app/src/main/kotlin/co/nilin/opex/eventlog/app/config/AppConfig.kt
@@ -1,23 +1,23 @@
package co.nilin.opex.eventlog.app.config
-import co.nilin.opex.eventlog.spi.EventPersister
-import co.nilin.opex.eventlog.spi.OrderPersister
-import co.nilin.opex.eventlog.spi.TradePersister
-import co.nilin.opex.matching.core.eventh.events.*
-import co.nilin.opex.port.eventlog.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.eventlog.kafka.spi.OrderSubmitRequestListener
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
-import co.nilin.opex.port.eventlog.kafka.consumer.EventKafkaListener
-import co.nilin.opex.port.eventlog.kafka.consumer.TradeKafkaListener
-import co.nilin.opex.port.eventlog.kafka.spi.EventListener
-import co.nilin.opex.port.eventlog.kafka.spi.TradeListener
+import co.nilin.opex.eventlog.core.spi.EventPersister
+import co.nilin.opex.eventlog.core.spi.OrderPersister
+import co.nilin.opex.eventlog.core.spi.TradePersister
+import co.nilin.opex.matching.engine.core.eventh.events.*
+import co.nilin.opex.eventlog.ports.kafka.listener.consumer.EventKafkaListener
+import co.nilin.opex.eventlog.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.eventlog.ports.kafka.listener.consumer.TradeKafkaListener
+import co.nilin.opex.eventlog.ports.kafka.listener.spi.EventListener
+import co.nilin.opex.eventlog.ports.kafka.listener.spi.OrderSubmitRequestListener
+import co.nilin.opex.eventlog.ports.kafka.listener.spi.TradeListener
+import co.nilin.opex.eventlog.ports.kafka.listener.inout.OrderSubmitRequest
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.runBlocking
+import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import java.util.concurrent.Executors
-import org.slf4j.LoggerFactory
@Configuration
class AppConfig {
@@ -40,7 +40,7 @@ class AppConfig {
}
@Bean
- fun orderKafkaListener():OrderKafkaListener {
+ fun orderKafkaListener(): OrderKafkaListener {
return OrderKafkaListener(Executors.newFixedThreadPool(10).asCoroutineDispatcher())
}
diff --git a/EventLog/eventlog-app/src/main/resources/application-docker.yml b/eventlog/eventlog-app/src/main/resources/application-docker.yml
similarity index 100%
rename from EventLog/eventlog-app/src/main/resources/application-docker.yml
rename to eventlog/eventlog-app/src/main/resources/application-docker.yml
diff --git a/EventLog/eventlog-app/src/main/resources/application.yml b/eventlog/eventlog-app/src/main/resources/application.yml
similarity index 89%
rename from EventLog/eventlog-app/src/main/resources/application.yml
rename to eventlog/eventlog-app/src/main/resources/application.yml
index 2b7bd821f..51929e3d6 100644
--- a/EventLog/eventlog-app/src/main/resources/application.yml
+++ b/eventlog/eventlog-app/src/main/resources/application.yml
@@ -3,7 +3,7 @@ spring:
kafka:
bootstrap-servers: localhost:9092
consumer:
- group-id: eventlog
+ group-id: eventlog
r2dbc:
url: r2dbc:postgresql://localhost/opex_eventlog
username: opex
diff --git a/eventlog/eventlog-core/pom.xml b/eventlog/eventlog-core/pom.xml
new file mode 100644
index 000000000..a41c05c10
--- /dev/null
+++ b/eventlog/eventlog-core/pom.xml
@@ -0,0 +1,48 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.eventlog
+ eventlog
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.eventlog.core
+ eventlog-core
+ eventlog-core
+ Event log of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ exchange.core2
+ collections
+ 0.5.1
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+
diff --git a/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Event.kt b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Event.kt
new file mode 100644
index 000000000..cd9037c52
--- /dev/null
+++ b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Event.kt
@@ -0,0 +1,4 @@
+package co.nilin.opex.eventlog.core.spi
+
+interface Event {
+}
\ No newline at end of file
diff --git a/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/EventPersister.kt b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/EventPersister.kt
new file mode 100644
index 000000000..afae50788
--- /dev/null
+++ b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/EventPersister.kt
@@ -0,0 +1,7 @@
+package co.nilin.opex.eventlog.core.spi
+
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+
+interface EventPersister {
+ suspend fun saveEvent(event: CoreEvent): List
+}
\ No newline at end of file
diff --git a/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Order.kt b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Order.kt
new file mode 100644
index 000000000..d9cae6891
--- /dev/null
+++ b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Order.kt
@@ -0,0 +1,4 @@
+package co.nilin.opex.eventlog.core.spi
+
+interface Order {
+}
\ No newline at end of file
diff --git a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/OrderPersister.kt b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/OrderPersister.kt
similarity index 76%
rename from EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/OrderPersister.kt
rename to eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/OrderPersister.kt
index 2eefab154..1ffe7175f 100644
--- a/EventLog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/spi/OrderPersister.kt
+++ b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/OrderPersister.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.eventlog.spi
+package co.nilin.opex.eventlog.core.spi
-import co.nilin.opex.matching.core.eventh.events.*
+import co.nilin.opex.matching.engine.core.eventh.events.*
interface OrderPersister {
suspend fun submitOrder(orderEvent: SubmitOrderEvent)
diff --git a/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Trade.kt b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Trade.kt
new file mode 100644
index 000000000..426bcbd37
--- /dev/null
+++ b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/Trade.kt
@@ -0,0 +1,4 @@
+package co.nilin.opex.eventlog.core.spi
+
+interface Trade {
+}
\ No newline at end of file
diff --git a/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/TradePersister.kt b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/TradePersister.kt
new file mode 100644
index 000000000..8ee1d0bdf
--- /dev/null
+++ b/eventlog/eventlog-core/src/main/kotlin/co/nilin/opex/eventlog/core/spi/TradePersister.kt
@@ -0,0 +1,7 @@
+package co.nilin.opex.eventlog.core.spi
+
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
+
+interface TradePersister {
+ suspend fun saveTrade(tradeEvent: TradeEvent): Trade
+}
\ No newline at end of file
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/mvnw b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/mvnw
similarity index 100%
rename from EventLog/eventlog-ports/eventlog-eventlistener-kafka/mvnw
rename to eventlog/eventlog-ports/eventlog-eventlistener-kafka/mvnw
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/mvnw.cmd b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/mvnw.cmd
similarity index 100%
rename from EventLog/eventlog-ports/eventlog-eventlistener-kafka/mvnw.cmd
rename to eventlog/eventlog-ports/eventlog-eventlistener-kafka/mvnw.cmd
diff --git a/eventlog/eventlog-ports/eventlog-eventlistener-kafka/pom.xml b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/pom.xml
new file mode 100644
index 000000000..f0396f959
--- /dev/null
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/pom.xml
@@ -0,0 +1,57 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.eventlog
+ eventlog
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.eventlog.ports.kafka.listener
+ eventlog-eventlistener-kafka
+ eventlog-eventlistener-kafka
+ Matching engine kafka trade handler of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/config/EventlogKafkaConfig.kt b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/config/EventlogKafkaConfig.kt
similarity index 74%
rename from EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/config/EventlogKafkaConfig.kt
rename to eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/config/EventlogKafkaConfig.kt
index f8c441526..d1b9e8545 100644
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/config/EventlogKafkaConfig.kt
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/config/EventlogKafkaConfig.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.port.eventlog.kafka.config
+package co.nilin.opex.eventlog.ports.kafka.listener.config
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.eventlog.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.eventlog.kafka.consumer.EventKafkaListener
-import co.nilin.opex.port.eventlog.kafka.consumer.TradeKafkaListener
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.eventlog.ports.kafka.listener.consumer.EventKafkaListener
+import co.nilin.opex.eventlog.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.eventlog.ports.kafka.listener.consumer.TradeKafkaListener
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.clients.producer.ProducerConfig
import org.apache.kafka.common.serialization.StringDeserializer
@@ -15,16 +15,11 @@ import org.springframework.beans.factory.annotation.Value
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
-import org.springframework.kafka.core.ConsumerFactory
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory
-import org.springframework.kafka.core.DefaultKafkaProducerFactory
-import org.springframework.kafka.core.KafkaTemplate
-import org.springframework.kafka.core.ProducerFactory
+import org.springframework.kafka.core.*
import org.springframework.kafka.listener.ConcurrentMessageListenerContainer
import org.springframework.kafka.listener.ContainerProperties
import org.springframework.kafka.support.serializer.JsonDeserializer
import org.springframework.kafka.support.serializer.JsonSerializer
-import java.util.*
import java.util.regex.Pattern
@@ -48,7 +43,7 @@ class EventlogKafkaConfig {
}
@Bean("eventlogConsumerFactory")
- fun consumerFactory(@Qualifier("eventlogConsumerConfig")consumerConfigs: Map): ConsumerFactory {
+ fun consumerFactory(@Qualifier("eventlogConsumerConfig") consumerConfigs: Map): ConsumerFactory {
return DefaultKafkaConsumerFactory(consumerConfigs)
}
@@ -74,8 +69,10 @@ class EventlogKafkaConfig {
@Autowired
@ConditionalOnBean(TradeKafkaListener::class)
- fun configureTradeListener(tradeListener: TradeKafkaListener
- , @Qualifier("eventlogConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureTradeListener(
+ tradeListener: TradeKafkaListener,
+ @Qualifier("eventlogConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("trades_.*"))
containerProps.messageListener = tradeListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
@@ -85,8 +82,10 @@ class EventlogKafkaConfig {
@Autowired
@ConditionalOnBean(EventKafkaListener::class)
- fun configureEventListener(eventListener: EventKafkaListener
- , @Qualifier("eventlogConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureEventListener(
+ eventListener: EventKafkaListener,
+ @Qualifier("eventlogConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("events_.*"))
containerProps.messageListener = eventListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
@@ -96,8 +95,10 @@ class EventlogKafkaConfig {
@Autowired
@ConditionalOnBean(OrderKafkaListener::class)
- fun configureOrderListener(orderListener: OrderKafkaListener
- , @Qualifier("eventlogConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureOrderListener(
+ orderListener: OrderKafkaListener,
+ @Qualifier("eventlogConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("orders_.*"))
containerProps.messageListener = orderListener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
diff --git a/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/EventKafkaListener.kt b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/EventKafkaListener.kt
new file mode 100644
index 000000000..755720cd9
--- /dev/null
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/EventKafkaListener.kt
@@ -0,0 +1,28 @@
+package co.nilin.opex.eventlog.ports.kafka.listener.consumer
+
+
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.eventlog.ports.kafka.listener.spi.EventListener
+import org.apache.kafka.clients.consumer.ConsumerRecord
+import org.springframework.kafka.listener.MessageListener
+import org.springframework.stereotype.Component
+
+@Component
+class EventKafkaListener : MessageListener {
+ val eventListeners = arrayListOf()
+ override fun onMessage(data: ConsumerRecord) {
+ eventListeners.forEach { tl ->
+ tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
+ }
+ }
+
+ fun addEventListener(tl: EventListener) {
+ eventListeners.add(tl)
+ }
+
+ fun removeEventListener(tl: EventListener) {
+ eventListeners.removeIf { item ->
+ item.id() == tl.id()
+ }
+ }
+}
\ No newline at end of file
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/OrderKafkaListener.kt b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/OrderKafkaListener.kt
similarity index 75%
rename from EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/OrderKafkaListener.kt
rename to eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/OrderKafkaListener.kt
index efe994344..52ee41459 100644
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/consumer/OrderKafkaListener.kt
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/OrderKafkaListener.kt
@@ -1,16 +1,16 @@
-package co.nilin.opex.port.eventlog.kafka.consumer
+package co.nilin.opex.eventlog.ports.kafka.listener.consumer
-import co.nilin.opex.port.eventlog.kafka.spi.OrderSubmitRequestListener
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
+import co.nilin.opex.eventlog.ports.kafka.listener.spi.OrderSubmitRequestListener
+import co.nilin.opex.eventlog.ports.kafka.listener.inout.OrderSubmitRequest
import kotlinx.coroutines.ExecutorCoroutineDispatcher
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.withContext
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.listener.MessageListener
-import org.springframework.stereotype.Component
-class OrderKafkaListener(private val executorCoroutineDispatcher: ExecutorCoroutineDispatcher) : MessageListener {
+class OrderKafkaListener(private val executorCoroutineDispatcher: ExecutorCoroutineDispatcher) :
+ MessageListener {
val orderListeners = arrayListOf()
override fun onMessage(data: ConsumerRecord) {
runBlocking {
diff --git a/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/TradeKafkaListener.kt b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/TradeKafkaListener.kt
new file mode 100644
index 000000000..2f2b7c388
--- /dev/null
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/consumer/TradeKafkaListener.kt
@@ -0,0 +1,28 @@
+package co.nilin.opex.eventlog.ports.kafka.listener.consumer
+
+
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
+import co.nilin.opex.eventlog.ports.kafka.listener.spi.TradeListener
+import org.apache.kafka.clients.consumer.ConsumerRecord
+import org.springframework.kafka.listener.MessageListener
+import org.springframework.stereotype.Component
+
+@Component
+class TradeKafkaListener : MessageListener {
+ val tradeListeners = arrayListOf()
+ override fun onMessage(data: ConsumerRecord) {
+ tradeListeners.forEach { tl ->
+ tl.onTrade(data.value(), data.partition(), data.offset(), data.timestamp())
+ }
+ }
+
+ fun addTradeListener(tl: TradeListener) {
+ tradeListeners.add(tl)
+ }
+
+ fun removeTradeListener(tl: TradeListener) {
+ tradeListeners.removeIf { item ->
+ item.id() == tl.id()
+ }
+ }
+}
\ No newline at end of file
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/inout/OrderSubmitRequest.kt
similarity index 50%
rename from EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt
rename to eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/inout/OrderSubmitRequest.kt
index b15b98eed..cac421629 100644
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/inout/OrderSubmitRequest.kt
@@ -1,29 +1,31 @@
-package co.nilin.opex.port.order.kafka.inout
+package co.nilin.opex.eventlog.ports.kafka.listener.inout
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
public class OrderSubmitRequest() {
lateinit var ouid: String
lateinit var uuid: String
var orderId: Long? = null
- lateinit var pair: co.nilin.opex.matching.core.model.Pair
+ lateinit var pair: co.nilin.opex.matching.engine.core.model.Pair
var price: Long = 0
var quantity: Long = 0
var direction: OrderDirection = OrderDirection.BID
var matchConstraint: MatchConstraint = MatchConstraint.GTC
var orderType: OrderType = OrderType.LIMIT_ORDER
- constructor(ouid: String,
- uuid: String,
- orderId: Long?,
- pair: co.nilin.opex.matching.core.model.Pair,
- price: Long,
- quantity: Long,
- direction: OrderDirection,
- matchConstraint: MatchConstraint,
- orderType: OrderType):this(){
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long?,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ price: Long,
+ quantity: Long,
+ direction: OrderDirection,
+ matchConstraint: MatchConstraint,
+ orderType: OrderType
+ ) : this() {
this.ouid = ouid
this.uuid = uuid
this.orderId = orderId
diff --git a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/EventListener.kt b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/EventListener.kt
similarity index 52%
rename from Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/EventListener.kt
rename to eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/EventListener.kt
index 0d11ccf58..cf2687d90 100644
--- a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/EventListener.kt
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/EventListener.kt
@@ -1,7 +1,6 @@
-package co.nilin.opex.port.api.kafka.spi
-
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+package co.nilin.opex.eventlog.ports.kafka.listener.spi
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
interface EventListener {
fun id(): String
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/OrderSubmitRequestListener.kt b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
similarity index 54%
rename from EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/OrderSubmitRequestListener.kt
rename to eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
index 4c90e5b03..4cae57cb1 100644
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/OrderSubmitRequestListener.kt
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.eventlog.kafka.spi
+package co.nilin.opex.eventlog.ports.kafka.listener.spi
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
+import co.nilin.opex.eventlog.ports.kafka.listener.inout.OrderSubmitRequest
interface OrderSubmitRequestListener {
fun id(): String
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/TradeListener.kt b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/TradeListener.kt
similarity index 52%
rename from EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/TradeListener.kt
rename to eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/TradeListener.kt
index 8d8891173..b065bd96f 100644
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/TradeListener.kt
+++ b/eventlog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/eventlog/ports/kafka/listener/spi/TradeListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.eventlog.kafka.spi
+package co.nilin.opex.eventlog.ports.kafka.listener.spi
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
interface TradeListener {
fun id(): String
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/mvnw b/eventlog/eventlog-ports/eventlog-persister-postgres/mvnw
similarity index 100%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/mvnw
rename to eventlog/eventlog-ports/eventlog-persister-postgres/mvnw
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/mvnw.cmd b/eventlog/eventlog-ports/eventlog-persister-postgres/mvnw.cmd
similarity index 100%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/mvnw.cmd
rename to eventlog/eventlog-ports/eventlog-persister-postgres/mvnw.cmd
diff --git a/eventlog/eventlog-ports/eventlog-persister-postgres/pom.xml b/eventlog/eventlog-ports/eventlog-persister-postgres/pom.xml
new file mode 100644
index 000000000..f652e33a3
--- /dev/null
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/pom.xml
@@ -0,0 +1,71 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.eventlog
+ eventlog
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.eventlog.ports.postgres
+ eventlog-persister-postgres
+ eventlog-persister-postgres
+ Persist items of Opex on Postgres
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.eventlog.core
+ eventlog-core
+
+
+ org.springframework.boot
+ spring-boot-starter-data-r2dbc
+
+
+ io.r2dbc
+ r2dbc-postgresql
+ runtime
+
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/config/PostgresConfig.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/config/PostgresConfig.kt
similarity index 93%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/config/PostgresConfig.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/config/PostgresConfig.kt
index 45a1cad5b..9e64b079e 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/config/PostgresConfig.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/config/PostgresConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.eventlog.postgres.config
+package co.nilin.opex.eventlog.ports.postgres.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Configuration
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/EventRepository.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/EventRepository.kt
similarity index 64%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/EventRepository.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/EventRepository.kt
index bf7f12c6f..dfdcfbe7a 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/EventRepository.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/EventRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.eventlog.postgres.dao
+package co.nilin.opex.eventlog.ports.postgres.dao
-import co.nilin.opex.port.eventlog.postgres.model.EventModel
+import co.nilin.opex.eventlog.ports.postgres.model.EventModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/OrderEventRepository.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/OrderEventRepository.kt
similarity index 55%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/OrderEventRepository.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/OrderEventRepository.kt
index c31044c31..6fb1c9a22 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/OrderEventRepository.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/OrderEventRepository.kt
@@ -1,7 +1,6 @@
-package co.nilin.opex.port.eventlog.postgres.dao
+package co.nilin.opex.eventlog.ports.postgres.dao
-import co.nilin.opex.port.eventlog.postgres.model.OrderEventsModel
-import co.nilin.opex.port.eventlog.postgres.model.OrderModel
+import co.nilin.opex.eventlog.ports.postgres.model.OrderEventsModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/OrderRepository.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/OrderRepository.kt
similarity index 64%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/OrderRepository.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/OrderRepository.kt
index 520ed5531..41fb963d5 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/OrderRepository.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/OrderRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.eventlog.postgres.dao
+package co.nilin.opex.eventlog.ports.postgres.dao
-import co.nilin.opex.port.eventlog.postgres.model.OrderModel
+import co.nilin.opex.eventlog.ports.postgres.model.OrderModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/TradeRepository.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/TradeRepository.kt
similarity index 64%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/TradeRepository.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/TradeRepository.kt
index 9c6b4e1a3..ae57bb22e 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/dao/TradeRepository.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/dao/TradeRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.eventlog.postgres.dao
+package co.nilin.opex.eventlog.ports.postgres.dao
-import co.nilin.opex.port.eventlog.postgres.model.TradeModel
+import co.nilin.opex.eventlog.ports.postgres.model.TradeModel
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/EventPersisterImpl.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/EventPersisterImpl.kt
similarity index 59%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/EventPersisterImpl.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/EventPersisterImpl.kt
index a21565cf7..f788a1030 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/EventPersisterImpl.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/EventPersisterImpl.kt
@@ -1,12 +1,13 @@
-package co.nilin.opex.port.eventlog.postgres.impl
+package co.nilin.opex.eventlog.ports.postgres.impl
-import co.nilin.opex.eventlog.spi.Event
-import co.nilin.opex.eventlog.spi.EventPersister
-import co.nilin.opex.matching.core.eventh.events.*
-import co.nilin.opex.port.eventlog.postgres.dao.EventRepository
-import co.nilin.opex.port.eventlog.postgres.model.EventModel
+import co.nilin.opex.eventlog.core.spi.Event
+import co.nilin.opex.eventlog.core.spi.EventPersister
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.OneOrderEvent
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
+import co.nilin.opex.eventlog.ports.postgres.dao.EventRepository
+import co.nilin.opex.eventlog.ports.postgres.model.EventModel
import kotlinx.coroutines.reactive.awaitFirst
-import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
import java.time.LocalDateTime
import java.util.*
@@ -15,21 +16,23 @@ import java.util.*
class EventPersisterImpl(val eventRepository: EventRepository) : EventPersister {
override suspend fun saveEvent(event: CoreEvent): List {
if (event is OneOrderEvent) {
- return listOf(eventRepository.save(
- EventModel(
- null,
- UUID.randomUUID().toString(),
- event.ouid(),
- event.uuid(),
- event.pair.toString(),
- event::class.simpleName!!,
- "",
- "agent",
- "127.0.0.1",
- event.eventDate,
- LocalDateTime.now()
- )
- ).awaitFirst())
+ return listOf(
+ eventRepository.save(
+ EventModel(
+ null,
+ UUID.randomUUID().toString(),
+ event.ouid(),
+ event.uuid(),
+ event.pair.toString(),
+ event::class.simpleName!!,
+ "",
+ "agent",
+ "127.0.0.1",
+ event.eventDate,
+ LocalDateTime.now()
+ )
+ ).awaitFirst()
+ )
} else if (event is TradeEvent) {
val correlation = UUID.randomUUID().toString()
val tuple = eventRepository.save(
diff --git a/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/OrderPersisterImpl.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/OrderPersisterImpl.kt
new file mode 100644
index 000000000..3837743f5
--- /dev/null
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/OrderPersisterImpl.kt
@@ -0,0 +1,130 @@
+package co.nilin.opex.eventlog.ports.postgres.impl
+
+import co.nilin.opex.eventlog.core.spi.OrderPersister
+import co.nilin.opex.matching.engine.core.eventh.events.*
+import co.nilin.opex.eventlog.ports.postgres.dao.OrderEventRepository
+import co.nilin.opex.eventlog.ports.postgres.dao.OrderRepository
+import co.nilin.opex.eventlog.ports.postgres.model.OrderEventsModel
+import co.nilin.opex.eventlog.ports.postgres.model.OrderModel
+import kotlinx.coroutines.reactive.awaitFirst
+import kotlinx.coroutines.reactive.awaitFirstOrNull
+import org.springframework.stereotype.Component
+import java.time.LocalDateTime
+
+@Component
+class OrderPersisterImpl(
+ val orderRepository: OrderRepository, val orderEventRepository: OrderEventRepository
+) : OrderPersister {
+ override suspend fun submitOrder(orderEvent: SubmitOrderEvent) {
+ orderRepository.save(
+ OrderModel(
+ null,
+ orderEvent.ouid,
+ orderEvent.pair.toString(),
+ orderEvent.direction.toString(),
+ orderEvent.matchConstraint.toString(),
+ orderEvent.orderType.toString(),
+ orderEvent.uuid,
+ "agent",
+ "127.0.0.1",
+ orderEvent.eventDate,
+ LocalDateTime.now()
+ )
+ )
+ .block()
+ orderEventRepository.save(
+ OrderEventsModel(
+ null,
+ orderEvent.ouid,
+ orderEvent.uuid,
+ orderEvent.orderId,
+ orderEvent.price,
+ orderEvent.quantity,
+ orderEvent.quantity - orderEvent.remainedQuantity,
+ orderEvent.javaClass.simpleName,
+ "agent",
+ "127.0.0.1",
+ orderEvent.eventDate,
+ LocalDateTime.now()
+ )
+ )
+ .awaitFirst()
+
+ }
+
+ override suspend fun rejectOrder(orderEvent: RejectOrderEvent) {
+ orderEventRepository.save(
+ OrderEventsModel(
+ null,
+ orderEvent.ouid,
+ orderEvent.uuid,
+ orderEvent.orderId,
+ orderEvent.price,
+ orderEvent.quantity,
+ 0,
+ orderEvent.javaClass.simpleName,
+ "agent",
+ "127.0.0.1",
+ orderEvent.eventDate,
+ LocalDateTime.now()
+ )
+ ).awaitFirst()
+ }
+
+ override suspend fun saveOrder(orderEvent: CreateOrderEvent) {
+ orderEventRepository.save(
+ OrderEventsModel(
+ null,
+ orderEvent.ouid,
+ orderEvent.uuid,
+ orderEvent.orderId,
+ orderEvent.price,
+ orderEvent.quantity,
+ orderEvent.quantity - orderEvent.remainedQuantity,
+ orderEvent.javaClass.simpleName,
+ "agent",
+ "127.0.0.1",
+ orderEvent.eventDate,
+ LocalDateTime.now()
+ )
+ ).awaitFirstOrNull()
+ }
+
+ override suspend fun updateOrder(orderEvent: UpdatedOrderEvent) {
+ orderEventRepository.save(
+ OrderEventsModel(
+ null,
+ orderEvent.ouid,
+ orderEvent.uuid,
+ orderEvent.orderId,
+ orderEvent.price,
+ orderEvent.quantity,
+ orderEvent.quantity - orderEvent.remainedQuantity,
+ orderEvent.javaClass.simpleName,
+ "agent",
+ "127.0.0.1",
+ orderEvent.eventDate,
+ LocalDateTime.now()
+ )
+ ).awaitFirstOrNull()
+ }
+
+ override suspend fun cancelOrder(orderEvent: CancelOrderEvent) {
+ orderEventRepository.save(
+ OrderEventsModel(
+ null,
+ orderEvent.ouid,
+ orderEvent.uuid,
+ orderEvent.orderId,
+ orderEvent.price,
+ orderEvent.quantity,
+ orderEvent.quantity - orderEvent.remainedQuantity,
+ orderEvent.javaClass.simpleName,
+ "agent",
+ "127.0.0.1",
+ orderEvent.eventDate,
+ LocalDateTime.now()
+ )
+ ).awaitFirst()
+ }
+}
\ No newline at end of file
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/TradePersisterImpl.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/TradePersisterImpl.kt
similarity index 76%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/TradePersisterImpl.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/TradePersisterImpl.kt
index 9740a008a..12672fc02 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/impl/TradePersisterImpl.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/impl/TradePersisterImpl.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.port.eventlog.postgres.impl
+package co.nilin.opex.eventlog.ports.postgres.impl
-import co.nilin.opex.eventlog.spi.Trade
-import co.nilin.opex.eventlog.spi.TradePersister
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
-import co.nilin.opex.port.eventlog.postgres.dao.TradeRepository
-import co.nilin.opex.port.eventlog.postgres.model.TradeModel
+import co.nilin.opex.eventlog.core.spi.Trade
+import co.nilin.opex.eventlog.core.spi.TradePersister
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
+import co.nilin.opex.eventlog.ports.postgres.dao.TradeRepository
+import co.nilin.opex.eventlog.ports.postgres.model.TradeModel
import kotlinx.coroutines.reactive.awaitFirst
import org.springframework.stereotype.Component
import java.time.LocalDateTime
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/EventModel.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/EventModel.kt
similarity index 82%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/EventModel.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/EventModel.kt
index 54ced7554..485e8123b 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/EventModel.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/EventModel.kt
@@ -1,7 +1,6 @@
-package co.nilin.opex.port.eventlog.postgres.model
+package co.nilin.opex.eventlog.ports.postgres.model
-import co.nilin.opex.eventlog.spi.Event
-import co.nilin.opex.eventlog.spi.Trade
+import co.nilin.opex.eventlog.core.spi.Event
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
import org.springframework.data.relational.core.mapping.Table
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/OrderEventsModel.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/OrderEventsModel.kt
similarity index 92%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/OrderEventsModel.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/OrderEventsModel.kt
index 65180d4c8..8533a0401 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/OrderEventsModel.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/OrderEventsModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.eventlog.postgres.model
+package co.nilin.opex.eventlog.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/OrderModel.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/OrderModel.kt
similarity index 82%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/OrderModel.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/OrderModel.kt
index 3fd65a0ed..b684f9632 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/OrderModel.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/OrderModel.kt
@@ -1,7 +1,6 @@
-package co.nilin.opex.port.eventlog.postgres.model
+package co.nilin.opex.eventlog.ports.postgres.model
-import co.nilin.opex.eventlog.spi.Order
-import co.nilin.opex.eventlog.spi.Trade
+import co.nilin.opex.eventlog.core.spi.Order
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
import org.springframework.data.relational.core.mapping.Table
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/TradeModel.kt b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/TradeModel.kt
similarity index 86%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/TradeModel.kt
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/TradeModel.kt
index 8a0f74b8b..ac61f985c 100644
--- a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/port/eventlog/postgres/model/TradeModel.kt
+++ b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/kotlin/co/nilin/opex/eventlog/ports/postgres/model/TradeModel.kt
@@ -1,8 +1,6 @@
-package co.nilin.opex.port.eventlog.postgres.model
+package co.nilin.opex.eventlog.ports.postgres.model
-import co.nilin.opex.eventlog.spi.Trade
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.Pair
+import co.nilin.opex.eventlog.core.spi.Trade
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
import org.springframework.data.relational.core.mapping.Table
diff --git a/EventLog/eventlog-ports/eventlog-persister-postgres/src/main/resources/schema.sql b/eventlog/eventlog-ports/eventlog-persister-postgres/src/main/resources/schema.sql
similarity index 100%
rename from EventLog/eventlog-ports/eventlog-persister-postgres/src/main/resources/schema.sql
rename to eventlog/eventlog-ports/eventlog-persister-postgres/src/main/resources/schema.sql
diff --git a/eventlog/pom.xml b/eventlog/pom.xml
new file mode 100644
index 000000000..afa61efb4
--- /dev/null
+++ b/eventlog/pom.xml
@@ -0,0 +1,71 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.eventlog
+ eventlog
+ eventlog
+ pom
+ Event log root of Opex
+
+
+ eventlog-core
+ eventlog-ports/eventlog-persister-postgres
+ eventlog-ports/eventlog-eventlistener-kafka
+ eventlog-app
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+ ${project.version}
+
+
+ co.nilin.opex.eventlog.core
+ eventlog-core
+ ${project.version}
+
+
+ co.nilin.opex.eventlog.ports.kafka.listener
+ eventlog-eventlistener-kafka
+ ${project.version}
+
+
+ co.nilin.opex.eventlog.ports.postgres
+ eventlog-persister-postgres
+ ${project.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ ${project.version}
+
+
+
+
diff --git a/MatchingEngine/matching-app/Dockerfile b/matching-engine/matching-engine-app/Dockerfile
similarity index 100%
rename from MatchingEngine/matching-app/Dockerfile
rename to matching-engine/matching-engine-app/Dockerfile
diff --git a/matching-engine/matching-engine-app/pom.xml b/matching-engine/matching-engine-app/pom.xml
new file mode 100644
index 000000000..93ea2bde7
--- /dev/null
+++ b/matching-engine/matching-engine-app/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.matching.engine
+ matching-engine
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.matching.engine.app
+ matching-engine-app
+ matching-engine-app
+ Matching engine running app Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.matching.engine.ports.kafka.submitter
+ matching-engine-submitter-kafka
+
+
+ co.nilin.opex.matching.engine.ports.kafka.listener
+ matching-engine-eventlistener-kafka
+
+
+ co.nilin.opex.matching.engine.ports.redis
+ matching-engine-snapshots-redis
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/MatchingEngineApp.kt b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/MatchingEngineApp.kt
similarity index 88%
rename from MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/MatchingEngineApp.kt
rename to matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/MatchingEngineApp.kt
index b98a4585c..bacefbbe5 100644
--- a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/MatchingEngineApp.kt
+++ b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/MatchingEngineApp.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app
+package co.nilin.opex.matching.engine.app
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
diff --git a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/bl/ExchangeEventHandler.kt b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/bl/ExchangeEventHandler.kt
similarity index 66%
rename from MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/bl/ExchangeEventHandler.kt
rename to matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/bl/ExchangeEventHandler.kt
index a66330055..251d7c889 100644
--- a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/bl/ExchangeEventHandler.kt
+++ b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/bl/ExchangeEventHandler.kt
@@ -1,20 +1,19 @@
-package co.nilin.opex.app.bl
+package co.nilin.opex.matching.engine.app.bl
-import co.nilin.opex.app.config.AppSchedulers
-import co.nilin.opex.matching.core.eventh.EventDispatcher
-import co.nilin.opex.matching.core.eventh.events.*
-import co.nilin.opex.matching.core.spi.OrderBookPersister
-import co.nilin.opex.port.order.kafka.service.EventsSubmitter
+import co.nilin.opex.matching.engine.app.config.AppSchedulers
+import co.nilin.opex.matching.engine.core.eventh.EventDispatcher
+import co.nilin.opex.matching.engine.core.eventh.events.*
+import co.nilin.opex.matching.engine.core.spi.OrderBookPersister
+import co.nilin.opex.matching.engine.ports.kafka.submitter.service.EventsSubmitter
import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import org.springframework.stereotype.Component
@Component
-class ExchangeEventHandler(eventsSubmitter: EventsSubmitter
-, orderBookPersister: OrderBookPersister)
-{
- fun register(){
+class ExchangeEventHandler(
+ eventsSubmitter: EventsSubmitter, orderBookPersister: OrderBookPersister
+) {
+ fun register() {
EventDispatcher.register(CreateOrderEvent::class.java, handler)
EventDispatcher.register(CancelOrderEvent::class.java, handler)
EventDispatcher.register(UpdatedOrderEvent::class.java, handler)
diff --git a/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/bl/OrderBooks.kt b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/bl/OrderBooks.kt
new file mode 100644
index 000000000..45be41247
--- /dev/null
+++ b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/bl/OrderBooks.kt
@@ -0,0 +1,27 @@
+package co.nilin.opex.matching.engine.app.bl
+
+import co.nilin.opex.matching.engine.core.factory.OrderBookFactory
+import co.nilin.opex.matching.engine.core.model.OrderBook
+import co.nilin.opex.matching.engine.core.model.PersistentOrderBook
+
+object OrderBooks {
+ private val orderBooks = mutableMapOf()
+
+ fun createOrderBook(pair: String) {
+ println("Going to add order book:" + pair + ", current order books#" + orderBooks.size)
+ if (orderBooks.containsKey(pair))
+ throw IllegalArgumentException("${pair} has an order book right now!")
+ val pairs = pair.split("_")
+ orderBooks[pair] = OrderBookFactory.createOrderBook(co.nilin.opex.matching.engine.core.model.Pair(pairs[0], pairs[1]))
+ println("order book:" + pair + " added, current order books#" + orderBooks.size)
+ }
+
+ fun reloadOrderBook(orderBook: PersistentOrderBook) {
+ orderBooks["${orderBook.pair.leftSideName}_${orderBook.pair.rightSideName}"] =
+ OrderBookFactory.createOrderBook(orderBook)
+ }
+
+ fun lookupOrderBook(pair: String): OrderBook {
+ return orderBooks[pair] ?: throw IllegalArgumentException("No orderbook for $pair")
+ }
+}
\ No newline at end of file
diff --git a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/config/AppConfig.kt
similarity index 80%
rename from MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt
rename to matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/config/AppConfig.kt
index e92f65003..c8751c699 100644
--- a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt
+++ b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/config/AppConfig.kt
@@ -1,18 +1,20 @@
-package co.nilin.opex.app.config
-
-import co.nilin.opex.app.bl.ExchangeEventHandler
-import co.nilin.opex.app.bl.OrderBooks
-import co.nilin.opex.matching.core.eventh.events.*
-import co.nilin.opex.matching.core.inout.OrderCancelCommand
-import co.nilin.opex.matching.core.inout.OrderCreateCommand
-import co.nilin.opex.matching.core.inout.OrderEditCommand
-import co.nilin.opex.matching.core.model.PersistentOrderBook
-import co.nilin.opex.matching.core.spi.OrderBookPersister
-import co.nilin.opex.port.order.kafka.consumer.EventKafkaListener
-import co.nilin.opex.port.order.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
-import co.nilin.opex.port.order.kafka.spi.EventListener
-import co.nilin.opex.port.order.kafka.spi.OrderSubmitRequestListener
+package co.nilin.opex.matching.engine.app.config
+
+import co.nilin.opex.matching.engine.app.bl.ExchangeEventHandler
+import co.nilin.opex.matching.engine.app.bl.OrderBooks
+import co.nilin.opex.matching.engine.core.eventh.events.CancelOrderEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.EditOrderRequestEvent
+import co.nilin.opex.matching.engine.core.inout.OrderCancelCommand
+import co.nilin.opex.matching.engine.core.inout.OrderCreateCommand
+import co.nilin.opex.matching.engine.core.inout.OrderEditCommand
+import co.nilin.opex.matching.engine.core.model.PersistentOrderBook
+import co.nilin.opex.matching.engine.core.spi.OrderBookPersister
+import co.nilin.opex.matching.engine.ports.kafka.listener.consumer.EventKafkaListener
+import co.nilin.opex.matching.engine.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.matching.engine.ports.kafka.listener.inout.OrderSubmitRequest
+import co.nilin.opex.matching.engine.ports.kafka.listener.spi.EventListener
+import co.nilin.opex.matching.engine.ports.kafka.listener.spi.OrderSubmitRequestListener
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
diff --git a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/config/AppSchedulers.kt b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/config/AppSchedulers.kt
similarity index 85%
rename from MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/config/AppSchedulers.kt
rename to matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/config/AppSchedulers.kt
index 8aa5390f3..1a7ff5aa0 100644
--- a/MatchingEngine/matching-app/src/main/kotlin/co/nilin/opex/app/config/AppSchedulers.kt
+++ b/matching-engine/matching-engine-app/src/main/kotlin/co/nilin/opex/matching/engine/app/config/AppSchedulers.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.matching.engine.app.config
import kotlinx.coroutines.asCoroutineDispatcher
import java.util.concurrent.Executors
diff --git a/MatchingEngine/matching-app/src/main/resources/application-docker.yml b/matching-engine/matching-engine-app/src/main/resources/application-docker.yml
similarity index 100%
rename from MatchingEngine/matching-app/src/main/resources/application-docker.yml
rename to matching-engine/matching-engine-app/src/main/resources/application-docker.yml
diff --git a/MatchingEngine/matching-app/src/main/resources/application.yml b/matching-engine/matching-engine-app/src/main/resources/application.yml
similarity index 72%
rename from MatchingEngine/matching-app/src/main/resources/application.yml
rename to matching-engine/matching-engine-app/src/main/resources/application.yml
index 13eeed8ad..bfb7b297e 100644
--- a/MatchingEngine/matching-app/src/main/resources/application.yml
+++ b/matching-engine/matching-engine-app/src/main/resources/application.yml
@@ -1,11 +1,11 @@
server.port: 8092
spring:
main:
- allow-bean-definition-overriding: false
+ allow-bean-definition-overriding: false
kafka:
bootstrap-servers: localhost:9092
consumer:
- group-id: engine
+ group-id: engine
redis:
host: 127.0.0.1
port: 6379
diff --git "a/matching-engine/matching-engine-app/src/test/kotlin/co/nilin/opex/matching/core/engine/OrderBook\331\215EventEmitsUnitTest.kt" "b/matching-engine/matching-engine-app/src/test/kotlin/co/nilin/opex/matching/core/engine/OrderBook\331\215EventEmitsUnitTest.kt"
new file mode 100644
index 000000000..cc6ac51c9
--- /dev/null
+++ "b/matching-engine/matching-engine-app/src/test/kotlin/co/nilin/opex/matching/core/engine/OrderBook\331\215EventEmitsUnitTest.kt"
@@ -0,0 +1,149 @@
+package co.nilin.opex.matching.engine.core.engine
+
+import co.nilin.opex.matching.engine.core.eventh.EventDispatcher
+import co.nilin.opex.matching.engine.core.eventh.events.OrderBookPublishedEvent
+import co.nilin.opex.matching.engine.core.inout.OrderCancelCommand
+import co.nilin.opex.matching.engine.core.inout.OrderCreateCommand
+import co.nilin.opex.matching.engine.core.inout.OrderEditCommand
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.PersistentOrderBook
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.BeforeEach
+import org.junit.jupiter.api.Test
+import java.util.*
+
+class OrderBookEventEmitsUnitTest {
+ val pair = co.nilin.opex.matching.engine.core.model.Pair("BTC", "USDT")
+ val uuid = UUID.randomUUID().toString()
+
+ var persistentOrderBook: PersistentOrderBook? = null
+
+ @BeforeEach
+ fun setup() {
+ val localHandler: (OrderBookPublishedEvent) -> Unit = {
+ persistentOrderBook = it.persistentOrderBook
+ }
+ EventDispatcher.register(OrderBookPublishedEvent::class.java, localHandler)
+ }
+
+ @Test
+ fun givenOrderBook_whenOrderCreated_thenOrderBookEventPublished() {
+ //given
+ val orderBook = SimpleOrderBook(pair, false)
+ //when
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //then
+ Assertions.assertNotNull(persistentOrderBook)
+ }
+
+
+ @Test
+ fun givenOrderBook_whenCancelOrder_thenOrderBookEventPublished() {
+ //given
+ val orderBook = SimpleOrderBook(pair, false)
+ val firstOrderId = UUID.randomUUID().toString()
+ val secondOrderId = UUID.randomUUID().toString()
+
+ val firstOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ firstOrderId,
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ secondOrderId,
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ persistentOrderBook = null
+ //when
+ orderBook.handleCancelCommand(OrderCancelCommand(firstOrderId, uuid, firstOrder!!.id()!!, pair))
+ //then
+ Assertions.assertNotNull(persistentOrderBook)
+ }
+
+
+ @Test
+ fun givenOrderBook_whenEditOrder_thenOrderBookEventPublished() {
+ //given
+ val orderBook = SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val secondOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 3,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ persistentOrderBook = null
+ //when
+ orderBook.handleEditCommand(
+ OrderEditCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ secondOrder!!.id()!!,
+ pair,
+ 3,
+ 2
+ )
+ )
+ //then
+ Assertions.assertNotNull(persistentOrderBook)
+ }
+
+
+}
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/mvnw b/matching-engine/matching-engine-core/mvnw
similarity index 100%
rename from MatchingEngine/matching-core/mvnw
rename to matching-engine/matching-engine-core/mvnw
diff --git a/MatchingEngine/matching-core/mvnw.cmd b/matching-engine/matching-engine-core/mvnw.cmd
similarity index 100%
rename from MatchingEngine/matching-core/mvnw.cmd
rename to matching-engine/matching-engine-core/mvnw.cmd
diff --git a/matching-engine/matching-engine-core/pom.xml b/matching-engine/matching-engine-core/pom.xml
new file mode 100644
index 000000000..fa6bc230c
--- /dev/null
+++ b/matching-engine/matching-engine-core/pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.matching.engine
+ matching-engine
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+ matching-engine-core
+ Matching engine of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ exchange.core2
+ collections
+ 0.5.1
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBook.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/engine/SimpleOrderBook.kt
similarity index 51%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBook.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/engine/SimpleOrderBook.kt
index 37f0cef0d..c11e22e76 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBook.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/engine/SimpleOrderBook.kt
@@ -1,10 +1,9 @@
-package co.nilin.opex.matching.core.engine
+package co.nilin.opex.matching.engine.core.engine
-import co.nilin.opex.matching.core.eventh.EventDispatcher
-import co.nilin.opex.matching.core.eventh.events.*
-import co.nilin.opex.matching.core.inout.*
-import co.nilin.opex.matching.core.model.*
-import co.nilin.opex.matching.core.spi.OrderBookPersister
+import co.nilin.opex.matching.engine.core.eventh.EventDispatcher
+import co.nilin.opex.matching.engine.core.eventh.events.*
+import co.nilin.opex.matching.engine.core.inout.*
+import co.nilin.opex.matching.engine.core.model.*
import exchange.core2.collections.art.LongAdaptiveRadixTreeMap
import org.slf4j.LoggerFactory
import java.util.*
@@ -12,21 +11,34 @@ import java.util.concurrent.atomic.AtomicLong
class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
- private val logger =LoggerFactory.getLogger(SimpleOrderBook::class.java)
+ private val logger = LoggerFactory.getLogger(co.nilin.opex.matching.engine.core.engine.SimpleOrderBook::class.java)
- val askOrders = LongAdaptiveRadixTreeMap()
- val bidOrders = LongAdaptiveRadixTreeMap()
- val orders = TreeMap()
+ val askOrders = LongAdaptiveRadixTreeMap()
+ val bidOrders = LongAdaptiveRadixTreeMap()
+ val orders = TreeMap()
- var bestAskOrder: SimpleOrder? = null
- var bestBidOrder: SimpleOrder? = null
+ var bestAskOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? = null
+ var bestBidOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? = null
val orderCounter = AtomicLong()
val tradeCounter = AtomicLong()
- var lastOrder: SimpleOrder? = null
-
- data class SimpleOrder(var id: Long?, val ouid: String, val uuid: String, val price: Long, val quantity: Long, val matchConstraint: MatchConstraint, val orderType: OrderType, val direction: OrderDirection, var filledQuantity: Long, var worse: SimpleOrder?, var better: SimpleOrder?, var bucket: Bucket?) : Order {
+ var lastOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? = null
+
+ data class SimpleOrder(
+ var id: Long?,
+ val ouid: String,
+ val uuid: String,
+ val price: Long,
+ val quantity: Long,
+ val matchConstraint: MatchConstraint,
+ val orderType: OrderType,
+ val direction: OrderDirection,
+ var filledQuantity: Long,
+ var worse: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder?,
+ var better: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder?,
+ var bucket: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.Bucket?
+ ) : Order {
fun remainedQuantity() = quantity - filledQuantity
override fun id(): Long? = id
override fun toString(): String {
@@ -34,11 +46,21 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
}
override fun persistent(): PersistentOrder {
- return PersistentOrder(id!!, ouid, uuid, price, quantity, matchConstraint, orderType, direction, filledQuantity)
+ return PersistentOrder(
+ id!!,
+ ouid,
+ uuid,
+ price,
+ quantity,
+ matchConstraint,
+ orderType,
+ direction,
+ filledQuantity
+ )
}
}
- data class Bucket(val price: Long, var totalQuantity: Long, var ordersCount: Long, var lastOrder: SimpleOrder)
+ data class Bucket(val price: Long, var totalQuantity: Long, var ordersCount: Long, var lastOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder)
override fun handleNewOrderCommand(orderCommand: OrderCreateCommand): Order? {
logger.info("****************** new order received *******************")
@@ -53,11 +75,24 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
MatchConstraint.GTC -> {
if (orderCommand.orderType == OrderType.MARKET_ORDER) {
if (!replayMode) {
- EventDispatcher.emit(RejectOrderEvent(orderCommand.ouid, orderCommand.uuid, orderCommand.pair, orderCommand.price, orderCommand.quantity, orderCommand.direction, orderCommand.matchConstraint, orderCommand.orderType, RequestedOperation.PLACE_ORDER, RejectReason.ORDER_TYPE_NOT_MATCHED_MATCHC))
+ EventDispatcher.emit(
+ RejectOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ orderCommand.pair,
+ orderCommand.price,
+ orderCommand.quantity,
+ orderCommand.direction,
+ orderCommand.matchConstraint,
+ orderCommand.orderType,
+ RequestedOperation.PLACE_ORDER,
+ RejectReason.ORDER_TYPE_NOT_MATCHED_MATCHC
+ )
+ )
}
return null
}
- val order = SimpleOrder(
+ val order = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder(
orderCounter.incrementAndGet(),
orderCommand.ouid,
orderCommand.uuid,
@@ -72,9 +107,20 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
null
)
if (!replayMode) {
- EventDispatcher.emit(CreateOrderEvent(orderCommand.ouid, orderCommand.uuid,
- order.id!!, orderCommand.pair, orderCommand.price, orderCommand.quantity, order.remainedQuantity(), orderCommand.direction, orderCommand.matchConstraint, orderCommand.orderType
- ))
+ EventDispatcher.emit(
+ CreateOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ order.id!!,
+ orderCommand.pair,
+ orderCommand.price,
+ orderCommand.quantity,
+ order.remainedQuantity(),
+ orderCommand.direction,
+ orderCommand.matchConstraint,
+ orderCommand.orderType
+ )
+ )
}
// try to match instantly
val queueOrder = matchInstantly(order)
@@ -85,7 +131,7 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
queueOrder
}
MatchConstraint.IOC -> {
- val order = SimpleOrder(
+ val order = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder(
orderCounter.incrementAndGet(),
orderCommand.ouid,
orderCommand.uuid,
@@ -113,16 +159,40 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
val queueOrder = matchIocInstantly(order)
if (!replayMode) {
if (queueOrder.filledQuantity != queueOrder.quantity) {
- EventDispatcher.emit(CancelOrderEvent(orderCommand.ouid, orderCommand.uuid,
- queueOrder.id!!, orderCommand.pair, order.price, order.quantity, order.remainedQuantity(), order.direction, order.matchConstraint, order.orderType
- ))
+ EventDispatcher.emit(
+ CancelOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ queueOrder.id!!,
+ orderCommand.pair,
+ order.price,
+ order.quantity,
+ order.remainedQuantity(),
+ order.direction,
+ order.matchConstraint,
+ order.orderType
+ )
+ )
}
}
queueOrder
}
else -> {
if (!replayMode) {
- EventDispatcher.emit(RejectOrderEvent(orderCommand.ouid, orderCommand.uuid,orderCommand.pair, orderCommand.price, orderCommand.quantity, orderCommand.direction, orderCommand.matchConstraint, orderCommand.orderType, RequestedOperation.PLACE_ORDER, RejectReason.OPERATION_NOT_MATCHED_MATCHC))
+ EventDispatcher.emit(
+ RejectOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ orderCommand.pair,
+ orderCommand.price,
+ orderCommand.quantity,
+ orderCommand.direction,
+ orderCommand.matchConstraint,
+ orderCommand.orderType,
+ RequestedOperation.PLACE_ORDER,
+ RejectReason.OPERATION_NOT_MATCHED_MATCHC
+ )
+ )
}
null
}
@@ -143,7 +213,16 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
val order = simpleOrder?.value
if (order == null /*check for userid*/) {
if (!replayMode) {
- EventDispatcher.emit(RejectOrderEvent(orderCommand.ouid, orderCommand.uuid,orderCommand.orderId, orderCommand.pair, RequestedOperation.CANCEL_ORDER, RejectReason.ORDER_NOT_FOUND))
+ EventDispatcher.emit(
+ RejectOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ orderCommand.orderId,
+ orderCommand.pair,
+ RequestedOperation.CANCEL_ORDER,
+ RejectReason.ORDER_NOT_FOUND
+ )
+ )
}
return
} else {
@@ -151,21 +230,24 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
}
if (order.direction == OrderDirection.BID) {
- handleCancelOrder(order, bidOrders, bestBidOrder) { newBestOrder: SimpleOrder? ->
+ handleCancelOrder(order, bidOrders, bestBidOrder) { newBestOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestBidOrder = newBestOrder
}
} else {
- handleCancelOrder(order, askOrders, bestAskOrder) { newBestOrder: SimpleOrder? ->
+ handleCancelOrder(order, askOrders, bestAskOrder) { newBestOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestAskOrder = newBestOrder
}
}
if (!replayMode) {
- EventDispatcher.emit(CancelOrderEvent(orderCommand.ouid, orderCommand.uuid,
+ EventDispatcher.emit(
+ CancelOrderEvent(
+ orderCommand.ouid, orderCommand.uuid,
orderCommand.orderId, orderCommand.pair,
- order.price, order.quantity,
- order.remainedQuantity(), order.direction,
- order.matchConstraint, order.orderType
- ))
+ order.price, order.quantity,
+ order.remainedQuantity(), order.direction,
+ order.matchConstraint, order.orderType
+ )
+ )
}
EventDispatcher.emit(OrderBookPublishedEvent(persistent()))
logCurrentState()
@@ -175,20 +257,29 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
val order = orders.remove(orderCommand.orderId)
if (order == null /*check for userid*/) {
if (!replayMode) {
- EventDispatcher.emit(RejectOrderEvent(orderCommand.ouid, orderCommand.uuid,orderCommand.orderId, orderCommand.pair, RequestedOperation.EDIT_ORDER, RejectReason.ORDER_NOT_FOUND))
+ EventDispatcher.emit(
+ RejectOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ orderCommand.orderId,
+ orderCommand.pair,
+ RequestedOperation.EDIT_ORDER,
+ RejectReason.ORDER_NOT_FOUND
+ )
+ )
}
return order
}
if (order.direction == OrderDirection.BID) {
- handleCancelOrder(order, bidOrders, bestBidOrder) { newBestOrder: SimpleOrder? ->
+ handleCancelOrder(order, bidOrders, bestBidOrder) { newBestOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestBidOrder = newBestOrder
}
} else {
- handleCancelOrder(order, askOrders, bestAskOrder) { newBestOrder: SimpleOrder? ->
+ handleCancelOrder(order, askOrders, bestAskOrder) { newBestOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestAskOrder = newBestOrder
}
}
- val newOrder = SimpleOrder(
+ val newOrder = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder(
order.id,
orderCommand.ouid,
orderCommand.uuid,
@@ -206,11 +297,14 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
return when (order.matchConstraint) {
MatchConstraint.GTC -> {
if (!replayMode) {
- EventDispatcher.emit(UpdatedOrderEvent(orderCommand.ouid, orderCommand.uuid,
- order.id!!, orderCommand.pair, order.price, order.quantity,
- orderCommand.price, orderCommand.quantity, order.remainedQuantity(),
- order.direction, order.matchConstraint, order.orderType
- ))
+ EventDispatcher.emit(
+ UpdatedOrderEvent(
+ orderCommand.ouid, orderCommand.uuid,
+ order.id!!, orderCommand.pair, order.price, order.quantity,
+ orderCommand.price, orderCommand.quantity, order.remainedQuantity(),
+ order.direction, order.matchConstraint, order.orderType
+ )
+ )
}
// try to match instantly
val queueOrder = matchInstantly(newOrder)
@@ -223,17 +317,41 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
}
MatchConstraint.IOC -> {
if (!replayMode) {
- EventDispatcher.emit(UpdatedOrderEvent(orderCommand.ouid, orderCommand.uuid,
- order.id!!, orderCommand.pair, order.price, order.quantity, orderCommand.price, orderCommand.quantity, order.remainedQuantity(), order.direction, order.matchConstraint, order.orderType
- ))
+ EventDispatcher.emit(
+ UpdatedOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ order.id!!,
+ orderCommand.pair,
+ order.price,
+ order.quantity,
+ orderCommand.price,
+ orderCommand.quantity,
+ order.remainedQuantity(),
+ order.direction,
+ order.matchConstraint,
+ order.orderType
+ )
+ )
}
// try to match instantly
val queueOrder = matchIocInstantly(newOrder)
if (!replayMode) {
if (queueOrder.filledQuantity != queueOrder.quantity) {
- EventDispatcher.emit(CancelOrderEvent(orderCommand.ouid, orderCommand.uuid,
- queueOrder.id!!, orderCommand.pair, order.price, order.quantity, order.remainedQuantity(), order.direction, order.matchConstraint, order.orderType
- ))
+ EventDispatcher.emit(
+ CancelOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ queueOrder.id!!,
+ orderCommand.pair,
+ order.price,
+ order.quantity,
+ order.remainedQuantity(),
+ order.direction,
+ order.matchConstraint,
+ order.orderType
+ )
+ )
}
}
EventDispatcher.emit(OrderBookPublishedEvent(persistent()))
@@ -241,7 +359,21 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
}
else -> {
if (!replayMode) {
- EventDispatcher.emit(RejectOrderEvent(orderCommand.ouid, orderCommand.uuid,orderCommand.orderId, orderCommand.pair, orderCommand.price, orderCommand.quantity, order.direction, order.matchConstraint, order.orderType, RequestedOperation.EDIT_ORDER, RejectReason.OPERATION_NOT_MATCHED_MATCHC))
+ EventDispatcher.emit(
+ RejectOrderEvent(
+ orderCommand.ouid,
+ orderCommand.uuid,
+ orderCommand.orderId,
+ orderCommand.pair,
+ orderCommand.price,
+ orderCommand.quantity,
+ order.direction,
+ order.matchConstraint,
+ order.orderType,
+ RequestedOperation.EDIT_ORDER,
+ RejectReason.OPERATION_NOT_MATCHED_MATCHC
+ )
+ )
}
null
}
@@ -249,7 +381,12 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
}
- private fun handleCancelOrder(order: SimpleOrder, bucketQueue: LongAdaptiveRadixTreeMap, bestOrder: SimpleOrder?, setBestOrder: (SimpleOrder?) -> Unit) {
+ private fun handleCancelOrder(
+ order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder,
+ bucketQueue: LongAdaptiveRadixTreeMap,
+ bestOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder?,
+ setBestOrder: (co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder?) -> Unit
+ ) {
val bucket = order.bucket!!
bucket.ordersCount--
bucket.totalQuantity -= order.remainedQuantity()
@@ -265,56 +402,62 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
setBestOrder(bestOrder.worse)
}
- private fun matchInstantly(order: SimpleOrder): SimpleOrder {
+ private fun matchInstantly(order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder): co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder {
if (order.direction == OrderDirection.BID) {
return matchInstantly(order, bestAskOrder, askOrders, { makerPrice: Long ->
makerPrice <= order.price
- }) { newMakerOrder: SimpleOrder? ->
+ }) { newMakerOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestAskOrder = newMakerOrder
}
} else {
return matchInstantly(order, bestBidOrder, bidOrders, { makerPrice: Long ->
makerPrice >= order.price
- }) { newMakerOrder: SimpleOrder? ->
+ }) { newMakerOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestBidOrder = newMakerOrder
}
}
}
- private fun matchIocInstantly(order: SimpleOrder): SimpleOrder {
+ private fun matchIocInstantly(order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder): co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder {
if (order.direction == OrderDirection.BID) {
return matchInstantly(order, bestAskOrder, askOrders, { makerPrice: Long ->
order.orderType == OrderType.MARKET_ORDER || makerPrice <= order.price
- }) { newMakerOrder: SimpleOrder? ->
+ }) { newMakerOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestAskOrder = newMakerOrder
}
} else {
return matchInstantly(order, bestBidOrder, bidOrders, { makerPrice: Long ->
order.orderType == OrderType.MARKET_ORDER || makerPrice >= order.price
- }) { newMakerOrder: SimpleOrder? ->
+ }) { newMakerOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestBidOrder = newMakerOrder
}
}
}
- private fun putGtcInQueue(order: SimpleOrder): SimpleOrder {
+ private fun putGtcInQueue(order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder): co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder {
if (order.direction == OrderDirection.BID) {
return putGtcInQueue(order, bidOrders, bestBidOrder, { price, queue ->
queue.getHigherValue(price)
- }) { newMakerOrder: SimpleOrder? ->
+ }) { newMakerOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestBidOrder = newMakerOrder
}
} else {
return putGtcInQueue(order, askOrders, bestAskOrder, { price, queue ->
queue.getLowerValue(price)
- }) { newMakerOrder: SimpleOrder? ->
+ }) { newMakerOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder? ->
bestAskOrder = newMakerOrder
}
}
}
- private fun matchInstantly(order: SimpleOrder, makerOrder: SimpleOrder?, queue: LongAdaptiveRadixTreeMap, isPriceMatched: (makerPrice: Long) -> Boolean, setNewMarkerOrder: (SimpleOrder?) -> Unit): SimpleOrder {
+ private fun matchInstantly(
+ order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder,
+ makerOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder?,
+ queue: LongAdaptiveRadixTreeMap,
+ isPriceMatched: (makerPrice: Long) -> Boolean,
+ setNewMarkerOrder: (co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder?) -> Unit
+ ): co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder {
//the best sell price is higher the requested buy price, so no instant match
if (makerOrder == null || !isPriceMatched(makerOrder.price)) {
return order
@@ -327,8 +470,26 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
currentMaker.filledQuantity += instantMatchQuantity
currentMaker.bucket!!.totalQuantity -= instantMatchQuantity
if (!replayMode) {
- EventDispatcher.emit(TradeEvent(tradeCounter.incrementAndGet(), pair, order.ouid, order.uuid, order.id
- ?: 0, order.direction, order.price, order.remainedQuantity(), currentMaker.ouid, currentMaker.uuid, currentMaker.id!!, currentMaker.direction, currentMaker.price, currentMaker.remainedQuantity(), instantMatchQuantity))
+ EventDispatcher.emit(
+ TradeEvent(
+ tradeCounter.incrementAndGet(),
+ pair,
+ order.ouid,
+ order.uuid,
+ order.id
+ ?: 0,
+ order.direction,
+ order.price,
+ order.remainedQuantity(),
+ currentMaker.ouid,
+ currentMaker.uuid,
+ currentMaker.id!!,
+ currentMaker.direction,
+ currentMaker.price,
+ currentMaker.remainedQuantity(),
+ instantMatchQuantity
+ )
+ )
}
if (currentMaker.remainedQuantity() == 0L) {
currentMaker.bucket!!.ordersCount--
@@ -347,8 +508,8 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
currentMaker = currentMaker.worse
} while (order.remainedQuantity() > 0
- && currentMaker != null
- && isPriceMatched(currentMaker.price)
+ && currentMaker != null
+ && isPriceMatched(currentMaker.price)
)
if (currentMaker != null) {
currentMaker.better = null
@@ -359,12 +520,13 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
}
- private fun putGtcInQueue(order: SimpleOrder,
- queue: LongAdaptiveRadixTreeMap,
- bestOrder: SimpleOrder?,
- betterBucketSelector: (price: Long, queue: LongAdaptiveRadixTreeMap) -> Bucket?,
- setNewMarkerOrder: (SimpleOrder?) -> Unit
- ): SimpleOrder {
+ private fun putGtcInQueue(
+ order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder,
+ queue: LongAdaptiveRadixTreeMap,
+ bestOrder: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder?,
+ betterBucketSelector: (price: Long, queue: LongAdaptiveRadixTreeMap) -> co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.Bucket?,
+ setNewMarkerOrder: (co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder?) -> Unit
+ ): co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder {
if (order.id == null)
order.id = orderCounter.incrementAndGet()
orders[order.id!!] = order
@@ -383,7 +545,7 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
order.better = bucketLastOrder
order.worse = worseOfBucketLastOrder
} else {
- bucket = Bucket(
+ bucket = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.Bucket(
order.price,
order.remainedQuantity(),
1,
@@ -431,13 +593,13 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
val persistent = PersistentOrderBook(pair)
persistent.lastOrder = lastOrder?.persistent()
persistent.orders = orders.values
- .map { order -> order.persistent() }
+ .map { order -> order.persistent() }
return persistent
}
fun rebuild(persistentOrderBook: PersistentOrderBook) {
persistentOrderBook.orders?.map { order ->
- SimpleOrder(
+ co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder(
order.id,
order.ouid,
order.uuid,
@@ -451,12 +613,13 @@ class SimpleOrderBook(val pair: Pair, var replayMode: Boolean) : OrderBook {
null,
null
)
- }?.filter { order -> order.matchConstraint == MatchConstraint.GTC
+ }?.filter { order ->
+ order.matchConstraint == MatchConstraint.GTC
}?.forEach { order -> putGtcInQueue(order) }
- orderCounter.set(persistentOrderBook.lastOrder?.id?:0)
+ orderCounter.set(persistentOrderBook.lastOrder?.id ?: 0)
}
- private fun logCurrentState(){
+ private fun logCurrentState() {
logger.info("******************** ${pair.leftSideName}-${pair.rightSideName} ********************")
logger.info("** askOrders size: ${askOrders.entriesList().size}")
logger.info("** bidOrders size: ${bidOrders.entriesList().size}")
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/EventDispatcher.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/EventDispatcher.kt
similarity index 75%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/EventDispatcher.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/EventDispatcher.kt
index 375404d41..7d6c4d4f4 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/EventDispatcher.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/EventDispatcher.kt
@@ -1,13 +1,7 @@
-package co.nilin.opex.matching.core.eventh
+package co.nilin.opex.matching.engine.core.eventh
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import kotlinx.coroutines.CoroutineScope
-import kotlinx.coroutines.asCoroutineDispatcher
-import kotlinx.coroutines.async
-import kotlinx.coroutines.launch
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
import java.util.*
-import java.util.concurrent.Executors
-import kotlin.coroutines.suspendCoroutine
object EventDispatcher {
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CancelOrderEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CancelOrderEvent.kt
similarity index 55%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CancelOrderEvent.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CancelOrderEvent.kt
index 300960035..708bfa6c4 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CancelOrderEvent.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CancelOrderEvent.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.matching.core.eventh.events
+package co.nilin.opex.matching.engine.core.eventh.events
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
-class CancelOrderEvent() : CoreEvent(), OneOrderEvent{
+class CancelOrderEvent() : CoreEvent(), OneOrderEvent {
var ouid: String = ""
var uuid: String = ""
var orderId: Long = 0
@@ -15,16 +15,18 @@ class CancelOrderEvent() : CoreEvent(), OneOrderEvent{
var matchConstraint: MatchConstraint = MatchConstraint.GTC
var orderType: OrderType = OrderType.LIMIT_ORDER
- constructor(ouid: String,
- uuid: String,
- orderId: Long,
- pair: co.nilin.opex.matching.core.model.Pair,
- price: Long,
- quantity: Long,
- remainedQuantity: Long,
- direction: OrderDirection,
- matchConstraint: MatchConstraint,
- orderType: OrderType)
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ price: Long,
+ quantity: Long,
+ remainedQuantity: Long,
+ direction: OrderDirection,
+ matchConstraint: MatchConstraint,
+ orderType: OrderType
+ )
: this() {
this.ouid = ouid
this.uuid = uuid
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CoreEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CoreEvent.kt
similarity index 56%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CoreEvent.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CoreEvent.kt
index 44dff675f..24039f538 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CoreEvent.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CoreEvent.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.matching.core.eventh.events
+package co.nilin.opex.matching.engine.core.eventh.events
-import co.nilin.opex.matching.core.model.Pair
+import co.nilin.opex.matching.engine.core.model.Pair
import java.time.LocalDateTime
open class CoreEvent {
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CreateOrderEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CreateOrderEvent.kt
similarity index 55%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CreateOrderEvent.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CreateOrderEvent.kt
index 25a0896fe..d05823d7f 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/CreateOrderEvent.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/CreateOrderEvent.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.matching.core.eventh.events
+package co.nilin.opex.matching.engine.core.eventh.events
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
-class CreateOrderEvent() : CoreEvent() , OneOrderEvent{
+class CreateOrderEvent() : CoreEvent(), OneOrderEvent {
var ouid: String = ""
var uuid: String = ""
var orderId: Long = 0
@@ -15,16 +15,18 @@ class CreateOrderEvent() : CoreEvent() , OneOrderEvent{
var matchConstraint: MatchConstraint = MatchConstraint.GTC
var orderType: OrderType = OrderType.LIMIT_ORDER
- constructor(ouid: String,
- uuid: String,
- orderId: Long,
- pair: co.nilin.opex.matching.core.model.Pair,
- price: Long,
- quantity: Long,
- remainedQuantity: Long,
- direction: OrderDirection,
- matchConstraint: MatchConstraint,
- orderType: OrderType)
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ price: Long,
+ quantity: Long,
+ remainedQuantity: Long,
+ direction: OrderDirection,
+ matchConstraint: MatchConstraint,
+ orderType: OrderType
+ )
: this() {
this.ouid = ouid
this.uuid = uuid
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/EditOrderRequestEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/EditOrderRequestEvent.kt
similarity index 53%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/EditOrderRequestEvent.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/EditOrderRequestEvent.kt
index 02e7b3cca..b8a86f403 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/EditOrderRequestEvent.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/EditOrderRequestEvent.kt
@@ -1,20 +1,21 @@
-package co.nilin.opex.matching.core.eventh.events
+package co.nilin.opex.matching.engine.core.eventh.events
-class EditOrderRequestEvent(): CoreEvent() , OneOrderEvent{
+class EditOrderRequestEvent() : CoreEvent(), OneOrderEvent {
var ouid: String = ""
var uuid: String = ""
var orderId: Long = 0
var price: Long = 0
var quantity: Long = 0
- constructor(ouid: String,
- uuid: String,
- orderId: Long,
- pair: co.nilin.opex.matching.core.model.Pair,
- price: Long,
- quantity: Long,
- )
- : this(){
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ price: Long,
+ quantity: Long,
+ )
+ : this() {
this.ouid = ouid
this.uuid = uuid
this.orderId = orderId
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/OneOrderEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/OneOrderEvent.kt
similarity index 56%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/OneOrderEvent.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/OneOrderEvent.kt
index 21ab23dbd..4031e2982 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/OneOrderEvent.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/OneOrderEvent.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.matching.core.eventh.events
+package co.nilin.opex.matching.engine.core.eventh.events
interface OneOrderEvent {
fun ouid(): String
diff --git a/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/OrderBookPublishedEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/OrderBookPublishedEvent.kt
new file mode 100644
index 000000000..2aa2b016b
--- /dev/null
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/OrderBookPublishedEvent.kt
@@ -0,0 +1,5 @@
+package co.nilin.opex.matching.engine.core.eventh.events
+
+import co.nilin.opex.matching.engine.core.model.PersistentOrderBook
+
+data class OrderBookPublishedEvent(val persistentOrderBook: PersistentOrderBook) : CoreEvent()
\ No newline at end of file
diff --git a/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/RejectOrderEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/RejectOrderEvent.kt
new file mode 100644
index 000000000..ae8b6a45d
--- /dev/null
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/RejectOrderEvent.kt
@@ -0,0 +1,91 @@
+package co.nilin.opex.matching.engine.core.eventh.events
+
+import co.nilin.opex.matching.engine.core.inout.RejectReason
+import co.nilin.opex.matching.engine.core.inout.RequestedOperation
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+
+class RejectOrderEvent() : CoreEvent(), OneOrderEvent {
+ var ouid: String = ""
+ var uuid: String = ""
+ var orderId: Long? = null
+ var price: Long? = null
+ var quantity: Long? = null
+ var direction: OrderDirection? = null
+ var matchConstraint: MatchConstraint? = null
+ var orderType: OrderType? = null
+ var requestedOperation: RequestedOperation = RequestedOperation.PLACE_ORDER
+ var reason: RejectReason? = null
+
+ constructor(
+ ouid: String,
+ uuid: String,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ price: Long,
+ quantity: Long,
+ direction: OrderDirection,
+ matchConstraint: MatchConstraint,
+ orderType: OrderType,
+ requestedOperation: RequestedOperation,
+ reason: RejectReason?
+ )
+ : this(
+ ouid,
+ uuid,
+ null,
+ pair,
+ price,
+ quantity,
+ direction,
+ matchConstraint,
+ orderType,
+ requestedOperation,
+ reason
+ )
+
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ requestedOperation: RequestedOperation,
+ reason: RejectReason?
+ )
+ : this(ouid, uuid, orderId, pair, null, null, null, null, null, requestedOperation, reason)
+
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long?,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ price: Long?,
+ quantity: Long?,
+ direction: OrderDirection?,
+ matchConstraint: MatchConstraint?,
+ orderType: OrderType?,
+ requestedOperation: RequestedOperation,
+ reason: RejectReason?
+ )
+ : this() {
+ this.ouid = ouid
+ this.uuid = uuid
+ this.orderId = orderId
+ this.pair = pair
+ this.price = price
+ this.quantity = quantity
+ this.direction = direction
+ this.matchConstraint = matchConstraint
+ this.orderType = orderType
+ this.requestedOperation = requestedOperation
+ this.reason = reason
+ }
+
+ override fun ouid(): String {
+ return ouid
+ }
+
+ override fun uuid(): String {
+ return uuid
+ }
+}
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/SubmitOrderEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/SubmitOrderEvent.kt
similarity index 55%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/SubmitOrderEvent.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/SubmitOrderEvent.kt
index 8c6b7518e..eef8b3417 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/SubmitOrderEvent.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/SubmitOrderEvent.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.matching.core.eventh.events
+package co.nilin.opex.matching.engine.core.eventh.events
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
-class SubmitOrderEvent() : CoreEvent() , OneOrderEvent{
+class SubmitOrderEvent() : CoreEvent(), OneOrderEvent {
var ouid: String = ""
var uuid: String = ""
var orderId: Long? = null
@@ -15,16 +15,18 @@ class SubmitOrderEvent() : CoreEvent() , OneOrderEvent{
var matchConstraint: MatchConstraint = MatchConstraint.GTC
var orderType: OrderType = OrderType.LIMIT_ORDER
- constructor(ouid: String,
- uuid: String,
- orderId: Long?,
- pair: co.nilin.opex.matching.core.model.Pair,
- price: Long,
- quantity: Long,
- remainedQuantity: Long,
- direction: OrderDirection,
- matchConstraint: MatchConstraint,
- orderType: OrderType)
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long?,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ price: Long,
+ quantity: Long,
+ remainedQuantity: Long,
+ direction: OrderDirection,
+ matchConstraint: MatchConstraint,
+ orderType: OrderType
+ )
: this() {
this.ouid = ouid
this.uuid = uuid
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/TradeEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/TradeEvent.kt
similarity index 62%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/TradeEvent.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/TradeEvent.kt
index 7408f7ab0..a451b6378 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/TradeEvent.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/TradeEvent.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.matching.core.eventh.events
+package co.nilin.opex.matching.engine.core.eventh.events
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderDirection
class TradeEvent() : CoreEvent() {
var tradeId: Long = 0
@@ -19,21 +19,22 @@ class TradeEvent() : CoreEvent() {
var matchedQuantity: Long = 0
- constructor(tradeId: Long,
- pair: co.nilin.opex.matching.core.model.Pair,
- takerOuid: String,
- takerUuid: String,
- takerOrderId: Long,
- takerDirection: OrderDirection,
- takerPrice: Long,
- takerRemainedQuantity: Long,
- makerOuid: String,
- makerUuid: String,
- makerOrderId: Long,
- makerDirection: OrderDirection,
- makerPrice: Long,
- makerRemainedQuantity: Long,
- matchedQuantity: Long
+ constructor(
+ tradeId: Long,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ takerOuid: String,
+ takerUuid: String,
+ takerOrderId: Long,
+ takerDirection: OrderDirection,
+ takerPrice: Long,
+ takerRemainedQuantity: Long,
+ makerOuid: String,
+ makerUuid: String,
+ makerOrderId: Long,
+ makerDirection: OrderDirection,
+ makerPrice: Long,
+ makerRemainedQuantity: Long,
+ matchedQuantity: Long
)
: this() {
this.tradeId = tradeId
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/UpdatedOrderEvent.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/UpdatedOrderEvent.kt
similarity index 55%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/UpdatedOrderEvent.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/UpdatedOrderEvent.kt
index 744186d0a..0d6528a5f 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/eventh/events/UpdatedOrderEvent.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/eventh/events/UpdatedOrderEvent.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.matching.core.eventh.events
+package co.nilin.opex.matching.engine.core.eventh.events
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
-class UpdatedOrderEvent(): CoreEvent() , OneOrderEvent{
+class UpdatedOrderEvent() : CoreEvent(), OneOrderEvent {
var ouid: String = ""
var uuid: String = ""
var orderId: Long = 0
@@ -17,19 +17,21 @@ class UpdatedOrderEvent(): CoreEvent() , OneOrderEvent{
var matchConstraint: MatchConstraint = MatchConstraint.GTC
var orderType: OrderType = OrderType.LIMIT_ORDER
- constructor(ouid: String,
- uuid: String,
- orderId: Long,
- pair: co.nilin.opex.matching.core.model.Pair,
- oldPrice: Long,
- oldQuantity: Long,
- price: Long,
- quantity: Long,
- remainedQuantity: Long,
- direction: OrderDirection,
- matchConstraint: MatchConstraint,
- orderType: OrderType)
- : this(){
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long,
+ pair: co.nilin.opex.matching.engine.core.model.Pair,
+ oldPrice: Long,
+ oldQuantity: Long,
+ price: Long,
+ quantity: Long,
+ remainedQuantity: Long,
+ direction: OrderDirection,
+ matchConstraint: MatchConstraint,
+ orderType: OrderType
+ )
+ : this() {
this.ouid = ouid
this.uuid = uuid
this.orderId = orderId
diff --git a/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/factory/OrderBookFactory.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/factory/OrderBookFactory.kt
new file mode 100644
index 000000000..e3a1010d3
--- /dev/null
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/factory/OrderBookFactory.kt
@@ -0,0 +1,17 @@
+package co.nilin.opex.matching.engine.core.factory
+
+import co.nilin.opex.matching.engine.core.model.OrderBook
+import co.nilin.opex.matching.engine.core.model.PersistentOrderBook
+
+object OrderBookFactory {
+ fun createOrderBook(pair: co.nilin.opex.matching.engine.core.model.Pair): OrderBook {
+ return co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ }
+
+ fun createOrderBook(persistentOrderBook: PersistentOrderBook): OrderBook {
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(persistentOrderBook.pair, true)
+ orderBook.rebuild(persistentOrderBook)
+ orderBook.stopReplayMode()
+ return orderBook
+ }
+}
\ No newline at end of file
diff --git a/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderCancelCommand.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderCancelCommand.kt
new file mode 100644
index 000000000..87087d728
--- /dev/null
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderCancelCommand.kt
@@ -0,0 +1,5 @@
+package co.nilin.opex.matching.engine.core.inout
+
+import co.nilin.opex.matching.engine.core.model.Pair
+
+class OrderCancelCommand(val ouid: String, val uuid: String, val orderId: Long, val pair: Pair)
\ No newline at end of file
diff --git a/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderCreateCommand.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderCreateCommand.kt
new file mode 100644
index 000000000..da062871d
--- /dev/null
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderCreateCommand.kt
@@ -0,0 +1,18 @@
+package co.nilin.opex.matching.engine.core.inout
+
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.Pair
+
+
+data class OrderCreateCommand(
+ val ouid: String,
+ val uuid: String,
+ val pair: Pair,
+ val price: Long,
+ val quantity: Long,
+ val direction: OrderDirection,
+ val matchConstraint: MatchConstraint,
+ val orderType: OrderType
+)
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderEditCommand.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderEditCommand.kt
similarity index 61%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderEditCommand.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderEditCommand.kt
index beb7697eb..1db450e3c 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/OrderEditCommand.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/OrderEditCommand.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.matching.core.inout
+package co.nilin.opex.matching.engine.core.inout
-import co.nilin.opex.matching.core.model.Pair
+import co.nilin.opex.matching.engine.core.model.Pair
data class OrderEditCommand(
val ouid: String,
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/RejectReason.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/RejectReason.kt
similarity index 68%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/RejectReason.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/RejectReason.kt
index 33aa2caa8..bbe6b8660 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/RejectReason.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/RejectReason.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.matching.core.inout
+package co.nilin.opex.matching.engine.core.inout
enum class RejectReason {
ORDER_TYPE_NOT_MATCHED_MATCHC, ORDER_NOT_FOUND, OPERATION_NOT_MATCHED_MATCHC
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/RequestedOperation.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/RequestedOperation.kt
similarity index 60%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/RequestedOperation.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/RequestedOperation.kt
index fe3d61268..c7382157f 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/inout/RequestedOperation.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/inout/RequestedOperation.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.matching.core.inout
+package co.nilin.opex.matching.engine.core.inout
enum class RequestedOperation {
PLACE_ORDER, CANCEL_ORDER, EDIT_ORDER
diff --git a/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/Order.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/Order.kt
new file mode 100644
index 000000000..662fcbfbc
--- /dev/null
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/Order.kt
@@ -0,0 +1,6 @@
+package co.nilin.opex.matching.engine.core.model
+
+interface Order {
+ fun id(): Long?
+ fun persistent(): PersistentOrder
+}
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/OrderBook.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/OrderBook.kt
similarity index 56%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/OrderBook.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/OrderBook.kt
index ea73482bd..07282860f 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/OrderBook.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/OrderBook.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.matching.core.model
+package co.nilin.opex.matching.engine.core.model
-import co.nilin.opex.matching.core.inout.OrderCancelCommand
-import co.nilin.opex.matching.core.inout.OrderEditCommand
-import co.nilin.opex.matching.core.inout.OrderCreateCommand
+import co.nilin.opex.matching.engine.core.inout.OrderCancelCommand
+import co.nilin.opex.matching.engine.core.inout.OrderCreateCommand
+import co.nilin.opex.matching.engine.core.inout.OrderEditCommand
interface OrderBook {
fun pair(): Pair
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/OrderMetaData.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/OrderMetaData.kt
similarity index 90%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/OrderMetaData.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/OrderMetaData.kt
index 379dcf2fa..8c3587e08 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/OrderMetaData.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/OrderMetaData.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.matching.core.model
+package co.nilin.opex.matching.engine.core.model
enum class OrderDirection {
ASK, BID
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/Pair.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/Pair.kt
similarity index 87%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/Pair.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/Pair.kt
index 622d8e3fd..bb873ed09 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/Pair.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/Pair.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.matching.core.model
+package co.nilin.opex.matching.engine.core.model
class Pair() {
lateinit var leftSideName: String
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/PersistentOrder.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/PersistentOrder.kt
similarity index 94%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/PersistentOrder.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/PersistentOrder.kt
index a5b19a5e1..f4723632e 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/model/PersistentOrder.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/PersistentOrder.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.matching.core.model
+package co.nilin.opex.matching.engine.core.model
class PersistentOrder {
var id: Long = 0
diff --git a/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/PersistentOrderBook.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/PersistentOrderBook.kt
new file mode 100644
index 000000000..4807125d6
--- /dev/null
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/model/PersistentOrderBook.kt
@@ -0,0 +1,16 @@
+package co.nilin.opex.matching.engine.core.model
+
+class PersistentOrderBook {
+
+ lateinit var pair: Pair
+ var lastOrder: PersistentOrder? = null
+ var orders: List? = emptyList()
+
+ constructor() {
+ }
+
+ constructor(pair: Pair) {
+ this.pair = pair
+ }
+
+}
\ No newline at end of file
diff --git a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/spi/OrderBookPersister.kt b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/spi/OrderBookPersister.kt
similarity index 58%
rename from MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/spi/OrderBookPersister.kt
rename to matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/spi/OrderBookPersister.kt
index f0adff00a..48b7c1ceb 100644
--- a/MatchingEngine/matching-core/src/main/kotlin/co/nilin/opex/matching/core/spi/OrderBookPersister.kt
+++ b/matching-engine/matching-engine-core/src/main/kotlin/co/nilin/opex/matching/engine/core/spi/OrderBookPersister.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.matching.core.spi
+package co.nilin.opex.matching.engine.core.spi
-import co.nilin.opex.matching.core.model.PersistentOrderBook
+import co.nilin.opex.matching.engine.core.model.PersistentOrderBook
interface OrderBookPersister {
suspend fun storeLastState(orderBook: PersistentOrderBook)
diff --git a/matching-engine/matching-engine-core/src/test/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBookUnitTest.kt b/matching-engine/matching-engine-core/src/test/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBookUnitTest.kt
new file mode 100644
index 000000000..8cdbcf9a4
--- /dev/null
+++ b/matching-engine/matching-engine-core/src/test/kotlin/co/nilin/opex/matching/core/engine/SimpleOrderBookUnitTest.kt
@@ -0,0 +1,851 @@
+package co.nilin.opex.matching.engine.core.engine
+
+import co.nilin.opex.matching.engine.core.inout.OrderCancelCommand
+import co.nilin.opex.matching.engine.core.inout.OrderCreateCommand
+import co.nilin.opex.matching.engine.core.inout.OrderEditCommand
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+import kotlinx.coroutines.Dispatchers
+import org.junit.jupiter.api.Assertions
+import org.junit.jupiter.api.Test
+import java.util.*
+
+class SimpleOrderBookUnitTest {
+ val pair = co.nilin.opex.matching.engine.core.model.Pair("BTC", "USDT")
+ val ETH_BTC_PAIR = co.nilin.opex.matching.engine.core.model.Pair("ETH", "BTC")
+ val uuid = UUID.randomUUID().toString()
+
+ @Test
+ fun givenEmptyOrderBook_whenGtcBidLimitOrderCreated_then1BucketWithSize1() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ //when
+ val order = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 1)
+ Assertions.assertEquals(orderBook.bestBidOrder, order)
+ Dispatchers.Default
+ }
+
+ @Test
+ fun givenOrderBookWithBidOrders_whenGtcBidLimitOrderWithSamePriceCreated_then() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val bestBidOrder = orderBook.bestBidOrder
+ //when
+ val order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder =
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 1)
+ Assertions.assertEquals(orderBook.bestBidOrder, bestBidOrder)
+ Assertions.assertEquals(bestBidOrder!!.worse, order)
+ Assertions.assertEquals(order.better, bestBidOrder)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).lastOrder, order)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).totalQuantity, 2)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).ordersCount, 2)
+ }
+
+ @Test
+ fun givenOrderBookWithBidOrders_whenGtcBidLimitOrderWithLowerPriceCreated_thenBestOrderNotChange() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val bestBidOrder = orderBook.bestBidOrder
+ //when
+ val order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder =
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 2)
+ Assertions.assertEquals(orderBook.bestBidOrder, bestBidOrder)
+ Assertions.assertEquals(bestBidOrder!!.worse, order)
+ Assertions.assertEquals(order.better, bestBidOrder)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).lastOrder, order)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).totalQuantity, 1)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).ordersCount, 1)
+ }
+
+ @Test
+ fun givenOrderBookWithBidOrders_whenGtcBidLimitOrderWithHigherPriceCreated_thenBestOrderChanged() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val bestBidOrder = orderBook.bestBidOrder
+ //when
+ val order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder =
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 2)
+ Assertions.assertEquals(orderBook.bestBidOrder, order)
+ Assertions.assertEquals(bestBidOrder!!.better, order)
+ Assertions.assertEquals(order.worse, bestBidOrder)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).lastOrder, order)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).totalQuantity, 1)
+ Assertions.assertEquals(orderBook.bidOrders.get(order.price).ordersCount, 1)
+ }
+
+ @Test
+ fun givenOrderBookWithBidOrders_whenGtcAskLimitOrderWithSamePriceCreated_thenInstantMatch() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //when
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 0)
+ Assertions.assertEquals(orderBook.askOrders.entriesList().size, 0)
+ Assertions.assertNull(orderBook.bestBidOrder)
+ Assertions.assertNull(orderBook.bestAskOrder)
+ }
+
+ @Test
+ fun givenOrderBookWithBidOrders_whenGtcAskLimitOrderWithNotMatchPriceCreated_thenAddToQueue() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //when
+ val order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder =
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 3,
+ 1,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 2)
+ Assertions.assertEquals(orderBook.askOrders.entriesList().size, 1)
+ Assertions.assertNotNull(orderBook.bestBidOrder)
+ Assertions.assertEquals(orderBook.bestAskOrder, order)
+ }
+
+ @Test
+ fun givenOrderBookWithBidAndAskOrders_whenGtcAskLimitOrderWithMatchPriceGreaterQuantityCreated_thenAddToQueue() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 3,
+ 1,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //when
+ val order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder =
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 3,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 0)
+ Assertions.assertEquals(orderBook.askOrders.entriesList().size, 2)
+ Assertions.assertNull(orderBook.bestBidOrder)
+ Assertions.assertEquals(orderBook.bestAskOrder, order)
+ }
+
+ @Test
+ fun givenOrderBook_whenCancelBestBidOrder_thenBestBidOrderChange() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ val firstOrderId = UUID.randomUUID().toString()
+ val secondOrderId = UUID.randomUUID().toString()
+
+ val firstOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ firstOrderId,
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val lastOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ secondOrderId,
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //when
+ orderBook.handleCancelCommand(OrderCancelCommand(firstOrderId, uuid, firstOrder!!.id()!!, pair))
+ //then
+ Assertions.assertEquals(orderBook.bestBidOrder, lastOrder)
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 1)
+ }
+
+ @Test
+ fun givenOrderBookWithMoreBids_whenCancelBestBidOrder_thenBestBidOrderChange() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ val firstOrderId = UUID.randomUUID().toString()
+ val secondOrderId = UUID.randomUUID().toString()
+
+ val firstOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ firstOrderId,
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val secondOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ secondOrderId,
+ uuid,
+ pair,
+ 2,
+ 3,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //when
+ orderBook.handleCancelCommand(OrderCancelCommand(firstOrderId, uuid, firstOrder!!.id()!!, pair))
+ //then
+ Assertions.assertEquals(orderBook.bestBidOrder, secondOrder)
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 2)
+ }
+
+ @Test
+ fun givenOrderBookWithMoreBids_whenCancelABidOrder_thenBestBidOrderNotChange() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ val firstOrderId = UUID.randomUUID().toString()
+ val secondOrderId = UUID.randomUUID().toString()
+
+ val firstOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ firstOrderId,
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val secondOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ secondOrderId,
+ uuid,
+ pair,
+ 2,
+ 3,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //when
+ orderBook.handleCancelCommand(OrderCancelCommand(secondOrderId, uuid, secondOrder!!.id()!!, pair))
+ //then
+ Assertions.assertEquals(orderBook.bestBidOrder, firstOrder)
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 2)
+ }
+
+
+ @Test
+ fun givenOrderBookWithMoreBids_whenEditABidOrder_thenBestBidOrderChange() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val secondOrder = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 3,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //when
+ val order = orderBook.handleEditCommand(
+ OrderEditCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ secondOrder!!.id()!!,
+ pair,
+ 3,
+ 2
+ )
+ )
+ //then
+ Assertions.assertEquals(secondOrder.id(), order?.id())
+ Assertions.assertEquals(orderBook.bestBidOrder, order)
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 3)
+ }
+
+ @Test
+ fun givenOrderBookWithBidAndAskOrders_whenEditABidOrder_thenRefill() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val secondBid = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 3,
+ 1,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ //when
+ val order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder = orderBook.handleEditCommand(
+ OrderEditCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ secondBid!!.id()!!,
+ pair,
+ 3,
+ 3
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(2, orderBook.bidOrders.entriesList().size)
+ Assertions.assertEquals(0, orderBook.askOrders.entriesList().size)
+ Assertions.assertEquals(orderBook.bestBidOrder, order)
+ Assertions.assertNull(orderBook.bestAskOrder)
+ }
+
+ @Test
+ fun givenEmptyOrderBook_whenGtcBidMarketOrderCreated_thenRejected() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ //when
+
+ val order = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.MARKET_ORDER
+ )
+ )
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 0)
+ Assertions.assertNull(orderBook.bestBidOrder)
+ Assertions.assertNull(order)
+ }
+
+ @Test
+ fun givenEmptyOrderBook_whenIocBidMarketOrderCreated_thenNoOrderCreated() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ //when
+
+ val order = orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.MARKET_ORDER
+ )
+ )
+ //then
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 0)
+ Assertions.assertNull(orderBook.bestBidOrder)
+ Assertions.assertNull(order)
+ }
+
+ @Test
+ fun givenOrderBookWithBidAndAskOrders_whenIocAskMarketOrderWithGreaterQuantityCreated_thenPartiallyFilled() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 3,
+ 1,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val bestAskOrder = orderBook.bestAskOrder
+ //when
+ val order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder =
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 0,
+ 3,
+ OrderDirection.ASK,
+ MatchConstraint.IOC,
+ OrderType.MARKET_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(2, order.filledQuantity)
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 0)
+ Assertions.assertEquals(orderBook.askOrders.entriesList().size, 1)
+ Assertions.assertNull(orderBook.bestBidOrder)
+ Assertions.assertEquals(orderBook.bestAskOrder, bestAskOrder)
+ }
+
+ @Test
+ fun givenOrderBookWithBidAndAskOrders_whenIocAskLimitOrderWithHigherPriceAndGreaterQuantityCreated_thenNotFilled() {
+ //given
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(pair, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 2,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 1,
+ 1,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 3,
+ 1,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ )
+ val bestAskOrder = orderBook.bestAskOrder
+ val bestBidOrder = orderBook.bestBidOrder
+ //when
+ val order: co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder =
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ pair,
+ 3,
+ 3,
+ OrderDirection.ASK,
+ MatchConstraint.IOC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ //then
+ Assertions.assertEquals(0, order.filledQuantity)
+ Assertions.assertEquals(orderBook.bidOrders.entriesList().size, 2)
+ Assertions.assertEquals(orderBook.askOrders.entriesList().size, 1)
+ Assertions.assertEquals(bestBidOrder, orderBook.bestBidOrder)
+ Assertions.assertEquals(bestAskOrder, orderBook.bestAskOrder)
+ }
+
+ @Test
+ fun whenSample1SequenceOfOrdersOccurs_thenAllSuccess() {
+
+ val orderBook = co.nilin.opex.matching.engine.core.engine.SimpleOrderBook(ETH_BTC_PAIR, false)
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ ETH_BTC_PAIR,
+ 5000000,
+ 10000,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ Assertions.assertNotNull(orderBook.bestBidOrder)
+ Assertions.assertEquals(1, orderBook.bidOrders.entriesList().size)
+ Assertions.assertEquals(1, orderBook.orders.size)
+
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ ETH_BTC_PAIR,
+ 4900000,
+ 20000,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ Assertions.assertNull(orderBook.bestBidOrder)
+ Assertions.assertNotNull(orderBook.bestAskOrder)
+ Assertions.assertEquals(0, orderBook.bidOrders.entriesList().size)
+ Assertions.assertEquals(1, orderBook.askOrders.entriesList().size)
+ Assertions.assertEquals(1, orderBook.orders.size)
+
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ ETH_BTC_PAIR,
+ 4800000,
+ 10000,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ Assertions.assertNull(orderBook.bestBidOrder)
+ Assertions.assertNotNull(orderBook.bestAskOrder)
+ Assertions.assertEquals(0, orderBook.bidOrders.entriesList().size)
+ Assertions.assertEquals(2, orderBook.askOrders.entriesList().size)
+ Assertions.assertEquals(2, orderBook.orders.size)
+
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ ETH_BTC_PAIR,
+ 4850000,
+ 20000,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ Assertions.assertEquals(1, orderBook.bidOrders.entriesList().size)
+ Assertions.assertEquals(1, orderBook.askOrders.entriesList().size)
+ Assertions.assertEquals(2, orderBook.orders.size)
+ Assertions.assertNotNull(orderBook.bestBidOrder)
+ Assertions.assertNotNull(orderBook.bestAskOrder)
+
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ ETH_BTC_PAIR,
+ 4850100,
+ 10000,
+ OrderDirection.ASK,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ Assertions.assertEquals(1, orderBook.bidOrders.entriesList().size)
+ Assertions.assertEquals(2, orderBook.askOrders.entriesList().size)
+ Assertions.assertEquals(3, orderBook.orders.size)
+ Assertions.assertNotNull(orderBook.bestBidOrder)
+ Assertions.assertNotNull(orderBook.bestAskOrder)
+
+ orderBook.handleNewOrderCommand(
+ OrderCreateCommand(
+ UUID.randomUUID().toString(),
+ uuid,
+ ETH_BTC_PAIR,
+ 4849900,
+ 10000,
+ OrderDirection.BID,
+ MatchConstraint.GTC,
+ OrderType.LIMIT_ORDER
+ )
+ ) as co.nilin.opex.matching.engine.core.engine.SimpleOrderBook.SimpleOrder
+ Assertions.assertEquals(2, orderBook.bidOrders.entriesList().size)
+ Assertions.assertEquals(2, orderBook.askOrders.entriesList().size)
+ Assertions.assertEquals(4, orderBook.orders.size)
+ Assertions.assertNotNull(orderBook.bestBidOrder)
+ Assertions.assertNotNull(orderBook.bestAskOrder)
+ }
+
+}
\ No newline at end of file
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/mvnw b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/mvnw
similarity index 100%
rename from MatchingEngine/matching-ports/matching-eventlistener-kafka/mvnw
rename to matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/mvnw
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/mvnw.cmd b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/mvnw.cmd
similarity index 100%
rename from MatchingEngine/matching-ports/matching-eventlistener-kafka/mvnw.cmd
rename to matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/mvnw.cmd
diff --git a/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/pom.xml b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/pom.xml
new file mode 100644
index 000000000..543466e63
--- /dev/null
+++ b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.matching.engine
+ matching-engine
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.matching.engine.ports.kafka.listener
+ matching-engine-eventlistener-kafka
+ matching-engine-eventlistener-kafka
+ Matching engine kafka order submitter of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/OrderKafkaConfig.kt b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/config/OrderKafkaConfig.kt
similarity index 86%
rename from MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/OrderKafkaConfig.kt
rename to matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/config/OrderKafkaConfig.kt
index b2ad1fae5..598fa79c5 100644
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/OrderKafkaConfig.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/config/OrderKafkaConfig.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.order.kafka.config
+package co.nilin.opex.matching.engine.ports.kafka.listener.config
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.order.kafka.consumer.EventKafkaListener
-import co.nilin.opex.port.order.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.ports.kafka.listener.consumer.EventKafkaListener
+import co.nilin.opex.matching.engine.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.matching.engine.ports.kafka.listener.inout.OrderSubmitRequest
import org.apache.kafka.clients.admin.NewTopic
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.clients.producer.ProducerConfig
@@ -12,23 +12,15 @@ import org.apache.kafka.common.serialization.StringSerializer
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.beans.factory.annotation.Value
-import org.springframework.context.ApplicationContext
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.support.GenericApplicationContext
-import org.springframework.kafka.config.TopicBuilder
-import org.springframework.kafka.core.ConsumerFactory
-import org.springframework.kafka.core.DefaultKafkaConsumerFactory
-import org.springframework.kafka.core.DefaultKafkaProducerFactory
-import org.springframework.kafka.core.KafkaAdmin
-import org.springframework.kafka.core.KafkaTemplate
-import org.springframework.kafka.core.ProducerFactory
+import org.springframework.kafka.core.*
import org.springframework.kafka.listener.ConcurrentMessageListenerContainer
import org.springframework.kafka.listener.ContainerProperties
import org.springframework.kafka.listener.KafkaMessageListenerContainer
import org.springframework.kafka.support.serializer.JsonDeserializer
import org.springframework.kafka.support.serializer.JsonSerializer
-import java.util.*
import java.util.regex.Pattern
@Configuration
diff --git a/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/consumer/EventKafkaListener.kt b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/consumer/EventKafkaListener.kt
new file mode 100644
index 000000000..021f8aa6c
--- /dev/null
+++ b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/consumer/EventKafkaListener.kt
@@ -0,0 +1,29 @@
+package co.nilin.opex.matching.engine.ports.kafka.listener.consumer
+
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.ports.kafka.listener.spi.EventListener
+import org.apache.kafka.clients.consumer.ConsumerRecord
+import org.springframework.kafka.listener.MessageListener
+import org.springframework.stereotype.Component
+
+@Component
+class EventKafkaListener : MessageListener {
+
+ val eventListeners = arrayListOf()
+
+ override fun onMessage(data: ConsumerRecord) {
+ eventListeners.forEach { tl ->
+ tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
+ }
+ }
+
+ fun addEventListener(tl: EventListener) {
+ eventListeners.add(tl)
+ }
+
+ fun removeEventListener(tl: EventListener) {
+ eventListeners.removeIf { item ->
+ item.id() == tl.id()
+ }
+ }
+}
\ No newline at end of file
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/consumer/OrderKafkaListener.kt b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/consumer/OrderKafkaListener.kt
similarity index 78%
rename from MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/consumer/OrderKafkaListener.kt
rename to matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/consumer/OrderKafkaListener.kt
index e888a6832..48118d004 100644
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/consumer/OrderKafkaListener.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/consumer/OrderKafkaListener.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.order.kafka.consumer
+package co.nilin.opex.matching.engine.ports.kafka.listener.consumer
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
-import co.nilin.opex.port.order.kafka.spi.OrderSubmitRequestListener
+import co.nilin.opex.matching.engine.ports.kafka.listener.inout.OrderSubmitRequest
+import co.nilin.opex.matching.engine.ports.kafka.listener.spi.OrderSubmitRequestListener
import kotlinx.coroutines.runBlocking
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.listener.MessageListener
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/inout/OrderSubmitRequest.kt
similarity index 53%
rename from MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt
rename to matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/inout/OrderSubmitRequest.kt
index 7768d1ef7..17a7f11af 100644
--- a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/inout/OrderSubmitRequest.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.order.kafka.inout
+package co.nilin.opex.matching.engine.ports.kafka.listener.inout
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import co.nilin.opex.matching.core.model.Pair
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.Pair
class OrderSubmitRequest() {
@@ -18,15 +18,17 @@ class OrderSubmitRequest() {
var orderType: OrderType = OrderType.LIMIT_ORDER
- constructor(ouid: String,
- uuid: String,
- orderId: Long?,
- pair: Pair,
- price: Long,
- quantity: Long,
- direction: OrderDirection,
- matchConstraint: MatchConstraint,
- orderType: OrderType):this(){
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long?,
+ pair: Pair,
+ price: Long,
+ quantity: Long,
+ direction: OrderDirection,
+ matchConstraint: MatchConstraint,
+ orderType: OrderType
+ ) : this() {
this.ouid = ouid
this.uuid = uuid
this.orderId = orderId
diff --git a/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/inout/OrderSubmitResult.kt b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/inout/OrderSubmitResult.kt
new file mode 100644
index 000000000..ec74b34cd
--- /dev/null
+++ b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/inout/OrderSubmitResult.kt
@@ -0,0 +1,3 @@
+package co.nilin.opex.matching.engine.ports.kafka.listener.inout
+
+class OrderSubmitResult(offset: Long?)
\ No newline at end of file
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/spi/EventListener.kt b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/spi/EventListener.kt
similarity index 50%
rename from MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/spi/EventListener.kt
rename to matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/spi/EventListener.kt
index b0f4187fe..b8e4c412f 100644
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/spi/EventListener.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/spi/EventListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.order.kafka.spi
+package co.nilin.opex.matching.engine.ports.kafka.listener.spi
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
interface EventListener {
fun id(): String
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/spi/OrderSubmitRequestListener.kt b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
similarity index 52%
rename from MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/spi/OrderSubmitRequestListener.kt
rename to matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
index ee659ae4d..f51cfb696 100644
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/spi/OrderSubmitRequestListener.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-eventlistener-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/listener/spi/OrderSubmitRequestListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.order.kafka.spi
+package co.nilin.opex.matching.engine.ports.kafka.listener.spi
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
+import co.nilin.opex.matching.engine.ports.kafka.listener.inout.OrderSubmitRequest
interface OrderSubmitRequestListener {
fun id(): String
diff --git a/MatchingEngine/matching-ports/matching-snapshots-redis/mvnw b/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/mvnw
similarity index 100%
rename from MatchingEngine/matching-ports/matching-snapshots-redis/mvnw
rename to matching-engine/matching-engine-ports/matching-engine-snapshots-redis/mvnw
diff --git a/MatchingEngine/matching-ports/matching-snapshots-redis/mvnw.cmd b/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/mvnw.cmd
similarity index 100%
rename from MatchingEngine/matching-ports/matching-snapshots-redis/mvnw.cmd
rename to matching-engine/matching-engine-ports/matching-engine-snapshots-redis/mvnw.cmd
diff --git a/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/pom.xml b/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/pom.xml
new file mode 100644
index 000000000..6566414cf
--- /dev/null
+++ b/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/pom.xml
@@ -0,0 +1,62 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.matching.engine
+ matching-engine
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.matching.engine.ports.redis
+ matching-engine-snapshots-redis
+ matching-engine-snapshots-redis
+ Persist Matching engine snapshot of Opex on Redis
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ org.springframework.boot
+ spring-boot-starter-data-redis-reactive
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
+ com.fasterxml.jackson.core
+ jackson-databind
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/MatchingEngine/matching-ports/matching-snapshots-redis/src/main/kotlin/co/nilin/opex/port/order/redis/config/RedisConfig.kt b/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/src/main/kotlin/co/nilin/opex/matching/engine/ports/redis/config/RedisConfig.kt
similarity index 83%
rename from MatchingEngine/matching-ports/matching-snapshots-redis/src/main/kotlin/co/nilin/opex/port/order/redis/config/RedisConfig.kt
rename to matching-engine/matching-engine-ports/matching-engine-snapshots-redis/src/main/kotlin/co/nilin/opex/matching/engine/ports/redis/config/RedisConfig.kt
index 9f688593b..4b97ce6b7 100644
--- a/MatchingEngine/matching-ports/matching-snapshots-redis/src/main/kotlin/co/nilin/opex/port/order/redis/config/RedisConfig.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/src/main/kotlin/co/nilin/opex/matching/engine/ports/redis/config/RedisConfig.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.order.redis.config
+package co.nilin.opex.matching.engine.ports.redis.config
-import co.nilin.opex.matching.core.model.PersistentOrderBook
+import co.nilin.opex.matching.engine.core.model.PersistentOrderBook
import com.fasterxml.jackson.annotation.JsonAutoDetect
import com.fasterxml.jackson.annotation.PropertyAccessor
import com.fasterxml.jackson.databind.ObjectMapper
@@ -20,7 +20,8 @@ class RedisConfig() {
val objectMapper = ObjectMapper()
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY)
jackson2JsonRedisSerializer.setObjectMapper(objectMapper)
- val serializationContext = RedisSerializationContext.newSerializationContext(StringRedisSerializer())
+ val serializationContext =
+ RedisSerializationContext.newSerializationContext(StringRedisSerializer())
.hashKey(StringRedisSerializer())
.hashValue(jackson2JsonRedisSerializer)
.build()
diff --git a/MatchingEngine/matching-ports/matching-snapshots-redis/src/main/kotlin/co/nilin/opex/port/order/redis/service/OrderBookPersister.kt b/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/src/main/kotlin/co/nilin/opex/matching/engine/ports/redis/service/OrderBookPersister.kt
similarity index 81%
rename from MatchingEngine/matching-ports/matching-snapshots-redis/src/main/kotlin/co/nilin/opex/port/order/redis/service/OrderBookPersister.kt
rename to matching-engine/matching-engine-ports/matching-engine-snapshots-redis/src/main/kotlin/co/nilin/opex/matching/engine/ports/redis/service/OrderBookPersister.kt
index ed6c04d2d..3111f744d 100644
--- a/MatchingEngine/matching-ports/matching-snapshots-redis/src/main/kotlin/co/nilin/opex/port/order/redis/service/OrderBookPersister.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-snapshots-redis/src/main/kotlin/co/nilin/opex/matching/engine/ports/redis/service/OrderBookPersister.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.order.redis.service
+package co.nilin.opex.matching.engine.ports.redis.service
-import co.nilin.opex.matching.core.model.PersistentOrderBook
-import co.nilin.opex.matching.core.spi.OrderBookPersister
+import co.nilin.opex.matching.engine.core.model.PersistentOrderBook
+import co.nilin.opex.matching.engine.core.spi.OrderBookPersister
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.data.redis.core.ReactiveRedisTemplate
import org.springframework.stereotype.Component
diff --git a/MatchingEngine/matching-ports/matching-submitter-kafka/mvnw b/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/mvnw
similarity index 100%
rename from MatchingEngine/matching-ports/matching-submitter-kafka/mvnw
rename to matching-engine/matching-engine-ports/matching-engine-submitter-kafka/mvnw
diff --git a/MatchingEngine/matching-ports/matching-submitter-kafka/mvnw.cmd b/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/mvnw.cmd
similarity index 100%
rename from MatchingEngine/matching-ports/matching-submitter-kafka/mvnw.cmd
rename to matching-engine/matching-engine-ports/matching-engine-submitter-kafka/mvnw.cmd
diff --git a/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/pom.xml b/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/pom.xml
new file mode 100644
index 000000000..478144eb9
--- /dev/null
+++ b/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.matching.engine
+ matching-engine
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.matching.engine.ports.kafka.submitter
+ matching-engine-submitter-kafka
+ matching-engine-submitter-kafka
+ Matching engine kafka order submitter of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/MatchingEngine/matching-ports/matching-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/EventsKafkaConfig.kt b/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/submitter/config/EventsKafkaConfig.kt
similarity index 78%
rename from MatchingEngine/matching-ports/matching-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/EventsKafkaConfig.kt
rename to matching-engine/matching-engine-ports/matching-engine-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/submitter/config/EventsKafkaConfig.kt
index 0b272fa5b..844629ffa 100644
--- a/MatchingEngine/matching-ports/matching-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/EventsKafkaConfig.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/submitter/config/EventsKafkaConfig.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.order.kafka.config
+package co.nilin.opex.matching.engine.ports.kafka.submitter.config
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
import org.apache.kafka.clients.admin.AdminClientConfig
import org.apache.kafka.clients.admin.NewTopic
import org.apache.kafka.clients.producer.ProducerConfig
@@ -12,14 +12,11 @@ import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.context.support.GenericApplicationContext
-import org.springframework.kafka.config.TopicBuilder
import org.springframework.kafka.core.DefaultKafkaProducerFactory
import org.springframework.kafka.core.KafkaAdmin
import org.springframework.kafka.core.KafkaTemplate
import org.springframework.kafka.core.ProducerFactory
import org.springframework.kafka.support.serializer.JsonSerializer
-import org.springframework.util.StringUtils
-import java.util.*
@Configuration
@@ -61,17 +58,17 @@ class EventsKafkaConfig() {
}
@Autowired
- fun createTopics(){
+ fun createTopics() {
symbols!!.split(",")
- .map { s -> "events_$s" }
- .map { topic ->
- applicationContext?.registerBean("topic_${topic}", NewTopic::class.java, topic, 10, 1)
- }
+ .map { s -> "events_$s" }
+ .map { topic ->
+ applicationContext?.registerBean("topic_${topic}", NewTopic::class.java, topic, 10, 1)
+ }
symbols.split(",")
- .map { s -> "trades_$s" }
- .map { topic ->
- applicationContext?.registerBean("topic_${topic}", NewTopic::class.java, topic, 10, 1)
- }
+ .map { s -> "trades_$s" }
+ .map { topic ->
+ applicationContext?.registerBean("topic_${topic}", NewTopic::class.java, topic, 10, 1)
+ }
}
}
\ No newline at end of file
diff --git a/MatchingEngine/matching-ports/matching-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/EventsSubmitter.kt b/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/submitter/service/EventsSubmitter.kt
similarity index 60%
rename from MatchingEngine/matching-ports/matching-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/EventsSubmitter.kt
rename to matching-engine/matching-engine-ports/matching-engine-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/submitter/service/EventsSubmitter.kt
index ac88ed673..67d94dab4 100644
--- a/MatchingEngine/matching-ports/matching-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/EventsSubmitter.kt
+++ b/matching-engine/matching-engine-ports/matching-engine-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/engine/ports/kafka/submitter/service/EventsSubmitter.kt
@@ -1,16 +1,16 @@
-package co.nilin.opex.port.order.kafka.service
+package co.nilin.opex.matching.engine.ports.kafka.submitter.service
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.matching.core.eventh.events.TradeEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.TradeEvent
import org.springframework.kafka.core.KafkaTemplate
import org.springframework.stereotype.Component
import kotlin.coroutines.suspendCoroutine
@Component
class EventsSubmitter(val kafkaTemplate: KafkaTemplate) {
- suspend fun submit(event: CoreEvent): Unit= suspendCoroutine { cont ->
+ suspend fun submit(event: CoreEvent): Unit = suspendCoroutine { cont ->
println("Submit!")
- if ( event is TradeEvent)
+ if (event is TradeEvent)
kafkaTemplate.send("trades_${event.pair.leftSideName}_${event.pair.rightSideName}", event)
kafkaTemplate.send("events_${event.pair.leftSideName}_${event.pair.rightSideName}", event)
}
diff --git a/matching-engine/pom.xml b/matching-engine/pom.xml
new file mode 100644
index 000000000..17e8be8dc
--- /dev/null
+++ b/matching-engine/pom.xml
@@ -0,0 +1,72 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.matching.engine
+ matching-engine
+ matching-engine
+ pom
+ Matching Engine root of Opex
+
+
+ matching-engine-core
+ matching-engine-ports/matching-engine-submitter-kafka
+ matching-engine-ports/matching-engine-eventlistener-kafka
+ matching-engine-ports/matching-engine-snapshots-redis
+ matching-engine-app
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+ ${project.version}
+
+
+ co.nilin.opex.matching.engine.ports.kafka.submitter
+ matching-engine-submitter-kafka
+ ${project.version}
+
+
+ co.nilin.opex.matching.engine.ports.kafka.listener
+ matching-engine-eventlistener-kafka
+ ${project.version}
+
+
+ co.nilin.opex.matching.engine.ports.redis
+ matching-engine-snapshots-redis
+ ${project.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ ${project.version}
+
+
+
+
diff --git a/MatchingGateway/gateway-app/Dockerfile b/matching-gateway/matching-gateway-app/Dockerfile
similarity index 100%
rename from MatchingGateway/gateway-app/Dockerfile
rename to matching-gateway/matching-gateway-app/Dockerfile
diff --git a/matching-gateway/matching-gateway-app/pom.xml b/matching-gateway/matching-gateway-app/pom.xml
new file mode 100644
index 000000000..95b96c395
--- /dev/null
+++ b/matching-gateway/matching-gateway-app/pom.xml
@@ -0,0 +1,102 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.matching.gateway
+ matching-gateway
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.matching.gateway.app
+ matching-gateway-app
+ matching-gateway-app
+ Matching gateway running app Opex
+
+
+ 2020.0.2
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.matching.gateway.ports.kafka.submitter
+ matching-gateway-submitter-kafka
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-resource-server
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+ 1.60
+
+
+ io.springfox
+ springfox-boot-starter
+ 3.0.0
+
+
+ co.nilin.opex.utility.error
+ error-handler
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/MatchingGatewayApp.kt
similarity index 92%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/MatchingGatewayApp.kt
index 208a63169..b3c3545f5 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/MatchingGatewayApp.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/MatchingGatewayApp.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app
+package co.nilin.opex.matching.gateway.app
import co.nilin.opex.utility.error.EnableOpexErrorHandler
import org.springframework.boot.autoconfigure.SpringBootApplication
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/AppConfig.kt
similarity index 80%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/AppConfig.kt
index e902db222..89bc71514 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/AppConfig.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/AppConfig.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.matching.gateway.app.config
-import co.nilin.opex.app.inout.PairConfig
-import co.nilin.opex.app.inout.PairFeeConfig
-import co.nilin.opex.app.spi.PairConfigLoader
-import co.nilin.opex.app.spi.AccountantApiProxy
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.gateway.app.inout.PairConfig
+import co.nilin.opex.matching.gateway.app.inout.PairFeeConfig
+import co.nilin.opex.matching.gateway.app.spi.AccountantApiProxy
+import co.nilin.opex.matching.gateway.app.spi.PairConfigLoader
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SecurityConfig.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/SecurityConfig.kt
similarity index 65%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SecurityConfig.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/SecurityConfig.kt
index 4ca5c8e4b..0bb36ae95 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SecurityConfig.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/SecurityConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.matching.gateway.app.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
@@ -18,17 +18,17 @@ class SecurityConfig(private val webClient: WebClient) {
@Bean
fun springSecurityFilterChain(http: ServerHttpSecurity): SecurityWebFilterChain? {
http.csrf().disable()
- .authorizeExchange()
- .pathMatchers("/hello").permitAll()
- .pathMatchers("/actuator/**").permitAll()
- .pathMatchers("/swagger-ui/**").permitAll()
- .pathMatchers("/swagger-resources/**").permitAll()
- .pathMatchers("/v2/api-docs").permitAll()
- .pathMatchers("/**").hasAuthority("SCOPE_trust")
- .anyExchange().authenticated()
- .and()
- .oauth2ResourceServer()
- .jwt()
+ .authorizeExchange()
+ .pathMatchers("/hello").permitAll()
+ .pathMatchers("/actuator/**").permitAll()
+ .pathMatchers("/swagger-ui/**").permitAll()
+ .pathMatchers("/swagger-resources/**").permitAll()
+ .pathMatchers("/v2/api-docs").permitAll()
+ .pathMatchers("/**").hasAuthority("SCOPE_trust")
+ .anyExchange().authenticated()
+ .and()
+ .oauth2ResourceServer()
+ .jwt()
return http.build()
}
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/SwaggerConfig.kt
similarity index 98%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/SwaggerConfig.kt
index 13860b55e..f962e4aa6 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/config/SwaggerConfig.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/SwaggerConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.config
+package co.nilin.opex.matching.gateway.app.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
diff --git a/Accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/port/accountant/wallet/config/WebClientConfig.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/WebClientConfig.kt
similarity index 88%
rename from Accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/port/accountant/wallet/config/WebClientConfig.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/WebClientConfig.kt
index ce2bca7fd..d87916b6e 100644
--- a/Accountant/accountant-ports/accountant-wallet-proxy/src/main/kotlin/co/nilin/opex/port/accountant/wallet/config/WebClientConfig.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/config/WebClientConfig.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.accountant.wallet.config
+package co.nilin.opex.matching.gateway.app.config
-import co.nilin.opex.utility.log.interceptor.CustomLogger
+import co.nilin.opex.utility.log.CustomLogger
import org.springframework.cloud.client.ServiceInstance
import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties
import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer
@@ -16,7 +16,7 @@ class WebClientConfig {
@Bean
fun webClient(loadBalancerFactory: ReactiveLoadBalancer.Factory): WebClient {
- val logger = CustomLogger(HttpClient::class.java)
+ val logger = CustomLogger(HttpClient::class.java)
return WebClient.builder()
.clientConnector(
ReactorClientHttpConnector(
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/controller/ControllerExceptionHandler.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/controller/ControllerExceptionHandler.kt
similarity index 95%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/controller/ControllerExceptionHandler.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/controller/ControllerExceptionHandler.kt
index f4766e4e6..4e61b272c 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/controller/ControllerExceptionHandler.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/controller/ControllerExceptionHandler.kt
@@ -1,12 +1,11 @@
-package co.nilin.opex.app.controller
+package co.nilin.opex.matching.gateway.app.controller
-import co.nilin.opex.app.exception.NotAllowedToSubmitOrderException
+import co.nilin.opex.matching.gateway.app.exception.NotAllowedToSubmitOrderException
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.databind.ObjectMapper
import org.slf4j.LoggerFactory
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.ExceptionHandler
-import org.springframework.web.bind.annotation.RestControllerAdvice
import org.springframework.web.reactive.function.client.WebClientResponseException
import java.nio.charset.StandardCharsets
import java.util.*
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/controller/OrderController.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/controller/OrderController.kt
similarity index 80%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/controller/OrderController.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/controller/OrderController.kt
index 9b243d2df..30ffa3c0e 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/controller/OrderController.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/controller/OrderController.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.app.controller
+package co.nilin.opex.matching.gateway.app.controller
-import co.nilin.opex.app.inout.CancelOrderRequest
-import co.nilin.opex.app.inout.CreateOrderRequest
-import co.nilin.opex.app.service.OrderService
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitResult
+import co.nilin.opex.matching.gateway.app.inout.CancelOrderRequest
+import co.nilin.opex.matching.gateway.app.inout.CreateOrderRequest
+import co.nilin.opex.matching.gateway.app.service.OrderService
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.inout.OrderSubmitResult
import io.swagger.annotations.ApiResponse
import io.swagger.annotations.Example
import io.swagger.annotations.ExampleProperty
diff --git a/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/exception/NotAllowedToSubmitOrderException.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/exception/NotAllowedToSubmitOrderException.kt
new file mode 100644
index 000000000..a3ec0913f
--- /dev/null
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/exception/NotAllowedToSubmitOrderException.kt
@@ -0,0 +1,4 @@
+package co.nilin.opex.matching.gateway.app.exception
+
+class NotAllowedToSubmitOrderException : RuntimeException() {
+}
\ No newline at end of file
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/CancelOrderRequest.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/CancelOrderRequest.kt
similarity index 67%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/CancelOrderRequest.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/CancelOrderRequest.kt
index e7a0fa1da..73bdf63a2 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/CancelOrderRequest.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/CancelOrderRequest.kt
@@ -1,3 +1,3 @@
-package co.nilin.opex.app.inout
+package co.nilin.opex.matching.gateway.app.inout
class CancelOrderRequest(val ouid: String, var uuid: String, val orderId: Long, val symbol: String)
\ No newline at end of file
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/CreateOrderRequest.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/CreateOrderRequest.kt
similarity index 53%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/CreateOrderRequest.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/CreateOrderRequest.kt
index 1b9d84bc5..ddcb5f569 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/CreateOrderRequest.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/CreateOrderRequest.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.app.inout
+package co.nilin.opex.matching.gateway.app.inout
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
import java.math.BigDecimal
data class CreateOrderRequest(
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/PairConfig.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/PairConfig.kt
similarity index 83%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/PairConfig.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/PairConfig.kt
index 3cc48f34e..b0e077d9b 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/PairConfig.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/PairConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.inout
+package co.nilin.opex.matching.gateway.app.inout
class PairConfig(
val pair: String,
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/PairFeeConfig.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/PairFeeConfig.kt
similarity index 76%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/PairFeeConfig.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/PairFeeConfig.kt
index 43d92f866..1790f9b7c 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/inout/PairFeeConfig.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/inout/PairFeeConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.app.inout
+package co.nilin.opex.matching.gateway.app.inout
class PairFeeConfig(
val pairConfig: PairConfig,
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/proxy/AccountantProxyImpl.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/proxy/AccountantProxyImpl.kt
similarity index 88%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/proxy/AccountantProxyImpl.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/proxy/AccountantProxyImpl.kt
index 621551558..6a7305f78 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/proxy/AccountantProxyImpl.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/proxy/AccountantProxyImpl.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.app.proxy
+package co.nilin.opex.matching.gateway.app.proxy
-import co.nilin.opex.app.inout.PairFeeConfig
-import co.nilin.opex.app.spi.AccountantApiProxy
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.gateway.app.inout.PairFeeConfig
+import co.nilin.opex.matching.gateway.app.spi.AccountantApiProxy
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import kotlinx.coroutines.reactive.awaitFirst
import org.springframework.beans.factory.annotation.Value
import org.springframework.core.ParameterizedTypeReference
@@ -23,7 +23,7 @@ class AccountantProxyImpl(
.uri(URI.create("$accountantBaseUrl/$uuid/create_order/${value}_${symbol}/allowed"))
.header("Content-Type", "application/json")
.retrieve()
- .onStatus({ t -> t.isError }, { it.createException()})
+ .onStatus({ t -> t.isError }, { it.createException() })
.bodyToMono(typeRef())
.log()
.awaitFirst()
@@ -43,7 +43,7 @@ class AccountantProxyImpl(
)
.header("Content-Type", "application/json")
.retrieve()
- .onStatus({ t -> t.isError }, { it.createException()})
+ .onStatus({ t -> t.isError }, { it.createException() })
.bodyToMono(typeRef())
.log()
.awaitFirst()
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/service/OrderService.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/service/OrderService.kt
similarity index 74%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/service/OrderService.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/service/OrderService.kt
index 7b46616fe..8d3f02c1e 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/service/OrderService.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/service/OrderService.kt
@@ -1,16 +1,16 @@
-package co.nilin.opex.app.service
+package co.nilin.opex.matching.gateway.app.service
-import co.nilin.opex.app.inout.CancelOrderRequest
-import co.nilin.opex.app.inout.CreateOrderRequest
-import co.nilin.opex.app.spi.AccountantApiProxy
-import co.nilin.opex.app.spi.PairConfigLoader
-import co.nilin.opex.matching.core.eventh.events.CancelOrderEvent
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.Pair
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitResult
-import co.nilin.opex.port.order.kafka.service.EventSubmitter
-import co.nilin.opex.port.order.kafka.service.OrderSubmitter
+import co.nilin.opex.matching.gateway.app.inout.CancelOrderRequest
+import co.nilin.opex.matching.gateway.app.inout.CreateOrderRequest
+import co.nilin.opex.matching.gateway.app.spi.AccountantApiProxy
+import co.nilin.opex.matching.gateway.app.spi.PairConfigLoader
+import co.nilin.opex.matching.engine.core.eventh.events.CancelOrderEvent
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.Pair
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.inout.OrderSubmitRequest
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.inout.OrderSubmitResult
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.service.EventSubmitter
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.service.OrderSubmitter
import co.nilin.opex.utility.error.data.OpexError
import co.nilin.opex.utility.error.data.throwError
import org.springframework.stereotype.Service
diff --git a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/spi/AccountantApiProxy.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/spi/AccountantApiProxy.kt
similarity index 60%
rename from MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/spi/AccountantApiProxy.kt
rename to matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/spi/AccountantApiProxy.kt
index 3d0e8b4dd..7bf097191 100644
--- a/MatchingGateway/gateway-app/src/main/kotlin/co/nilin/opex/app/spi/AccountantApiProxy.kt
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/spi/AccountantApiProxy.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.app.spi
+package co.nilin.opex.matching.gateway.app.spi
-import co.nilin.opex.app.inout.PairFeeConfig
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.gateway.app.inout.PairFeeConfig
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import java.math.BigDecimal
diff --git a/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/spi/PairConfigLoader.kt b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/spi/PairConfigLoader.kt
new file mode 100644
index 000000000..19ccf9323
--- /dev/null
+++ b/matching-gateway/matching-gateway-app/src/main/kotlin/co/nilin/opex/matching/gateway/app/spi/PairConfigLoader.kt
@@ -0,0 +1,8 @@
+package co.nilin.opex.matching.gateway.app.spi
+
+import co.nilin.opex.matching.gateway.app.inout.PairFeeConfig
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+
+interface PairConfigLoader {
+ suspend fun load(pair: String, direction: OrderDirection, userLevel: String): PairFeeConfig
+}
\ No newline at end of file
diff --git a/MatchingGateway/gateway-app/src/main/resources/application-docker.yml b/matching-gateway/matching-gateway-app/src/main/resources/application-docker.yml
similarity index 100%
rename from MatchingGateway/gateway-app/src/main/resources/application-docker.yml
rename to matching-gateway/matching-gateway-app/src/main/resources/application-docker.yml
diff --git a/MatchingGateway/gateway-app/src/main/resources/application.yml b/matching-gateway/matching-gateway-app/src/main/resources/application.yml
similarity index 88%
rename from MatchingGateway/gateway-app/src/main/resources/application.yml
rename to matching-gateway/matching-gateway-app/src/main/resources/application.yml
index 3ced8b234..79c864f43 100644
--- a/MatchingGateway/gateway-app/src/main/resources/application.yml
+++ b/matching-gateway/matching-gateway-app/src/main/resources/application.yml
@@ -7,11 +7,11 @@ spring:
application:
name: opex-gateway
main:
- allow-bean-definition-overriding: false
+ allow-bean-definition-overriding: false
kafka:
bootstrap-servers: localhost:9092
consumer:
- group-id: gateway
+ group-id: gateway
cloud:
bootstrap:
enabled: true
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/mvnw b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/mvnw
similarity index 100%
rename from MatchingGateway/gateway-port/order-submitter-kafka/mvnw
rename to matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/mvnw
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/mvnw.cmd b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/mvnw.cmd
similarity index 100%
rename from MatchingGateway/gateway-port/order-submitter-kafka/mvnw.cmd
rename to matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/mvnw.cmd
diff --git a/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/pom.xml b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/pom.xml
new file mode 100644
index 000000000..d19bbd18d
--- /dev/null
+++ b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/pom.xml
@@ -0,0 +1,65 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.matching.gateway
+ matching-gateway
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.matching.gateway.ports.kafka.submitter
+ matching-gateway-submitter-kafka
+ matching-gateway-submitter-kafka
+ Matching gateway kafka order submitter of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/OrderKafkaConfig.kt b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/config/OrderKafkaConfig.kt
similarity index 90%
rename from MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/OrderKafkaConfig.kt
rename to matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/config/OrderKafkaConfig.kt
index 540eb2c4d..8a01a5209 100644
--- a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/config/OrderKafkaConfig.kt
+++ b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/config/OrderKafkaConfig.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.order.kafka.config
+package co.nilin.opex.matching.gateway.ports.kafka.submitter.config
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.inout.OrderSubmitRequest
import org.apache.kafka.clients.producer.ProducerConfig
import org.apache.kafka.common.serialization.StringSerializer
import org.springframework.beans.factory.annotation.Qualifier
@@ -12,7 +12,6 @@ import org.springframework.kafka.core.DefaultKafkaProducerFactory
import org.springframework.kafka.core.KafkaTemplate
import org.springframework.kafka.core.ProducerFactory
import org.springframework.kafka.support.serializer.JsonSerializer
-import java.util.*
@Configuration
class OrderKafkaConfig {
diff --git a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/inout/OrderSubmitRequest.kt
similarity index 53%
rename from MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt
rename to matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/inout/OrderSubmitRequest.kt
index 7768d1ef7..978399f2d 100644
--- a/MatchingEngine/matching-ports/matching-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/inout/OrderSubmitRequest.kt
+++ b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/inout/OrderSubmitRequest.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.order.kafka.inout
+package co.nilin.opex.matching.gateway.ports.kafka.submitter.inout
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
-import co.nilin.opex.matching.core.model.Pair
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.Pair
class OrderSubmitRequest() {
@@ -18,15 +18,17 @@ class OrderSubmitRequest() {
var orderType: OrderType = OrderType.LIMIT_ORDER
- constructor(ouid: String,
- uuid: String,
- orderId: Long?,
- pair: Pair,
- price: Long,
- quantity: Long,
- direction: OrderDirection,
- matchConstraint: MatchConstraint,
- orderType: OrderType):this(){
+ constructor(
+ ouid: String,
+ uuid: String,
+ orderId: Long?,
+ pair: Pair,
+ price: Long,
+ quantity: Long,
+ direction: OrderDirection,
+ matchConstraint: MatchConstraint,
+ orderType: OrderType
+ ) : this() {
this.ouid = ouid
this.uuid = uuid
this.orderId = orderId
diff --git a/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/inout/OrderSubmitResult.kt b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/inout/OrderSubmitResult.kt
new file mode 100644
index 000000000..51f0f6014
--- /dev/null
+++ b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/inout/OrderSubmitResult.kt
@@ -0,0 +1,3 @@
+package co.nilin.opex.matching.gateway.ports.kafka.submitter.inout
+
+class OrderSubmitResult(offset: Long?)
\ No newline at end of file
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/EventSubmitter.kt b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/service/EventSubmitter.kt
similarity index 80%
rename from MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/EventSubmitter.kt
rename to matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/service/EventSubmitter.kt
index 5a47b6311..fadcbde0a 100644
--- a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/EventSubmitter.kt
+++ b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/service/EventSubmitter.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.order.kafka.service
+package co.nilin.opex.matching.gateway.ports.kafka.submitter.service
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitResult
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.inout.OrderSubmitResult
import org.slf4j.LoggerFactory
import org.springframework.kafka.core.KafkaTemplate
import org.springframework.stereotype.Component
diff --git a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/OrderSubmitter.kt b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/service/OrderSubmitter.kt
similarity index 78%
rename from MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/OrderSubmitter.kt
rename to matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/service/OrderSubmitter.kt
index d8cd3d16e..25e32cb70 100644
--- a/MatchingGateway/gateway-port/order-submitter-kafka/src/main/kotlin/co/nilin/opex/port/order/kafka/service/OrderSubmitter.kt
+++ b/matching-gateway/matching-gateway-port/matching-gateway-submitter-kafka/src/main/kotlin/co/nilin/opex/matching/gateway/ports/kafka/submitter/service/OrderSubmitter.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.order.kafka.service
+package co.nilin.opex.matching.gateway.ports.kafka.submitter.service
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitRequest
-import co.nilin.opex.port.order.kafka.inout.OrderSubmitResult
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.inout.OrderSubmitRequest
+import co.nilin.opex.matching.gateway.ports.kafka.submitter.inout.OrderSubmitResult
import org.springframework.kafka.core.KafkaTemplate
import org.springframework.stereotype.Component
import kotlin.coroutines.resume
@@ -24,5 +24,4 @@ class OrderSubmitter(val kafkaTemplate: KafkaTemplate
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.matching.gateway
+ matching-gateway
+ matching-gateway
+ pom
+ Matching Api Gateway root of Opex
+
+
+ matching-gateway-app
+ matching-gateway-port/matching-gateway-submitter-kafka
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+ ${project.version}
+
+
+ co.nilin.opex.matching.gateway.ports.kafka.submitter
+ matching-gateway-submitter-kafka
+ ${project.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ ${project.version}
+
+
+
+
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 000000000..f0d2fef1a
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,143 @@
+
+
+ 4.0.0
+
+ co.nilin.opex
+ OPEX-Core
+ pom
+ 1.0-SNAPSHOT
+
+
+ 1.8
+ 1.4.31
+ 2.4.4
+ false
+
+
+
+ accountant
+ api
+ bc-gateway
+ eventlog
+ matching-engine
+ matching-gateway
+ storage
+ user-management
+ utility
+ wallet
+ websocket
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-stdlib-jdk8
+ ${kotlin.version}
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-dependencies
+ ${spring.version}
+ pom
+ import
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ ${spring.version}
+ test
+
+
+ org.junit.vintage
+ junit-vintage-engine
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+ 3.0.4
+
+
+
+
+
+ ${project.basedir}/src/main/kotlin
+ ${project.basedir}/src/test/kotlin
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-plugin
+ ${kotlin.version}
+
+
+ compile
+ compile
+
+ compile
+
+
+
+ test-compile
+ test-compile
+
+ test-compile
+
+
+
+
+
+ -Xjsr305=strict
+
+
+ spring
+
+ 1.8
+
+
+
+ org.jetbrains.kotlin
+ kotlin-maven-allopen
+ ${kotlin.version}
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.22.2
+
+
+ ${skip.unit.tests}
+
+
+ **/*IntegrationTest.java
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+ ${spring.version}
+
+
+
+ repackage
+
+
+
+
+
+
+ ${project.artifactId}
+
+
diff --git a/storage/pom.xml b/storage/pom.xml
new file mode 100644
index 000000000..ff848ecde
--- /dev/null
+++ b/storage/pom.xml
@@ -0,0 +1,48 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.storage
+ storage
+ storage
+ pom
+ File storage service of Opex
+
+
+ storage-app
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ ${project.version}
+
+
+
+
diff --git a/Storage/storage-app/Dockerfile b/storage/storage-app/Dockerfile
similarity index 100%
rename from Storage/storage-app/Dockerfile
rename to storage/storage-app/Dockerfile
diff --git a/storage/storage-app/pom.xml b/storage/storage-app/pom.xml
new file mode 100644
index 000000000..05d842ec2
--- /dev/null
+++ b/storage/storage-app/pom.xml
@@ -0,0 +1,87 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.storage
+ storage
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.storage.app
+ storage-app
+ storage-app
+
+
+ 2020.0.2
+
+
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ co.nilin.opex.utility.error
+ error-handler
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-resource-server
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/StorageApp.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/StorageApp.kt
similarity index 100%
rename from Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/StorageApp.kt
rename to storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/StorageApp.kt
diff --git a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/AppConfig.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/AppConfig.kt
similarity index 100%
rename from Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/AppConfig.kt
rename to storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/AppConfig.kt
diff --git a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/SecurityConfig.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/SecurityConfig.kt
similarity index 98%
rename from Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/SecurityConfig.kt
rename to storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/SecurityConfig.kt
index c7f3b7ea4..99f6317e5 100644
--- a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/SecurityConfig.kt
+++ b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/SecurityConfig.kt
@@ -3,7 +3,6 @@ package co.nilin.opex.storage.app.config
import net.minidev.json.JSONArray
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
-import org.springframework.http.HttpMethod
import org.springframework.security.authorization.AuthorizationDecision
import org.springframework.security.config.annotation.web.reactive.EnableWebFluxSecurity
import org.springframework.security.config.web.server.ServerHttpSecurity
diff --git a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/WebClientConfig.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/WebClientConfig.kt
similarity index 92%
rename from Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/WebClientConfig.kt
rename to storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/WebClientConfig.kt
index d6bbdea72..ea21b2027 100644
--- a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/WebClientConfig.kt
+++ b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/config/WebClientConfig.kt
@@ -1,6 +1,6 @@
package co.nilin.opex.storage.app.config
-import co.nilin.opex.utility.log.interceptor.CustomLogger
+import co.nilin.opex.utility.log.CustomLogger
import org.springframework.cloud.client.ServiceInstance
import org.springframework.cloud.client.loadbalancer.LoadBalancerProperties
import org.springframework.cloud.client.loadbalancer.reactive.ReactiveLoadBalancer
@@ -16,7 +16,7 @@ class WebClientConfig {
@Bean
fun webClient(loadBalancerFactory: ReactiveLoadBalancer.Factory): WebClient {
- val logger = CustomLogger(HttpClient::class.java)
+ val logger = CustomLogger(HttpClient::class.java)
return WebClient.builder()
.clientConnector(
ReactorClientHttpConnector(
diff --git a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt
similarity index 100%
rename from Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt
rename to storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/controller/FileController.kt
diff --git a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageService.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageService.kt
similarity index 86%
rename from Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageService.kt
rename to storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageService.kt
index 8e5bc6295..0fdb82023 100644
--- a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageService.kt
+++ b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageService.kt
@@ -1,8 +1,6 @@
package co.nilin.opex.storage.app.service
-import org.springframework.core.io.Resource
import org.springframework.http.codec.multipart.FilePart
-import java.io.File
import java.io.FileInputStream
interface StorageService {
diff --git a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageServiceImpl.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageServiceImpl.kt
similarity index 96%
rename from Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageServiceImpl.kt
rename to storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageServiceImpl.kt
index 8f8cc3911..96a0600a4 100644
--- a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageServiceImpl.kt
+++ b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StorageServiceImpl.kt
@@ -1,6 +1,5 @@
package co.nilin.opex.storage.app.service
-import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.core.io.ResourceLoader
import org.springframework.http.codec.multipart.FilePart
diff --git a/Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StringToHashService.kt b/storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StringToHashService.kt
similarity index 100%
rename from Storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StringToHashService.kt
rename to storage/storage-app/src/main/kotlin/co/nilin/opex/storage/app/service/StringToHashService.kt
diff --git a/Storage/storage-app/src/main/resources/application-docker.yml b/storage/storage-app/src/main/resources/application-docker.yml
similarity index 100%
rename from Storage/storage-app/src/main/resources/application-docker.yml
rename to storage/storage-app/src/main/resources/application-docker.yml
diff --git a/Storage/storage-app/src/main/resources/application.yml b/storage/storage-app/src/main/resources/application.yml
similarity index 100%
rename from Storage/storage-app/src/main/resources/application.yml
rename to storage/storage-app/src/main/resources/application.yml
diff --git a/UserManagement/keycloak-gateway/Dockerfile b/user-management/keycloak-gateway/Dockerfile
similarity index 100%
rename from UserManagement/keycloak-gateway/Dockerfile
rename to user-management/keycloak-gateway/Dockerfile
diff --git a/user-management/keycloak-gateway/pom.xml b/user-management/keycloak-gateway/pom.xml
new file mode 100644
index 000000000..45ce3817c
--- /dev/null
+++ b/user-management/keycloak-gateway/pom.xml
@@ -0,0 +1,117 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.auth
+ user-management
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.auth.gateway
+ keycloak-gateway
+ keycloak-gateway
+ Keycloak gateway app Opex
+
+
+ 13
+ 13
+ 13
+ 12.0.4
+ 3.13.2.Final
+ 11.0.10.Final
+ 2020.0.2
+
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ org.springframework.boot
+ spring-boot-configuration-processor
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+
+
+
+ org.springframework.boot
+ spring-boot-starter-data-jpa
+
+
+ org.jboss.resteasy
+ resteasy-jackson2-provider
+ ${keycloak.resteasy.version}
+
+
+ org.jboss.resteasy
+ resteasy-client
+ ${keycloak.resteasy.version}
+
+
+ org.keycloak
+ keycloak-dependencies-server-all
+ ${keycloak.version}
+ pom
+
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+ com.zaxxer
+ HikariCP
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/ApplicationContextHolder.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/ApplicationContextHolder.kt
similarity index 60%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/ApplicationContextHolder.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/ApplicationContextHolder.kt
index 29ba3db07..b029e0bed 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/ApplicationContextHolder.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/ApplicationContextHolder.kt
@@ -5,7 +5,12 @@ import org.springframework.context.ApplicationContext
class ApplicationContextHolder {
companion object {
var applicationContext: ApplicationContext? = null
- fun getCurrentContext(): ApplicationContext? { return applicationContext }
- fun setCurrentContext(applicationContext: ApplicationContext) { Companion.applicationContext = applicationContext }
+ fun getCurrentContext(): ApplicationContext? {
+ return applicationContext
+ }
+
+ fun setCurrentContext(applicationContext: ApplicationContext) {
+ Companion.applicationContext = applicationContext
+ }
}
}
\ No newline at end of file
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/KeycloakGatewayApp.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/KeycloakGatewayApp.kt
similarity index 59%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/KeycloakGatewayApp.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/KeycloakGatewayApp.kt
index 029650524..5a9634a6a 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/KeycloakGatewayApp.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/KeycloakGatewayApp.kt
@@ -1,19 +1,10 @@
package co.nilin.opex.auth.gateway
-import co.nilin.opex.auth.gateway.config.KeycloakServerProperties
-import co.nilin.opex.auth.gateway.config.SimplePlatformProvider
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.autoconfigure.liquibase.LiquibaseAutoConfiguration
-import org.springframework.boot.autoconfigure.web.ServerProperties
-import org.springframework.boot.context.event.ApplicationReadyEvent
import org.springframework.boot.context.properties.EnableConfigurationProperties
import org.springframework.boot.runApplication
-import org.springframework.context.ApplicationListener
-import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.ComponentScan
-import org.springframework.core.io.ClassPathResource
@SpringBootApplication(exclude = [LiquibaseAutoConfiguration::class])
@ComponentScan(basePackages = arrayOf("co.nilin.opex.auth.gateway"))
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/AppConfig.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/AppConfig.kt
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/AppConfig.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/AppConfig.kt
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakApplication.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakApplication.kt
similarity index 97%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakApplication.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakApplication.kt
index 496e1d39c..a46edf5d5 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakApplication.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakApplication.kt
@@ -2,24 +2,15 @@ package co.nilin.opex.auth.gateway.config
import org.keycloak.Config
import org.keycloak.representations.idm.RealmRepresentation
-
-import org.keycloak.util.JsonSerialization
-
-import org.springframework.core.io.ClassPathResource
-
-import org.keycloak.services.managers.RealmManager
-
import org.keycloak.services.managers.ApplianceBootstrap
-
-import java.util.NoSuchElementException
-
-import org.keycloak.services.util.JsonConfigProviderFactory
-
+import org.keycloak.services.managers.RealmManager
import org.keycloak.services.resources.KeycloakApplication
+import org.keycloak.services.util.JsonConfigProviderFactory
+import org.keycloak.util.JsonSerialization
import org.slf4j.Logger
import org.slf4j.LoggerFactory
+import org.springframework.core.io.ClassPathResource
import org.springframework.core.io.Resource
-import java.lang.Exception
class EmbeddedKeycloakApplication() : KeycloakApplication() {
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakConfig.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakConfig.kt
similarity index 98%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakConfig.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakConfig.kt
index cf4c51004..210bf744f 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakConfig.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakConfig.kt
@@ -7,7 +7,6 @@ import org.springframework.boot.web.servlet.ServletRegistrationBean
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import java.util.*
-import java.util.concurrent.Executors
import javax.naming.*
import javax.naming.spi.InitialContextFactory
import javax.naming.spi.NamingManager
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakRequestFilter.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakRequestFilter.kt
similarity index 98%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakRequestFilter.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakRequestFilter.kt
index b9c0637ae..3775cf5ab 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakRequestFilter.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/EmbeddedKeycloakRequestFilter.kt
@@ -4,7 +4,6 @@ import org.keycloak.common.ClientConnection
import org.keycloak.models.KeycloakSession
import org.keycloak.services.filters.AbstractRequestFilter
import java.io.UnsupportedEncodingException
-import java.lang.Exception
import javax.servlet.Filter
import javax.servlet.FilterChain
import javax.servlet.ServletRequest
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KafkaConfig.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KafkaConfig.kt
similarity index 95%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KafkaConfig.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KafkaConfig.kt
index 4c4103150..d600f89bd 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KafkaConfig.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KafkaConfig.kt
@@ -2,8 +2,8 @@ package co.nilin.opex.auth.gateway.config
import co.nilin.opex.auth.gateway.model.AuthEvent
import org.apache.kafka.clients.admin.NewTopic
-import org.apache.kafka.common.serialization.StringSerializer
import org.apache.kafka.clients.producer.ProducerConfig
+import org.apache.kafka.common.serialization.StringSerializer
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Qualifier
import org.springframework.beans.factory.annotation.Value
@@ -14,7 +14,6 @@ import org.springframework.kafka.core.DefaultKafkaProducerFactory
import org.springframework.kafka.core.KafkaTemplate
import org.springframework.kafka.core.ProducerFactory
import org.springframework.kafka.support.serializer.JsonSerializer
-import java.util.HashMap
@Configuration
class KafkaConfig {
@@ -41,7 +40,7 @@ class KafkaConfig {
}
@Autowired
- fun createUserCreatedTopics(applicationContext: GenericApplicationContext){
- applicationContext.registerBean("topic_auth_user_created", NewTopic::class.java, "auth_user_created", 1 ,1)
+ fun createUserCreatedTopics(applicationContext: GenericApplicationContext) {
+ applicationContext.registerBean("topic_auth_user_created", NewTopic::class.java, "auth_user_created", 1, 1)
}
}
\ No newline at end of file
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KeycloakServerProperties.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KeycloakServerProperties.kt
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KeycloakServerProperties.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/KeycloakServerProperties.kt
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/RegularJsonConfigProviderFactory.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/RegularJsonConfigProviderFactory.kt
similarity index 59%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/RegularJsonConfigProviderFactory.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/RegularJsonConfigProviderFactory.kt
index 9d1f51313..e3b9b2dcb 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/RegularJsonConfigProviderFactory.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/RegularJsonConfigProviderFactory.kt
@@ -2,5 +2,5 @@ package co.nilin.opex.auth.gateway.config
import org.keycloak.services.util.JsonConfigProviderFactory
-class RegularJsonConfigProviderFactory: JsonConfigProviderFactory() {
+class RegularJsonConfigProviderFactory : JsonConfigProviderFactory() {
}
\ No newline at end of file
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/Resteasy3Provider.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/Resteasy3Provider.kt
similarity index 94%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/Resteasy3Provider.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/Resteasy3Provider.kt
index 19bc13fd4..8d73741dd 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/Resteasy3Provider.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/Resteasy3Provider.kt
@@ -4,7 +4,7 @@ import org.jboss.resteasy.core.Dispatcher
import org.jboss.resteasy.spi.ResteasyProviderFactory
import org.keycloak.common.util.ResteasyProvider
-class Resteasy3Provider: ResteasyProvider {
+class Resteasy3Provider : ResteasyProvider {
override fun getContextData(type: Class?): R {
return ResteasyProviderFactory.getContextData(type)
}
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SimplePlatformProvider.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SimplePlatformProvider.kt
similarity index 99%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SimplePlatformProvider.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SimplePlatformProvider.kt
index bb6cc7f4c..49971fd2f 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SimplePlatformProvider.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SimplePlatformProvider.kt
@@ -1,8 +1,7 @@
package co.nilin.opex.auth.gateway.config
-import org.keycloak.services.ServicesLogger
-
import org.keycloak.platform.PlatformProvider
+import org.keycloak.services.ServicesLogger
class SimplePlatformProvider : PlatformProvider {
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SystemPropertyConfig.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SystemPropertyConfig.kt
similarity index 96%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SystemPropertyConfig.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SystemPropertyConfig.kt
index 9fe7d25c3..dcdc87a47 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SystemPropertyConfig.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/config/SystemPropertyConfig.kt
@@ -1,13 +1,11 @@
package co.nilin.opex.auth.gateway.config
-import org.springframework.beans.factory.BeanFactory
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.config.ConfigurableBeanFactory
import org.springframework.context.annotation.Configuration
-import org.springframework.core.env.StandardEnvironment
import org.springframework.core.env.MapPropertySource
+import org.springframework.core.env.StandardEnvironment
import org.springframework.core.io.ClassPathResource
-import java.io.File
import java.util.*
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProvider.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProvider.kt
similarity index 97%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProvider.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProvider.kt
index 91f2fbec8..a4e548a28 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProvider.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProvider.kt
@@ -81,8 +81,8 @@ class ExtendedEventListenerProvider(private val session: KeycloakSession) : Even
val uuid = adminEvent.resourcePath.substringAfter("/")
val kafkaEvent = UserCreatedEvent(uuid, userData.firstName, userData.lastName, userData.email)
(ApplicationContextHolder.getCurrentContext()!!
- .getBean("authKafkaTemplate") as KafkaTemplate)
- .send("auth_user_created", kafkaEvent)
+ .getBean("authKafkaTemplate") as KafkaTemplate)
+ .send("auth_user_created", kafkaEvent)
logger.info("{} produced in kafka topic", kafkaEvent)
}
logger.info("-----------------------------------------------------------")
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProviderFactory.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProviderFactory.kt
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProviderFactory.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/extension/ExtendedEventListenerProviderFactory.kt
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/AuthEvent.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/AuthEvent.kt
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/AuthEvent.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/AuthEvent.kt
diff --git a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt
similarity index 94%
rename from UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt
rename to user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt
index e5c122c99..67ea792ee 100644
--- a/UserManagement/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt
+++ b/user-management/keycloak-gateway/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt
@@ -1,6 +1,6 @@
package co.nilin.opex.auth.gateway.model
-class UserCreatedEvent: AuthEvent {
+class UserCreatedEvent : AuthEvent {
lateinit var uuid: String
var firstName: String? = null
var lastName: String? = null
diff --git a/UserManagement/keycloak-gateway/src/main/resources/META-INF/keycloak-server.json b/user-management/keycloak-gateway/src/main/resources/META-INF/keycloak-server.json
similarity index 94%
rename from UserManagement/keycloak-gateway/src/main/resources/META-INF/keycloak-server.json
rename to user-management/keycloak-gateway/src/main/resources/META-INF/keycloak-server.json
index 45b4bfc91..1058fe841 100644
--- a/UserManagement/keycloak-gateway/src/main/resources/META-INF/keycloak-server.json
+++ b/user-management/keycloak-gateway/src/main/resources/META-INF/keycloak-server.json
@@ -1,106 +1,85 @@
{
-
"hostname": {
"provider": "${keycloak.hostname.provider:default}",
-
"fixed": {
"hostname": "${keycloak.hostname.fixed.hostname:localhost}",
"httpPort": "${keycloak.hostname.fixed.httpPort:-1}",
"httpsPort": "${keycloak.hostname.fixed.httpsPort:-1}",
"alwaysHttps": "${keycloak.hostname.fixed.alwaysHttps:false}"
},
-
"default": {
"frontendUrl": "${keycloak.frontendUrl:}",
"adminUrl": "${keycloak.adminUrl:}",
"forceBackendUrlToFrontendUrl": "${keycloak.hostname.default.forceBackendUrlToFrontendUrl:false}"
}
},
-
"admin": {
"realm": "master"
},
-
"eventsStore": {
"provider": "${keycloak.eventsStore.provider:jpa}",
"jpa": {
"max-detail-length": "${keycloak.eventsStore.maxDetailLength:1000}"
}
},
-
"eventsListener": {
- "jboss-logging" : {
+ "jboss-logging": {
"success-level": "debug",
"error-level": "warn"
},
"event-queue": {}
},
-
"realm": {
"provider": "${keycloak.realm.provider:jpa}"
},
-
"user": {
"provider": "${keycloak.user.provider:jpa}"
},
-
"client": {
"provider": "${keycloak.client.provider:jpa}"
},
-
"clientScope": {
"provider": "${keycloak.clientScope.provider:jpa}"
},
-
"group": {
"provider": "${keycloak.group.provider:jpa}"
},
-
"role": {
"provider": "${keycloak.role.provider:jpa}"
},
-
"authenticationSessions": {
"provider": "${keycloak.authSession.provider:infinispan}"
},
-
"mapStorage": {
"provider": "${keycloak.mapStorage.provider:concurrenthashmap}",
"concurrenthashmap": {
"dir": "${project.build.directory:target}"
}
},
-
"userFederatedStorage": {
"provider": "${keycloak.userFederatedStorage.provider:jpa}"
},
-
"userSessionPersister": {
"provider": "${keycloak.userSessionPersister.provider:jpa}"
},
-
"authorizationPersister": {
"provider": "${keycloak.authorization.provider:jpa}"
},
-
"userCache": {
"provider": "${keycloak.user.cache.provider:default}",
- "default" : {
+ "default": {
"enabled": true
},
"mem": {
"maxSize": 20000
}
},
-
"userSessions": {
- "provider" : "${keycloak.userSessions.provider:infinispan}"
+ "provider": "${keycloak.userSessions.provider:infinispan}"
},
-
"timer": {
"provider": "basic"
},
-
"theme": {
"staticMaxAge": "${keycloak.theme.staticMaxAge:2592000}",
"cacheTemplates": "${keycloak.theme.cacheTemplates:true}",
@@ -109,30 +88,23 @@
"dir": "${keycloak.theme.dir}"
}
},
-
"login": {
"provider": "freemarker"
},
-
"account": {
"provider": "freemarker"
},
-
"email": {
"provider": "freemarker"
},
-
"scheduled": {
"interval": 900
},
-
"connectionsHttpClient": {
"default": {
"reuse-connections": false
}
},
-
-
"connectionsJpa": {
"default": {
"url": "${spring.datasource.url}",
@@ -147,14 +119,12 @@
"globalStatsInterval": "-1"
}
},
-
"realmCache": {
"provider": "${keycloak.realm.cache.provider:default}",
- "default" : {
+ "default": {
"enabled": true
}
},
-
"connectionsInfinispan": {
"default": {
"jgroupsUdpMcastAddr": "${keycloak.connectionsInfinispan.jgroupsUdpMcastAddr:234.56.78.90}",
@@ -171,21 +141,17 @@
"embedded": "${keycloak.connectionsInfinispan.embedded:true}"
}
},
-
"truststore": {
"file": {
"disabled": "${keycloak.truststore.disabled:true}"
}
},
-
"jta-lookup": {
"provider": "${keycloak.jta.lookup.provider:jboss}",
- "jboss" : {
+ "jboss": {
"enabled": true
}
-
},
-
"login-protocol": {
"saml": {
"knownProtocols": [
@@ -194,14 +160,19 @@
]
}
},
-
"userProfile": {
"legacy-user-profile": {
- "read-only-attributes": [ "deniedFoo", "deniedBar*", "deniedSome/thing", "deniedsome*thing" ],
- "admin-read-only-attributes": [ "deniedSomeAdmin" ]
+ "read-only-attributes": [
+ "deniedFoo",
+ "deniedBar*",
+ "deniedSome/thing",
+ "deniedsome*thing"
+ ],
+ "admin-read-only-attributes": [
+ "deniedSomeAdmin"
+ ]
}
},
-
"x509cert-lookup": {
"provider": "${keycloak.x509cert.lookup.provider:default}",
"default": {
@@ -226,14 +197,12 @@
"certificateChainLength": 1
}
},
-
"vault": {
"files-plaintext": {
"dir": "target/dependency/vault",
"enabled": "${keycloak.vault.files-plaintext.provider.enabled:false}"
}
},
-
"saml-artifact-resolver": {
"provider": "${keycloak.saml-artifact-resolver.provider:default}"
}
diff --git a/UserManagement/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.common.util.ResteasyProvider b/user-management/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.common.util.ResteasyProvider
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.common.util.ResteasyProvider
rename to user-management/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.common.util.ResteasyProvider
diff --git a/UserManagement/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory b/user-management/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory
rename to user-management/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.events.EventListenerProviderFactory
diff --git a/UserManagement/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.platform.PlatformProvider b/user-management/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.platform.PlatformProvider
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.platform.PlatformProvider
rename to user-management/keycloak-gateway/src/main/resources/META-INF/services/org.keycloak.platform.PlatformProvider
diff --git a/UserManagement/keycloak-gateway/src/main/resources/application-docker.yml b/user-management/keycloak-gateway/src/main/resources/application-docker.yml
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/resources/application-docker.yml
rename to user-management/keycloak-gateway/src/main/resources/application-docker.yml
diff --git a/UserManagement/keycloak-gateway/src/main/resources/application.yml b/user-management/keycloak-gateway/src/main/resources/application.yml
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/resources/application.yml
rename to user-management/keycloak-gateway/src/main/resources/application.yml
diff --git a/user-management/keycloak-gateway/src/main/resources/opex-master-realm.json b/user-management/keycloak-gateway/src/main/resources/opex-master-realm.json
new file mode 100644
index 000000000..259df44ab
--- /dev/null
+++ b/user-management/keycloak-gateway/src/main/resources/opex-master-realm.json
@@ -0,0 +1,47 @@
+{
+ "id": "master",
+ "realm": "master",
+ "notBefore": 0,
+ "revokeRefreshToken": false,
+ "refreshTokenMaxReuse": 0,
+ "accessTokenLifespan": 300,
+ "accessTokenLifespanForImplicitFlow": 900,
+ "ssoSessionIdleTimeout": 1800,
+ "ssoSessionMaxLifespan": 36000,
+ "ssoSessionIdleTimeoutRememberMe": 0,
+ "ssoSessionMaxLifespanRememberMe": 0,
+ "offlineSessionIdleTimeout": 2592000,
+ "offlineSessionMaxLifespanEnabled": false,
+ "offlineSessionMaxLifespan": 5184000,
+ "accessCodeLifespan": 60,
+ "accessCodeLifespanUserAction": 300,
+ "accessCodeLifespanLogin": 1800,
+ "actionTokenGeneratedByAdminLifespan": 43200,
+ "actionTokenGeneratedByUserLifespan": 300,
+ "enabled": true,
+ "sslRequired": "none",
+ "registrationAllowed": true,
+ "registrationEmailAsUsername": false,
+ "rememberMe": false,
+ "verifyEmail": false,
+ "loginWithEmailAllowed": true,
+ "duplicateEmailsAllowed": false,
+ "resetPasswordAllowed": true,
+ "editUsernameAllowed": false,
+ "bruteForceProtected": true,
+ "permanentLockout": false,
+ "maxFailureWaitSeconds": 900,
+ "minimumQuickLoginWaitSeconds": 60,
+ "waitIncrementSeconds": 60,
+ "quickLoginCheckMilliSeconds": 1000,
+ "maxDeltaTimeSeconds": 43200,
+ "failureFactor": 30,
+ "smtpServer": {
+ "host": "smtp.elasticemail.com",
+ "port": 2525,
+ "from": "for.demo.purpose.only@opex.dev",
+ "auth": true,
+ "user": "for.demo.purpose.only@opex.dev",
+ "password": "642467973026C6F093FB1E39C4BFC0D15042"
+ }
+}
\ No newline at end of file
diff --git a/UserManagement/keycloak-gateway/src/main/resources/opex-realm.json b/user-management/keycloak-gateway/src/main/resources/opex-realm.json
similarity index 100%
rename from UserManagement/keycloak-gateway/src/main/resources/opex-realm.json
rename to user-management/keycloak-gateway/src/main/resources/opex-realm.json
diff --git a/user-management/pom.xml b/user-management/pom.xml
new file mode 100644
index 000000000..9e4906fdf
--- /dev/null
+++ b/user-management/pom.xml
@@ -0,0 +1,28 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.auth
+ user-management
+ user-management
+ pom
+ User Management root of Opex
+
+
+ keycloak-gateway
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
diff --git a/utility/error-handler/pom.xml b/utility/error-handler/pom.xml
new file mode 100644
index 000000000..4c5058520
--- /dev/null
+++ b/utility/error-handler/pom.xml
@@ -0,0 +1,44 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.utility
+ utility
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ error-handler
+ REST error handler
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/Config.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/Config.kt
similarity index 100%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/Config.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/Config.kt
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/DefaultErrorTranslator.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/DefaultErrorTranslator.kt
similarity index 100%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/DefaultErrorTranslator.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/DefaultErrorTranslator.kt
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/EnableOpexErrorHandler.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/EnableOpexErrorHandler.kt
similarity index 100%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/EnableOpexErrorHandler.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/EnableOpexErrorHandler.kt
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/controller/ExceptionController.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/controller/ExceptionController.kt
similarity index 96%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/controller/ExceptionController.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/controller/ExceptionController.kt
index 1d0ba0ca5..4dc1acf91 100644
--- a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/controller/ExceptionController.kt
+++ b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/controller/ExceptionController.kt
@@ -8,6 +8,7 @@ import co.nilin.opex.utility.error.spi.ExceptionResponse
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
import com.fasterxml.jackson.databind.ObjectMapper
import org.slf4j.LoggerFactory
+import org.springframework.http.HttpStatus
import org.springframework.http.ResponseEntity
import org.springframework.web.bind.annotation.ExceptionHandler
import org.springframework.web.bind.annotation.RestControllerAdvice
@@ -15,7 +16,6 @@ import org.springframework.web.reactive.function.client.WebClientResponseExcepti
import org.springframework.web.server.ServerWebInputException
import java.nio.charset.StandardCharsets
import java.util.*
-import org.springframework.http.HttpStatus
@RestControllerAdvice
class ExceptionController(
@@ -82,7 +82,8 @@ class ExceptionController(
@ExceptionHandler(Throwable::class)
fun handle(e: Throwable): ResponseEntity {
logger.error("Generic error", e)
- val opexException = OpexException(status = HttpStatus.INTERNAL_SERVER_ERROR, error = OpexError.InternalServerError)
+ val opexException =
+ OpexException(status = HttpStatus.INTERNAL_SERVER_ERROR, error = OpexError.InternalServerError)
val error = translator.translate(opexException)
return response(error)
}
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/DefaultExceptionResponse.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/DefaultExceptionResponse.kt
similarity index 100%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/DefaultExceptionResponse.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/DefaultExceptionResponse.kt
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt
similarity index 100%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexError.kt
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexException.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexException.kt
similarity index 100%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexException.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/data/OpexException.kt
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/spi/ErrorTranslator.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/spi/ErrorTranslator.kt
similarity index 100%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/spi/ErrorTranslator.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/spi/ErrorTranslator.kt
diff --git a/Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/spi/ExceptionResponse.kt b/utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/spi/ExceptionResponse.kt
similarity index 100%
rename from Utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/spi/ExceptionResponse.kt
rename to utility/error-handler/src/main/kotlin/co/nilin/opex/utility/error/spi/ExceptionResponse.kt
diff --git a/Utility/error-handler/src/main/resources/application.yml b/utility/error-handler/src/main/resources/application.yml
similarity index 100%
rename from Utility/error-handler/src/main/resources/application.yml
rename to utility/error-handler/src/main/resources/application.yml
diff --git a/utility/interceptors/pom.xml b/utility/interceptors/pom.xml
new file mode 100644
index 000000000..72d6f5515
--- /dev/null
+++ b/utility/interceptors/pom.xml
@@ -0,0 +1,49 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.utility
+ utility
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ interceptors
+ REST interceptors
+
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ io.projectreactor.netty
+ reactor-netty
+ 0.9.12.RELEASE
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
diff --git a/utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/FormDataWorkaroundFilter.java b/utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/FormDataWorkaroundFilter.java
new file mode 100644
index 000000000..a4fb267c1
--- /dev/null
+++ b/utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/FormDataWorkaroundFilter.java
@@ -0,0 +1,45 @@
+package co.nilin.opex.utility.interceptors;
+
+import co.nilin.opex.utility.interceptors.decorator.FormDataServerWebExchangeDecorator;
+import org.springframework.http.codec.multipart.FormFieldPart;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.util.LinkedMultiValueMap;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.WebFilter;
+import org.springframework.web.server.WebFilterChain;
+import reactor.core.publisher.Mono;
+
+public class FormDataWorkaroundFilter implements WebFilter {
+
+ @Override
+ public Mono filter(ServerWebExchange exchange, WebFilterChain chain) {
+ final ServerHttpRequest request = exchange.getRequest();
+
+ final MultiValueMap queryParams = new LinkedMultiValueMap<>();
+
+ return exchange.getFormData()
+ .doOnNext(queryParams::putAll)
+ .flatMap(it ->
+ exchange.getMultipartData().map(map -> {
+ map.forEach((key, value) -> {
+ value.forEach(item -> {
+ //add each form field parts to query params
+ if (item instanceof FormFieldPart) {
+ final FormFieldPart formFieldPart = (FormFieldPart) item;
+ queryParams.add(key, formFieldPart.value());
+ }
+ });
+
+ });
+ return map;
+ })
+ )
+ .doOnNext(it ->
+ queryParams.putAll(request.getQueryParams()))
+ .flatMap(it ->
+ chain.filter(new FormDataServerWebExchangeDecorator(queryParams, exchange))
+ );
+ }
+
+}
diff --git a/Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/decorator/FormDataServerHttpRequestDecorator.java b/utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/decorator/FormDataServerHttpRequestDecorator.java
similarity index 64%
rename from Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/decorator/FormDataServerHttpRequestDecorator.java
rename to utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/decorator/FormDataServerHttpRequestDecorator.java
index 670365200..e401a15f4 100644
--- a/Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/decorator/FormDataServerHttpRequestDecorator.java
+++ b/utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/decorator/FormDataServerHttpRequestDecorator.java
@@ -1,7 +1,8 @@
-package co.nilin.opex.utility.interceptor.decorator;
+package co.nilin.opex.utility.interceptors.decorator;
-import org.springframework.http.server.reactive.*;
-import org.springframework.util.*;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
+import org.springframework.util.MultiValueMap;
public class FormDataServerHttpRequestDecorator extends ServerHttpRequestDecorator {
diff --git a/Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/decorator/FormDataServerWebExchangeDecorator.java b/utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/decorator/FormDataServerWebExchangeDecorator.java
similarity index 53%
rename from Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/decorator/FormDataServerWebExchangeDecorator.java
rename to utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/decorator/FormDataServerWebExchangeDecorator.java
index 57679d517..28b3b2425 100644
--- a/Utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptor/decorator/FormDataServerWebExchangeDecorator.java
+++ b/utility/interceptors/src/main/kotlin/co/nilin/opex/utility/interceptors/decorator/FormDataServerWebExchangeDecorator.java
@@ -1,13 +1,15 @@
-package co.nilin.opex.utility.interceptor.decorator;
+package co.nilin.opex.utility.interceptors.decorator;
-import org.slf4j.*;
-import org.springframework.http.server.reactive.*;
-import org.springframework.util.*;
-import org.springframework.web.server.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.util.MultiValueMap;
+import org.springframework.web.server.ServerWebExchange;
+import org.springframework.web.server.ServerWebExchangeDecorator;
public class FormDataServerWebExchangeDecorator extends ServerWebExchangeDecorator {
- private Logger log = LoggerFactory.getLogger( FormDataServerWebExchangeDecorator.class);
+ private Logger log = LoggerFactory.getLogger(FormDataServerWebExchangeDecorator.class);
private FormDataServerHttpRequestDecorator requestDecorator;
diff --git a/utility/logging-handler/pom.xml b/utility/logging-handler/pom.xml
new file mode 100644
index 000000000..777662beb
--- /dev/null
+++ b/utility/logging-handler/pom.xml
@@ -0,0 +1,49 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.utility
+ utility
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ logging-handler
+ REST logging handler
+
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ io.projectreactor.netty
+ reactor-netty
+ 0.9.12.RELEASE
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
diff --git a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/LogUtils.java b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/LogUtils.java
similarity index 90%
rename from Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/LogUtils.java
rename to utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/LogUtils.java
index 9c5fa48e9..38551febd 100644
--- a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/LogUtils.java
+++ b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/LogUtils.java
@@ -1,4 +1,4 @@
-package co.nilin.opex.utility.log.interceptor;
+package co.nilin.opex.utility.log;
import io.netty.buffer.UnpooledByteBufAllocator;
import org.slf4j.Logger;
@@ -22,14 +22,14 @@ public class LogUtils {
MediaType.TEXT_XML);
public static T loggingRequest(Logger log, String tracing, T buffer) {
- return logging(log, tracing,"request: ", buffer);
+ return logging(log, tracing, "request: ", buffer);
}
public static T loggingResponse(Logger log, String tracing, T buffer) {
- return logging(log, tracing,"response: ", buffer);
+ return logging(log, tracing, "response: ", buffer);
}
- private static T logging(Logger log, String tracing,String inOrOut, T buffer) {
+ private static T logging(Logger log, String tracing, String inOrOut, T buffer) {
InputStream dataBuffer = buffer.asInputStream();
byte[] bytes = toByteArray(dataBuffer);
NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(new UnpooledByteBufAllocator(false));
diff --git a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/RequestFilter.java b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/RequestFilter.java
similarity index 79%
rename from Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/RequestFilter.java
rename to utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/RequestFilter.java
index 83d68b9cc..440b3ec65 100644
--- a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/RequestFilter.java
+++ b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/RequestFilter.java
@@ -1,6 +1,6 @@
-package co.nilin.opex.utility.log.interceptor;
+package co.nilin.opex.utility.log;
-import co.nilin.opex.utility.log.interceptor.decorator.*;
+import co.nilin.opex.utility.log.decorator.PayloadServerWebExchangeDecorator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.annotation.Order;
@@ -16,11 +16,11 @@
@Order(2)
public class RequestFilter implements WebFilter {
- private Logger log = LoggerFactory.getLogger( RequestFilter.class);
+ private Logger log = LoggerFactory.getLogger(RequestFilter.class);
@Override
public Mono filter(ServerWebExchange exchange, WebFilterChain chain) {
- if ( exchange.getRequest().getPath().toString().startsWith("/actuator/health"))
+ if (exchange.getRequest().getPath().toString().startsWith("/actuator/health"))
return chain.filter(exchange);
long startTime = System.currentTimeMillis();
String tracing = UUID.randomUUID().toString();
diff --git a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/WebClientInterceptor.kt b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/WebClientInterceptor.kt
similarity index 96%
rename from Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/WebClientInterceptor.kt
rename to utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/WebClientInterceptor.kt
index 5dd922df3..b89dec57e 100644
--- a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/WebClientInterceptor.kt
+++ b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/WebClientInterceptor.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.utility.log.interceptor
+package co.nilin.opex.utility.log
import io.netty.buffer.ByteBuf
import io.netty.buffer.ByteBufHolder
@@ -45,5 +45,4 @@ class CustomLogger(clazz: Class<*>?) : LoggingHandler(clazz) {
}
-
}
\ No newline at end of file
diff --git a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadBufferServerHttpRequestDecorator.java b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadBufferServerHttpRequestDecorator.java
similarity index 95%
rename from Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadBufferServerHttpRequestDecorator.java
rename to utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadBufferServerHttpRequestDecorator.java
index 36cbd2287..157a34000 100644
--- a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadBufferServerHttpRequestDecorator.java
+++ b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadBufferServerHttpRequestDecorator.java
@@ -1,6 +1,6 @@
-package co.nilin.opex.utility.log.interceptor.decorator;
+package co.nilin.opex.utility.log.decorator;
-import co.nilin.opex.utility.log.interceptor.*;
+import co.nilin.opex.utility.log.LogUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.buffer.DataBuffer;
@@ -11,7 +11,6 @@
import org.springframework.util.StringUtils;
import reactor.core.publisher.Flux;
-
import java.util.Optional;
import java.util.stream.Collectors;
diff --git a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadBufferServerHttpResponseDecorator.java b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadBufferServerHttpResponseDecorator.java
similarity index 77%
rename from Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadBufferServerHttpResponseDecorator.java
rename to utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadBufferServerHttpResponseDecorator.java
index 90880f7b0..8f89073d3 100644
--- a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadBufferServerHttpResponseDecorator.java
+++ b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadBufferServerHttpResponseDecorator.java
@@ -1,17 +1,20 @@
-package co.nilin.opex.utility.log.interceptor.decorator;
+package co.nilin.opex.utility.log.decorator;
-import co.nilin.opex.utility.log.interceptor.*;
-import org.reactivestreams.*;
-import org.slf4j.*;
-import org.springframework.core.io.buffer.*;
-import org.springframework.http.*;
-import org.springframework.http.server.reactive.*;
-import reactor.core.publisher.*;
+import co.nilin.opex.utility.log.LogUtils;
+import org.reactivestreams.Publisher;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.http.MediaType;
+import org.springframework.http.server.reactive.ServerHttpResponse;
+import org.springframework.http.server.reactive.ServerHttpResponseDecorator;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
-import java.util.stream.*;
+import java.util.stream.Collectors;
-import static reactor.core.scheduler.Schedulers.*;
+import static reactor.core.scheduler.Schedulers.single;
public class PayloadBufferServerHttpResponseDecorator extends ServerHttpResponseDecorator {
private Logger log = LoggerFactory.getLogger(PayloadBufferServerHttpResponseDecorator.class);
diff --git a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadServerWebExchangeDecorator.java b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadServerWebExchangeDecorator.java
similarity index 87%
rename from Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadServerWebExchangeDecorator.java
rename to utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadServerWebExchangeDecorator.java
index 95593ec04..716d5f199 100644
--- a/Utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/interceptor/decorator/PayloadServerWebExchangeDecorator.java
+++ b/utility/logging-handler/src/main/kotlin/co/nilin/opex/utility/log/decorator/PayloadServerWebExchangeDecorator.java
@@ -1,4 +1,4 @@
-package co.nilin.opex.utility.log.interceptor.decorator;
+package co.nilin.opex.utility.log.decorator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -9,7 +9,7 @@
public class PayloadServerWebExchangeDecorator extends ServerWebExchangeDecorator {
- private Logger log = LoggerFactory.getLogger( PayloadServerWebExchangeDecorator.class);
+ private Logger log = LoggerFactory.getLogger(PayloadServerWebExchangeDecorator.class);
private PayloadBufferServerHttpRequestDecorator requestDecorator;
diff --git a/utility/pom.xml b/utility/pom.xml
new file mode 100644
index 000000000..9200d8b7c
--- /dev/null
+++ b/utility/pom.xml
@@ -0,0 +1,45 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.utility
+ utility
+ utility
+ pom
+ Utility root of Opex
+
+
+ error-handler
+ logging-handler
+ interceptors
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.1
+
+ ${java.version}
+ ${java.version}
+
+
+
+
+
\ No newline at end of file
diff --git a/wallet/pom.xml b/wallet/pom.xml
new file mode 100644
index 000000000..4dbd94f73
--- /dev/null
+++ b/wallet/pom.xml
@@ -0,0 +1,66 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.wallet
+ wallet
+ wallet
+ pom
+ Wallet management root of Opex
+
+
+ wallet-core
+ wallet-app
+ wallet-ports/wallet-persister-postgres
+ wallet-ports/wallet-eventlistener-kafka
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
+
+
+
+ co.nilin.opex.wallet.ports.postgres
+ wallet-persister-postgres
+ ${project.version}
+
+
+ co.nilin.opex.wallet.ports.kafka.listener
+ wallet-eventlistener-kafka
+ ${project.version}
+
+
+ co.nilin.opex.wallet.core
+ wallet-core
+ ${project.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ ${project.version}
+
+
+
+
diff --git a/Wallet/wallet-app/Dockerfile b/wallet/wallet-app/Dockerfile
similarity index 100%
rename from Wallet/wallet-app/Dockerfile
rename to wallet/wallet-app/Dockerfile
diff --git a/Wallet/wallet-app/mvnw b/wallet/wallet-app/mvnw
similarity index 100%
rename from Wallet/wallet-app/mvnw
rename to wallet/wallet-app/mvnw
diff --git a/Wallet/wallet-app/mvnw.cmd b/wallet/wallet-app/mvnw.cmd
similarity index 100%
rename from Wallet/wallet-app/mvnw.cmd
rename to wallet/wallet-app/mvnw.cmd
diff --git a/wallet/wallet-app/pom.xml b/wallet/wallet-app/pom.xml
new file mode 100644
index 000000000..d0e6d1f50
--- /dev/null
+++ b/wallet/wallet-app/pom.xml
@@ -0,0 +1,125 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.wallet
+ wallet
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.wallet.app
+ wallet-app
+ wallet-app
+ Wallet management app of Opex
+
+
+ 1.8
+ 1.4.31
+ 2020.0.2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+ co.nilin.opex.wallet.core
+ wallet-core
+
+
+ co.nilin.opex.wallet.ports.postgres
+ wallet-persister-postgres
+
+
+ co.nilin.opex.wallet.ports.kafka.listener
+ wallet-eventlistener-kafka
+
+
+ co.nilin.opex.utility.error
+ error-handler
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-security
+
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-resource-server
+
+
+ org.bouncycastle
+ bcprov-jdk15on
+ 1.60
+
+
+ io.springfox
+ springfox-boot-starter
+ 3.0.0
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt
new file mode 100644
index 000000000..e4b061ee7
--- /dev/null
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/WalletApp.kt
@@ -0,0 +1,17 @@
+package co.nilin.opex.wallet.app
+
+import co.nilin.opex.utility.error.EnableOpexErrorHandler
+import org.springframework.boot.autoconfigure.SpringBootApplication
+import org.springframework.boot.runApplication
+import org.springframework.context.annotation.ComponentScan
+import springfox.documentation.swagger2.annotations.EnableSwagger2
+
+@SpringBootApplication
+@ComponentScan("co.nilin.opex")
+@EnableSwagger2
+@EnableOpexErrorHandler
+class WalletApp
+
+fun main(args: Array) {
+ runApplication(*args)
+}
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppConfig.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppConfig.kt
similarity index 85%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppConfig.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppConfig.kt
index 4b7dd85ce..291c58695 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppConfig.kt
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppConfig.kt
@@ -1,9 +1,9 @@
package co.nilin.opex.wallet.app.config
-import co.nilin.opex.auth.gateway.model.UserCreatedEvent
-import co.nilin.opex.port.wallet.kafka.consumer.UserCreatedKafkaListener
-import co.nilin.opex.port.wallet.kafka.spi.UserCreatedEventListener
import co.nilin.opex.wallet.app.service.UserRegistrationService
+import co.nilin.opex.wallet.ports.kafka.listener.consumer.UserCreatedKafkaListener
+import co.nilin.opex.wallet.ports.kafka.listener.model.UserCreatedEvent
+import co.nilin.opex.wallet.ports.kafka.listener.spi.UserCreatedEventListener
import kotlinx.coroutines.runBlocking
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.beans.factory.annotation.Value
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppDispatchers.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppDispatchers.kt
similarity index 100%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppDispatchers.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/AppDispatchers.kt
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/RestConfig.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/RestConfig.kt
similarity index 83%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/RestConfig.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/RestConfig.kt
index be0640005..53a6e7455 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/RestConfig.kt
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/RestConfig.kt
@@ -1,9 +1,10 @@
package co.nilin.opex.wallet.app.config
-import co.nilin.opex.utility.interceptor.FormDataWorkaroundFilter
+import co.nilin.opex.utility.interceptors.FormDataWorkaroundFilter
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.springframework.web.server.WebFilter
+
@Configuration
class RestConfig {
@Bean
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SecurityConfig.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SecurityConfig.kt
similarity index 100%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SecurityConfig.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SecurityConfig.kt
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt
similarity index 100%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/SwaggerConfig.kt
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/WebClientConfig.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/WebClientConfig.kt
similarity index 100%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/WebClientConfig.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/config/WebClientConfig.kt
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/BalanceController.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/BalanceController.kt
similarity index 100%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/BalanceController.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/BalanceController.kt
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/InquiryController.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/InquiryController.kt
similarity index 100%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/InquiryController.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/InquiryController.kt
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransactionController.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransactionController.kt
similarity index 100%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransactionController.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransactionController.kt
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransferController.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransferController.kt
similarity index 95%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransferController.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransferController.kt
index 8aa53380d..55ad09520 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransferController.kt
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/TransferController.kt
@@ -12,8 +12,10 @@ import co.nilin.opex.wallet.core.spi.WalletOwnerManager
import io.swagger.annotations.ApiResponse
import io.swagger.annotations.Example
import io.swagger.annotations.ExampleProperty
-import org.springframework.web.bind.annotation.*
-import java.lang.IllegalArgumentException
+import org.springframework.web.bind.annotation.PathVariable
+import org.springframework.web.bind.annotation.PostMapping
+import org.springframework.web.bind.annotation.RequestParam
+import org.springframework.web.bind.annotation.RestController
import java.math.BigDecimal
@RestController
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WalletOwnerController.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WalletOwnerController.kt
similarity index 97%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WalletOwnerController.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WalletOwnerController.kt
index 29d84605e..edae675f7 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WalletOwnerController.kt
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WalletOwnerController.kt
@@ -2,7 +2,6 @@ package co.nilin.opex.wallet.app.controller
import co.nilin.opex.utility.error.data.OpexError
import co.nilin.opex.utility.error.data.OpexException
-import co.nilin.opex.utility.error.data.throwError
import co.nilin.opex.wallet.core.spi.WalletManager
import co.nilin.opex.wallet.core.spi.WalletOwnerManager
import io.swagger.annotations.ApiResponse
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WithdrawController.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WithdrawController.kt
similarity index 99%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WithdrawController.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WithdrawController.kt
index 6c8863c21..527bc401c 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WithdrawController.kt
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/controller/WithdrawController.kt
@@ -6,7 +6,6 @@ import co.nilin.opex.wallet.core.service.WithdrawService
import io.swagger.annotations.ApiResponse
import io.swagger.annotations.Example
import io.swagger.annotations.ExampleProperty
-import org.springframework.beans.factory.annotation.Value
import org.springframework.web.bind.annotation.*
import java.math.BigDecimal
import java.security.Principal
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/dto/TransactionRequest.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/dto/TransactionRequest.kt
similarity index 87%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/dto/TransactionRequest.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/dto/TransactionRequest.kt
index 8b673b941..20638caaa 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/dto/TransactionRequest.kt
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/dto/TransactionRequest.kt
@@ -1,7 +1,7 @@
package co.nilin.opex.wallet.app.dto
data class TransactionRequest(
- val coin:String?,
+ val coin: String?,
val startTime: Long,
val endTime: Long,
val limit: Int,
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/listener/WalletListenerImpl.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/listener/WalletListenerImpl.kt
similarity index 59%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/listener/WalletListenerImpl.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/listener/WalletListenerImpl.kt
index fccdacd1e..7b8cf70c1 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/listener/WalletListenerImpl.kt
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/listener/WalletListenerImpl.kt
@@ -1,14 +1,10 @@
package co.nilin.opex.wallet.app.listener
-import co.nilin.opex.port.wallet.postgres.dao.WithdrawRepository
-import co.nilin.opex.port.wallet.postgres.model.WithdrawModel
import co.nilin.opex.wallet.core.model.Amount
import co.nilin.opex.wallet.core.model.Wallet
import co.nilin.opex.wallet.core.spi.WalletListener
-import kotlinx.coroutines.reactive.awaitFirst
-import kotlinx.coroutines.reactive.awaitFirstOrElse
+import co.nilin.opex.wallet.ports.postgres.dao.WithdrawRepository
import org.springframework.stereotype.Component
-import java.lang.RuntimeException
import java.math.BigDecimal
@Component
@@ -24,7 +20,13 @@ class WalletListenerImpl(val withdrawRepository: WithdrawRepository) : WalletLis
}
- override suspend fun onWithdraw(me: Wallet, destWallet: Wallet, amount: Amount, transaction: String, additionalData: Map?) {
+ override suspend fun onWithdraw(
+ me: Wallet,
+ destWallet: Wallet,
+ amount: Amount,
+ transaction: String,
+ additionalData: Map?
+ ) {
}
}
\ No newline at end of file
diff --git a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/service/UserRegistrationService.kt b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/service/UserRegistrationService.kt
similarity index 95%
rename from Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/service/UserRegistrationService.kt
rename to wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/service/UserRegistrationService.kt
index 8f3abaac4..8cde51fc2 100644
--- a/Wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/service/UserRegistrationService.kt
+++ b/wallet/wallet-app/src/main/kotlin/co/nilin/opex/wallet/app/service/UserRegistrationService.kt
@@ -1,6 +1,5 @@
package co.nilin.opex.wallet.app.service
-import co.nilin.opex.auth.gateway.model.UserCreatedEvent
import co.nilin.opex.utility.error.data.OpexError
import co.nilin.opex.utility.error.data.OpexException
import co.nilin.opex.wallet.core.model.Amount
@@ -8,6 +7,7 @@ import co.nilin.opex.wallet.core.model.Wallet
import co.nilin.opex.wallet.core.spi.CurrencyService
import co.nilin.opex.wallet.core.spi.WalletManager
import co.nilin.opex.wallet.core.spi.WalletOwnerManager
+import co.nilin.opex.wallet.ports.kafka.listener.model.UserCreatedEvent
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Component
import org.springframework.transaction.annotation.Transactional
diff --git a/Wallet/wallet-app/src/main/resources/application-docker.yml b/wallet/wallet-app/src/main/resources/application-docker.yml
similarity index 100%
rename from Wallet/wallet-app/src/main/resources/application-docker.yml
rename to wallet/wallet-app/src/main/resources/application-docker.yml
diff --git a/Wallet/wallet-app/src/main/resources/application.yml b/wallet/wallet-app/src/main/resources/application.yml
similarity index 100%
rename from Wallet/wallet-app/src/main/resources/application.yml
rename to wallet/wallet-app/src/main/resources/application.yml
diff --git a/Wallet/wallet-core/mvnw b/wallet/wallet-core/mvnw
similarity index 100%
rename from Wallet/wallet-core/mvnw
rename to wallet/wallet-core/mvnw
diff --git a/Wallet/wallet-core/mvnw.cmd b/wallet/wallet-core/mvnw.cmd
similarity index 100%
rename from Wallet/wallet-core/mvnw.cmd
rename to wallet/wallet-core/mvnw.cmd
diff --git a/wallet/wallet-core/pom.xml b/wallet/wallet-core/pom.xml
new file mode 100644
index 000000000..507cf69d3
--- /dev/null
+++ b/wallet/wallet-core/pom.xml
@@ -0,0 +1,32 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.wallet
+ wallet
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.wallet.core
+ wallet-core
+ wallet-core
+ Wallet management of Opex
+
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework
+ spring-tx
+ provided
+
+
+
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/CurrencyNotMatchedException.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/CurrencyNotMatchedException.kt
new file mode 100644
index 000000000..82935cc0f
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/CurrencyNotMatchedException.kt
@@ -0,0 +1,3 @@
+package co.nilin.opex.wallet.core.exc
+
+class CurrencyNotMatchedException : Exception()
\ No newline at end of file
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/DepositLimitExceededException.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/DepositLimitExceededException.kt
new file mode 100644
index 000000000..bca35f95e
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/DepositLimitExceededException.kt
@@ -0,0 +1,3 @@
+package co.nilin.opex.wallet.core.exc
+
+class DepositLimitExceededException : Exception()
\ No newline at end of file
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/NotEnoughBalanceException.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/NotEnoughBalanceException.kt
new file mode 100644
index 000000000..3aaa91d7e
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/NotEnoughBalanceException.kt
@@ -0,0 +1,3 @@
+package co.nilin.opex.wallet.core.exc
+
+class NotEnoughBalanceException : Exception()
\ No newline at end of file
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/WithdrawLimitExceededException.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/WithdrawLimitExceededException.kt
new file mode 100644
index 000000000..183d93963
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/exc/WithdrawLimitExceededException.kt
@@ -0,0 +1,3 @@
+package co.nilin.opex.wallet.core.exc
+
+class WithdrawLimitExceededException : Exception()
\ No newline at end of file
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferCommand.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferCommand.kt
new file mode 100644
index 000000000..e445f6a81
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferCommand.kt
@@ -0,0 +1,13 @@
+package co.nilin.opex.wallet.core.inout
+
+import co.nilin.opex.wallet.core.model.Amount
+import co.nilin.opex.wallet.core.model.Wallet
+
+data class TransferCommand(
+ val sourceWallet: Wallet,
+ val destWallet: Wallet,
+ val amount: Amount,
+ val description: String?,
+ val transferRef: String?,
+ val additionalData: Map?
+)
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferResult.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferResult.kt
similarity index 94%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferResult.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferResult.kt
index 58c14d7c8..45ea7d3c8 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferResult.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/TransferResult.kt
@@ -1,7 +1,6 @@
package co.nilin.opex.wallet.core.inout
import co.nilin.opex.wallet.core.model.Amount
-import java.time.LocalDateTime
data class TransferResult(
val date: Long,
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawAcceptCommand.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawAcceptCommand.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawAcceptCommand.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawAcceptCommand.kt
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawCommand.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawCommand.kt
new file mode 100644
index 000000000..50d0ffd4c
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawCommand.kt
@@ -0,0 +1,16 @@
+package co.nilin.opex.wallet.core.inout
+
+import java.math.BigDecimal
+
+class WithdrawCommand(
+ val uuid: String,
+ val symbol: String,
+ val amount: BigDecimal,
+ val description: String?,
+ val transferRef: String?,
+ val destCurrency: String,
+ val destAddress: String,
+ val destNetwork: String,
+ val destNote: String?,
+ val acceptedFee: BigDecimal
+)
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawRejectCommand.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawRejectCommand.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawRejectCommand.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawRejectCommand.kt
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResponse.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResponse.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResponse.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResponse.kt
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResult.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResult.kt
new file mode 100644
index 000000000..e699b4ccb
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/inout/WithdrawResult.kt
@@ -0,0 +1,4 @@
+package co.nilin.opex.wallet.core.inout
+
+class WithdrawResult(val withdrawId: Long, val status: String) {
+}
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Amount.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Amount.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Amount.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Amount.kt
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Currency.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Currency.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Currency.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Currency.kt
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Transaction.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Transaction.kt
new file mode 100644
index 000000000..190dab8e5
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Transaction.kt
@@ -0,0 +1,14 @@
+package co.nilin.opex.wallet.core.model
+
+import java.math.BigDecimal
+import java.time.LocalDateTime
+
+data class Transaction(
+ val sourceWallet: Wallet,
+ val destWallet: Wallet,
+ val sourceAmount: BigDecimal,
+ val destAmount: BigDecimal,
+ val description: String?,
+ val transferRef: String?,
+ val transactionDate: LocalDateTime
+)
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/TransactionHistory.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/TransactionHistory.kt
similarity index 88%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/TransactionHistory.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/TransactionHistory.kt
index 565f6db13..04539e98c 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/TransactionHistory.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/TransactionHistory.kt
@@ -1,7 +1,6 @@
package co.nilin.opex.wallet.core.model
import java.math.BigDecimal
-import java.time.LocalDateTime
data class TransactionHistory(
val id: Long,
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Wallet.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Wallet.kt
similarity index 98%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Wallet.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Wallet.kt
index 4f4210a94..0e4bded0f 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Wallet.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Wallet.kt
@@ -6,4 +6,4 @@ interface Wallet {
fun balance(): Amount
fun currency(): Currency
fun type(): String
- }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/WalletOwner.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/WalletOwner.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/WalletOwner.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/WalletOwner.kt
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Withdraw.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Withdraw.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Withdraw.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/model/Withdraw.kt
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/TransferService.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/TransferService.kt
similarity index 89%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/TransferService.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/TransferService.kt
index addeb4bdf..d60441401 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/TransferService.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/TransferService.kt
@@ -9,15 +9,11 @@ import co.nilin.opex.wallet.core.inout.TransferResult
import co.nilin.opex.wallet.core.inout.TransferResultDetailed
import co.nilin.opex.wallet.core.model.Amount
import co.nilin.opex.wallet.core.model.Transaction
-import co.nilin.opex.wallet.core.spi.CurrencyRateService
-import co.nilin.opex.wallet.core.spi.TransactionManager
-import co.nilin.opex.wallet.core.spi.WalletListener
-import co.nilin.opex.wallet.core.spi.WalletManager
-import co.nilin.opex.wallet.core.spi.WalletOwnerManager
+import co.nilin.opex.wallet.core.spi.*
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
import java.time.LocalDateTime
-import java.util.Date
+import java.util.*
@Service
class TransferService(
@@ -66,7 +62,14 @@ class TransferService(
)
)
//get the result and add to return result type
- walletListener.onDeposit(destWallet, srcWallet, transferCommand.amount, amountToTransfer, tx, transferCommand.additionalData)
+ walletListener.onDeposit(
+ destWallet,
+ srcWallet,
+ transferCommand.amount,
+ amountToTransfer,
+ tx,
+ transferCommand.additionalData
+ )
walletListener.onWithdraw(srcWallet, destWallet, transferCommand.amount, tx, transferCommand.additionalData)
//post transfer hook(dispatch post transfer event)
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/WithdrawService.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/WithdrawService.kt
similarity index 99%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/WithdrawService.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/WithdrawService.kt
index eb2d877d1..e17f25e65 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/WithdrawService.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/service/WithdrawService.kt
@@ -10,8 +10,6 @@ import co.nilin.opex.wallet.core.spi.WithdrawPersister
import org.springframework.beans.factory.annotation.Value
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
-import java.lang.IllegalArgumentException
-import java.lang.RuntimeException
import java.math.BigDecimal
import java.time.LocalDateTime
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyRateService.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyRateService.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyRateService.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyRateService.kt
index 3123e1f4b..937944ece 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyRateService.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyRateService.kt
@@ -1,7 +1,7 @@
package co.nilin.opex.wallet.core.spi
-import co.nilin.opex.wallet.core.model.Currency
import co.nilin.opex.wallet.core.model.Amount
+import co.nilin.opex.wallet.core.model.Currency
import java.math.BigDecimal
interface CurrencyRateService {
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyService.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyService.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyService.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/CurrencyService.kt
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/TransactionManager.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/TransactionManager.kt
similarity index 93%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/TransactionManager.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/TransactionManager.kt
index 29fa09ab2..f902c3e0c 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/TransactionManager.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/TransactionManager.kt
@@ -10,7 +10,7 @@ interface TransactionManager {
suspend fun findDepositTransactions(
uuid: String,
- coin:String?,
+ coin: String?,
startTime: LocalDateTime,
endTime: LocalDateTime,
limit: Int,
@@ -19,7 +19,7 @@ interface TransactionManager {
suspend fun findWithdrawTransactions(
uuid: String,
- coin:String?,
+ coin: String?,
startTime: LocalDateTime,
endTime: LocalDateTime,
limit: Int,
diff --git a/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletListener.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletListener.kt
new file mode 100644
index 000000000..827a149b5
--- /dev/null
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletListener.kt
@@ -0,0 +1,24 @@
+package co.nilin.opex.wallet.core.spi
+
+import co.nilin.opex.wallet.core.model.Amount
+import co.nilin.opex.wallet.core.model.Wallet
+import java.math.BigDecimal
+
+interface WalletListener {
+ suspend fun onDeposit(
+ me: Wallet,
+ sourceWallet: Wallet,
+ amount: Amount,
+ finalAmount: BigDecimal,
+ transaction: String,
+ additionalData: Map?
+ )
+
+ suspend fun onWithdraw(
+ me: Wallet,
+ destWallet: Wallet,
+ amount: Amount,
+ transaction: String,
+ additionalData: Map?
+ )
+}
\ No newline at end of file
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletManager.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletManager.kt
similarity index 100%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletManager.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletManager.kt
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletOwnerManager.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletOwnerManager.kt
similarity index 80%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletOwnerManager.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletOwnerManager.kt
index 11913f576..0c91cc4b4 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletOwnerManager.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WalletOwnerManager.kt
@@ -7,5 +7,5 @@ interface WalletOwnerManager {
suspend fun isDepositAllowed(owner: WalletOwner, amount: Amount): Boolean
suspend fun isWithdrawAllowed(owner: WalletOwner, amount: Amount): Boolean
suspend fun findWalletOwner(uuid: String): WalletOwner?
- suspend fun createWalletOwner(uuid: String, title: String, userLevel: String): WalletOwner
+ suspend fun createWalletOwner(uuid: String, title: String, userLevel: String): WalletOwner
}
diff --git a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WithdrawPersister.kt b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WithdrawPersister.kt
similarity index 97%
rename from Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WithdrawPersister.kt
rename to wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WithdrawPersister.kt
index 816612d41..5de53a9eb 100644
--- a/Wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WithdrawPersister.kt
+++ b/wallet/wallet-core/src/main/kotlin/co/nilin/opex/wallet/core/spi/WithdrawPersister.kt
@@ -22,7 +22,7 @@ interface WithdrawPersister {
suspend fun findWithdrawHistory(
uuid: String,
- coin:String?,
+ coin: String?,
startTime: LocalDateTime,
endTime: LocalDateTime,
limit: Int,
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/mvnw b/wallet/wallet-ports/wallet-eventlistener-kafka/mvnw
similarity index 100%
rename from Wallet/wallet-ports/wallet-eventlistener-kafka/mvnw
rename to wallet/wallet-ports/wallet-eventlistener-kafka/mvnw
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/mvnw.cmd b/wallet/wallet-ports/wallet-eventlistener-kafka/mvnw.cmd
similarity index 100%
rename from Wallet/wallet-ports/wallet-eventlistener-kafka/mvnw.cmd
rename to wallet/wallet-ports/wallet-eventlistener-kafka/mvnw.cmd
diff --git a/wallet/wallet-ports/wallet-eventlistener-kafka/pom.xml b/wallet/wallet-ports/wallet-eventlistener-kafka/pom.xml
new file mode 100644
index 000000000..30dae0c42
--- /dev/null
+++ b/wallet/wallet-ports/wallet-eventlistener-kafka/pom.xml
@@ -0,0 +1,53 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.wallet
+ wallet
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.wallet.ports.kafka.listener
+ wallet-eventlistener-kafka
+ wallet-eventlistener-kafka
+ Wallet kafka listener of Opex
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/config/WalletKafkaConfig.kt b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/config/WalletKafkaConfig.kt
similarity index 89%
rename from Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/config/WalletKafkaConfig.kt
rename to wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/config/WalletKafkaConfig.kt
index f7216abd1..7d48625ef 100644
--- a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/config/WalletKafkaConfig.kt
+++ b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/config/WalletKafkaConfig.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.wallet.kafka.config
+package co.nilin.opex.wallet.ports.kafka.listener.config
-import co.nilin.opex.auth.gateway.model.UserCreatedEvent
-import co.nilin.opex.port.wallet.kafka.consumer.UserCreatedKafkaListener
+import co.nilin.opex.wallet.ports.kafka.listener.consumer.UserCreatedKafkaListener
+import co.nilin.opex.wallet.ports.kafka.listener.model.UserCreatedEvent
import org.apache.kafka.clients.admin.NewTopic
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.clients.producer.ProducerConfig
@@ -67,7 +67,10 @@ class WalletKafkaConfig {
@Autowired
@ConditionalOnBean(UserCreatedKafkaListener::class)
- fun configureUserCreatedListener(listener: UserCreatedKafkaListener, @Qualifier("walletConsumerFactory") consumerFactory: ConsumerFactory) {
+ fun configureUserCreatedListener(
+ listener: UserCreatedKafkaListener,
+ @Qualifier("walletConsumerFactory") consumerFactory: ConsumerFactory
+ ) {
val containerProps = ContainerProperties(Pattern.compile("auth_user_created"))
containerProps.messageListener = listener
val container = ConcurrentMessageListenerContainer(consumerFactory, containerProps)
diff --git a/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/consumer/UserCreatedKafkaListener.kt b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/consumer/UserCreatedKafkaListener.kt
new file mode 100644
index 000000000..492c2a752
--- /dev/null
+++ b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/consumer/UserCreatedKafkaListener.kt
@@ -0,0 +1,29 @@
+package co.nilin.opex.wallet.ports.kafka.listener.consumer
+
+
+import co.nilin.opex.wallet.ports.kafka.listener.model.UserCreatedEvent
+import co.nilin.opex.wallet.ports.kafka.listener.spi.UserCreatedEventListener
+import org.apache.kafka.clients.consumer.ConsumerRecord
+import org.springframework.kafka.listener.MessageListener
+import org.springframework.stereotype.Component
+
+@Component
+class UserCreatedKafkaListener : MessageListener {
+ val eventListeners = arrayListOf()
+
+ override fun onMessage(data: ConsumerRecord) {
+ eventListeners.forEach { tl ->
+ tl.onEvent(data.value(), data.partition(), data.offset(), data.timestamp())
+ }
+ }
+
+ fun addEventListener(tl: UserCreatedEventListener) {
+ eventListeners.add(tl)
+ }
+
+ fun removeEventListener(tl: UserCreatedEventListener) {
+ eventListeners.removeIf { item ->
+ item.id() == tl.id()
+ }
+ }
+}
\ No newline at end of file
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/auth/gateway/model/AuthEvent.kt b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/model/AuthEvent.kt
similarity index 66%
rename from Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/auth/gateway/model/AuthEvent.kt
rename to wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/model/AuthEvent.kt
index 0ecf3780e..214777dd2 100644
--- a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/auth/gateway/model/AuthEvent.kt
+++ b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/model/AuthEvent.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.auth.gateway.model
+package co.nilin.opex.wallet.ports.kafka.listener.model
import java.time.LocalDateTime
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/model/UserCreatedEvent.kt
similarity index 85%
rename from Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt
rename to wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/model/UserCreatedEvent.kt
index 5af714c43..1b38a321c 100644
--- a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/auth/gateway/model/UserCreatedEvent.kt
+++ b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/model/UserCreatedEvent.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.auth.gateway.model
+package co.nilin.opex.wallet.ports.kafka.listener.model
-class UserCreatedEvent: AuthEvent {
+class UserCreatedEvent : AuthEvent {
lateinit var uuid: String
var firstName: String? = null
var lastName: String? = null
diff --git a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/spi/UserCreatedEventListener.kt b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/spi/UserCreatedEventListener.kt
similarity index 54%
rename from Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/spi/UserCreatedEventListener.kt
rename to wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/spi/UserCreatedEventListener.kt
index 35168cac8..645c6a6a6 100644
--- a/Wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/wallet/kafka/spi/UserCreatedEventListener.kt
+++ b/wallet/wallet-ports/wallet-eventlistener-kafka/src/main/kotlin/co/nilin/opex/wallet/ports/kafka/listener/spi/UserCreatedEventListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.wallet.kafka.spi
+package co.nilin.opex.wallet.ports.kafka.listener.spi
-import co.nilin.opex.auth.gateway.model.UserCreatedEvent
+import co.nilin.opex.wallet.ports.kafka.listener.model.UserCreatedEvent
interface UserCreatedEventListener {
fun id(): String
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/mvnw b/wallet/wallet-ports/wallet-persister-postgres/mvnw
similarity index 100%
rename from Wallet/wallet-ports/wallet-persister-postgres/mvnw
rename to wallet/wallet-ports/wallet-persister-postgres/mvnw
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/mvnw.cmd b/wallet/wallet-ports/wallet-persister-postgres/mvnw.cmd
similarity index 100%
rename from Wallet/wallet-ports/wallet-persister-postgres/mvnw.cmd
rename to wallet/wallet-ports/wallet-persister-postgres/mvnw.cmd
diff --git a/wallet/wallet-ports/wallet-persister-postgres/pom.xml b/wallet/wallet-ports/wallet-persister-postgres/pom.xml
new file mode 100644
index 000000000..6dd81e5a8
--- /dev/null
+++ b/wallet/wallet-ports/wallet-persister-postgres/pom.xml
@@ -0,0 +1,72 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.wallet
+ wallet
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.wallet.ports.postgres
+ wallet-persister-postgres
+ wallet-persister-postgres
+ Persist items of Opex wallet on Postgres
+
+
+
+ co.nilin.opex.wallet.core
+ wallet-core
+
+
+ org.springframework.boot
+ spring-boot-starter-data-r2dbc
+
+
+ io.r2dbc
+ r2dbc-postgresql
+ runtime
+
+
+ org.postgresql
+ postgresql
+ runtime
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ com.fasterxml.jackson.core
+ jackson-annotations
+ provided
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
+
+
+ spring-milestones
+ Spring Milestones
+ https://repo.spring.io/milestone
+
+
+
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/config/PostgresConfig.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/config/PostgresConfig.kt
similarity index 95%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/config/PostgresConfig.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/config/PostgresConfig.kt
index 11e49bdcf..793b4a09a 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/config/PostgresConfig.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/config/PostgresConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.config
+package co.nilin.opex.wallet.ports.postgres.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Configuration
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/CurrencyRateRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/CurrencyRateRepository.kt
similarity index 70%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/CurrencyRateRepository.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/CurrencyRateRepository.kt
index 122b0dc2f..27625d195 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/CurrencyRateRepository.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/CurrencyRateRepository.kt
@@ -1,9 +1,6 @@
-package co.nilin.opex.port.wallet.postgres.dao
+package co.nilin.opex.wallet.ports.postgres.dao
-import co.nilin.opex.port.wallet.postgres.model.CurrencyModel
-import co.nilin.opex.port.wallet.postgres.model.CurrencyRateModel
-import kotlinx.coroutines.flow.Flow
-import org.springframework.data.domain.Pageable
+import co.nilin.opex.wallet.ports.postgres.model.CurrencyRateModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/CurrencyRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/CurrencyRepository.kt
new file mode 100644
index 000000000..7b46de0f1
--- /dev/null
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/CurrencyRepository.kt
@@ -0,0 +1,10 @@
+package co.nilin.opex.wallet.ports.postgres.dao
+
+import co.nilin.opex.wallet.ports.postgres.model.CurrencyModel
+import org.springframework.data.repository.reactive.ReactiveCrudRepository
+import org.springframework.stereotype.Repository
+
+@Repository
+interface CurrencyRepository : ReactiveCrudRepository {
+
+}
\ No newline at end of file
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/TransactionRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/TransactionRepository.kt
similarity index 92%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/TransactionRepository.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/TransactionRepository.kt
index ffdeea1fd..78b59100e 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/TransactionRepository.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/TransactionRepository.kt
@@ -1,13 +1,8 @@
-package co.nilin.opex.port.wallet.postgres.dao
+package co.nilin.opex.wallet.ports.postgres.dao
-import co.nilin.opex.port.wallet.postgres.dto.DepositWithdrawTransaction
-import co.nilin.opex.port.wallet.postgres.dto.TransactionStat
-import co.nilin.opex.port.wallet.postgres.model.CurrencyModel
-import co.nilin.opex.port.wallet.postgres.model.CurrencyRateModel
-import co.nilin.opex.port.wallet.postgres.model.TransactionModel
-import kotlinx.coroutines.flow.Flow
-import org.springframework.core.ParameterizedTypeReference
-import org.springframework.data.domain.Pageable
+import co.nilin.opex.wallet.ports.postgres.dto.DepositWithdrawTransaction
+import co.nilin.opex.wallet.ports.postgres.dto.TransactionStat
+import co.nilin.opex.wallet.ports.postgres.model.TransactionModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
@@ -15,7 +10,6 @@ import org.springframework.stereotype.Repository
import reactor.core.publisher.Flux
import reactor.core.publisher.Mono
import java.time.LocalDateTime
-import java.util.*
@Repository
interface TransactionRepository : ReactiveCrudRepository {
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/UserLimitsRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/UserLimitsRepository.kt
similarity index 79%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/UserLimitsRepository.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/UserLimitsRepository.kt
index 1430f034f..1745e90fa 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/UserLimitsRepository.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/UserLimitsRepository.kt
@@ -1,13 +1,11 @@
-package co.nilin.opex.port.wallet.postgres.dao
+package co.nilin.opex.wallet.ports.postgres.dao
-import co.nilin.opex.port.wallet.postgres.model.UserLimitsModel
-import co.nilin.opex.port.wallet.postgres.model.WalletLimitsModel
+import co.nilin.opex.wallet.ports.postgres.model.UserLimitsModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
import org.springframework.stereotype.Repository
-import reactor.core.publisher.Mono
@Repository
interface UserLimitsRepository : ReactiveCrudRepository {
diff --git a/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletConfigRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletConfigRepository.kt
new file mode 100644
index 000000000..0fc4e90ca
--- /dev/null
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletConfigRepository.kt
@@ -0,0 +1,8 @@
+package co.nilin.opex.wallet.ports.postgres.dao
+
+import co.nilin.opex.wallet.ports.postgres.model.WalletConfigModel
+import org.springframework.data.repository.reactive.ReactiveCrudRepository
+import org.springframework.stereotype.Repository
+
+@Repository
+interface WalletConfigRepository : ReactiveCrudRepository
\ No newline at end of file
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletLimitsRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletLimitsRepository.kt
similarity index 93%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletLimitsRepository.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletLimitsRepository.kt
index 48388eaf4..737765b34 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletLimitsRepository.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletLimitsRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.wallet.postgres.dao
+package co.nilin.opex.wallet.ports.postgres.dao
-import co.nilin.opex.port.wallet.postgres.model.WalletLimitsModel
+import co.nilin.opex.wallet.ports.postgres.model.WalletLimitsModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletOwnerRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletOwnerRepository.kt
similarity index 81%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletOwnerRepository.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletOwnerRepository.kt
index 4504172b1..58bbe172c 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletOwnerRepository.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletOwnerRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.wallet.postgres.dao
+package co.nilin.opex.wallet.ports.postgres.dao
-import co.nilin.opex.port.wallet.postgres.model.WalletOwnerModel
+import co.nilin.opex.wallet.ports.postgres.model.WalletOwnerModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletRepository.kt
similarity index 92%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletRepository.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletRepository.kt
index 2a3c27321..c164afb90 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WalletRepository.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WalletRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.wallet.postgres.dao
+package co.nilin.opex.wallet.ports.postgres.dao
-import co.nilin.opex.port.wallet.postgres.model.WalletModel
+import co.nilin.opex.wallet.ports.postgres.model.WalletModel
import org.springframework.data.r2dbc.repository.Modifying
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WithdrawRepository.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WithdrawRepository.kt
similarity index 96%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WithdrawRepository.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WithdrawRepository.kt
index 8cd795850..f176717c8 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dao/WithdrawRepository.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dao/WithdrawRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.wallet.postgres.dao
+package co.nilin.opex.wallet.ports.postgres.dao
-import co.nilin.opex.port.wallet.postgres.model.WithdrawModel
+import co.nilin.opex.wallet.ports.postgres.model.WithdrawModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/DepositWithdrawTransaction.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/DepositWithdrawTransaction.kt
similarity index 84%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/DepositWithdrawTransaction.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/DepositWithdrawTransaction.kt
index 6d7548309..e47032ec8 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/DepositWithdrawTransaction.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/DepositWithdrawTransaction.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.dto
+package co.nilin.opex.wallet.ports.postgres.dto
import java.math.BigDecimal
import java.time.LocalDateTime
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/SavedWallet.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/SavedWallet.kt
similarity index 93%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/SavedWallet.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/SavedWallet.kt
index ebc6ecf29..2ec6ada2c 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/SavedWallet.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/SavedWallet.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.dto
+package co.nilin.opex.wallet.ports.postgres.dto
import co.nilin.opex.wallet.core.model.Amount
import co.nilin.opex.wallet.core.model.Currency
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/TransactionStat.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/TransactionStat.kt
similarity index 67%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/TransactionStat.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/TransactionStat.kt
index a7e0800dd..d071756c2 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/dto/TransactionStat.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/dto/TransactionStat.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.dto
+package co.nilin.opex.wallet.ports.postgres.dto
import java.math.BigDecimal
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/CurrencyRateServiceImpl.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/CurrencyRateServiceImpl.kt
similarity index 90%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/CurrencyRateServiceImpl.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/CurrencyRateServiceImpl.kt
index 151ba759b..063f63a22 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/CurrencyRateServiceImpl.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/CurrencyRateServiceImpl.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.wallet.postgres.impl
+package co.nilin.opex.wallet.ports.postgres.impl
-import co.nilin.opex.port.wallet.postgres.dao.CurrencyRateRepository
import co.nilin.opex.wallet.core.model.Amount
import co.nilin.opex.wallet.core.model.Currency
import co.nilin.opex.wallet.core.spi.CurrencyRateService
+import co.nilin.opex.wallet.ports.postgres.dao.CurrencyRateRepository
import kotlinx.coroutines.reactive.awaitFirstOrDefault
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Service
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/CurrencyServiceImpl.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/CurrencyServiceImpl.kt
similarity index 73%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/CurrencyServiceImpl.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/CurrencyServiceImpl.kt
index 487a7d63d..986acb38a 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/CurrencyServiceImpl.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/CurrencyServiceImpl.kt
@@ -1,9 +1,8 @@
-package co.nilin.opex.port.wallet.postgres.impl
+package co.nilin.opex.wallet.ports.postgres.impl
-import co.nilin.opex.port.wallet.postgres.dao.CurrencyRepository
import co.nilin.opex.wallet.core.model.Currency
import co.nilin.opex.wallet.core.spi.CurrencyService
-import kotlinx.coroutines.reactive.awaitFirst
+import co.nilin.opex.wallet.ports.postgres.dao.CurrencyRepository
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Service
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/TransactionManagerImpl.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/TransactionManagerImpl.kt
similarity index 93%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/TransactionManagerImpl.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/TransactionManagerImpl.kt
index 89234ba74..0de4e6cda 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/TransactionManagerImpl.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/TransactionManagerImpl.kt
@@ -1,10 +1,10 @@
-package co.nilin.opex.port.wallet.postgres.impl
+package co.nilin.opex.wallet.ports.postgres.impl
-import co.nilin.opex.port.wallet.postgres.dao.TransactionRepository
-import co.nilin.opex.port.wallet.postgres.model.TransactionModel
import co.nilin.opex.wallet.core.model.Transaction
import co.nilin.opex.wallet.core.model.TransactionHistory
import co.nilin.opex.wallet.core.spi.TransactionManager
+import co.nilin.opex.wallet.ports.postgres.dao.TransactionRepository
+import co.nilin.opex.wallet.ports.postgres.model.TransactionModel
import kotlinx.coroutines.reactive.awaitFirstOrElse
import kotlinx.coroutines.reactive.awaitSingle
import org.springframework.stereotype.Service
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WalletManagerImpl.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WalletManagerImpl.kt
similarity index 97%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WalletManagerImpl.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WalletManagerImpl.kt
index f63f8ca52..7c823e275 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WalletManagerImpl.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WalletManagerImpl.kt
@@ -1,13 +1,13 @@
-package co.nilin.opex.port.wallet.postgres.impl
+package co.nilin.opex.wallet.ports.postgres.impl
-import co.nilin.opex.port.wallet.postgres.dao.*
-import co.nilin.opex.port.wallet.postgres.dto.SavedWallet
-import co.nilin.opex.port.wallet.postgres.model.WalletModel
import co.nilin.opex.wallet.core.model.Amount
import co.nilin.opex.wallet.core.model.Currency
import co.nilin.opex.wallet.core.model.Wallet
import co.nilin.opex.wallet.core.model.WalletOwner
import co.nilin.opex.wallet.core.spi.WalletManager
+import co.nilin.opex.wallet.ports.postgres.dao.*
+import co.nilin.opex.wallet.ports.postgres.dto.SavedWallet
+import co.nilin.opex.wallet.ports.postgres.model.WalletModel
import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.reactive.awaitFirstOrNull
import kotlinx.coroutines.reactive.awaitSingle
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WalletOwnerManagerImpl.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WalletOwnerManagerImpl.kt
similarity index 91%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WalletOwnerManagerImpl.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WalletOwnerManagerImpl.kt
index 5cd57367d..3b45817d4 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WalletOwnerManagerImpl.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WalletOwnerManagerImpl.kt
@@ -1,15 +1,15 @@
-package co.nilin.opex.port.wallet.postgres.impl
+package co.nilin.opex.wallet.ports.postgres.impl
-import co.nilin.opex.port.wallet.postgres.dao.TransactionRepository
-import co.nilin.opex.port.wallet.postgres.dao.UserLimitsRepository
-import co.nilin.opex.port.wallet.postgres.dao.WalletConfigRepository
-import co.nilin.opex.port.wallet.postgres.dao.WalletOwnerRepository
-import co.nilin.opex.port.wallet.postgres.model.UserLimitsModel
-import co.nilin.opex.port.wallet.postgres.model.WalletConfigModel
-import co.nilin.opex.port.wallet.postgres.model.WalletOwnerModel
import co.nilin.opex.wallet.core.model.Amount
import co.nilin.opex.wallet.core.model.WalletOwner
import co.nilin.opex.wallet.core.spi.WalletOwnerManager
+import co.nilin.opex.wallet.ports.postgres.dao.TransactionRepository
+import co.nilin.opex.wallet.ports.postgres.dao.UserLimitsRepository
+import co.nilin.opex.wallet.ports.postgres.dao.WalletConfigRepository
+import co.nilin.opex.wallet.ports.postgres.dao.WalletOwnerRepository
+import co.nilin.opex.wallet.ports.postgres.model.UserLimitsModel
+import co.nilin.opex.wallet.ports.postgres.model.WalletConfigModel
+import co.nilin.opex.wallet.ports.postgres.model.WalletOwnerModel
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onEmpty
import kotlinx.coroutines.flow.reduce
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WithdrawPersisterImpl.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WithdrawPersisterImpl.kt
similarity index 96%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WithdrawPersisterImpl.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WithdrawPersisterImpl.kt
index 47327957f..6633d7aa0 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/impl/WithdrawPersisterImpl.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/impl/WithdrawPersisterImpl.kt
@@ -1,11 +1,11 @@
-package co.nilin.opex.port.wallet.postgres.impl
+package co.nilin.opex.wallet.ports.postgres.impl
-import co.nilin.opex.port.wallet.postgres.dao.TransactionRepository
-import co.nilin.opex.port.wallet.postgres.dao.WithdrawRepository
-import co.nilin.opex.port.wallet.postgres.model.WithdrawModel
import co.nilin.opex.wallet.core.inout.WithdrawResponse
import co.nilin.opex.wallet.core.model.Withdraw
import co.nilin.opex.wallet.core.spi.WithdrawPersister
+import co.nilin.opex.wallet.ports.postgres.dao.TransactionRepository
+import co.nilin.opex.wallet.ports.postgres.dao.WithdrawRepository
+import co.nilin.opex.wallet.ports.postgres.model.WithdrawModel
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.reactive.awaitFirst
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/CurrencyModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/CurrencyModel.kt
similarity index 87%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/CurrencyModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/CurrencyModel.kt
index abdf4359b..9fa8a460d 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/CurrencyModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/CurrencyModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import co.nilin.opex.wallet.core.model.Currency
@@ -12,7 +12,7 @@ data class CurrencyModel(
@JsonIgnore @Id @Column("name") val name_: String,
@JsonIgnore @Column("symbol") val symbol_: String,
@JsonIgnore @Column("precision") val precision_: Int
-): Currency {
+) : Currency {
override fun getSymbol(): String {
return symbol_
}
@@ -22,7 +22,7 @@ data class CurrencyModel(
}
override fun getPrecision(): Int {
- return precision_
+ return precision_
}
}
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/CurrencyRateModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/CurrencyRateModel.kt
similarity index 88%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/CurrencyRateModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/CurrencyRateModel.kt
index bcaa7f5ef..c62b8eb80 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/CurrencyRateModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/CurrencyRateModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import org.springframework.data.annotation.Id
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/TransactionModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/TransactionModel.kt
similarity index 85%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/TransactionModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/TransactionModel.kt
index cc8d75c9c..7923e59fd 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/TransactionModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/TransactionModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
@@ -14,6 +14,6 @@ class TransactionModel(
@Column("source_amount") val sourceAmount: BigDecimal,
@Column("dest_amount") val destAmount: BigDecimal,
val description: String?,
- @Column("transfer_ref") val transferRef: String?,
+ @Column("transfer_ref") val transferRef: String?,
@Column("transaction_date") val txDate: LocalDateTime
)
\ No newline at end of file
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/UserLimitsModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/UserLimitsModel.kt
similarity index 92%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/UserLimitsModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/UserLimitsModel.kt
index b37cb8169..edc298c78 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/UserLimitsModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/UserLimitsModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletConfigModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletConfigModel.kt
similarity index 85%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletConfigModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletConfigModel.kt
index 0652137b0..c5a218d87 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletConfigModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletConfigModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletLimitsModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletLimitsModel.kt
similarity index 93%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletLimitsModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletLimitsModel.kt
index 4f5f59ab3..cc9f61072 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletLimitsModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletLimitsModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletModel.kt
similarity index 90%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletModel.kt
index 8c60c2f02..5f551f132 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletOwnerModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletOwnerModel.kt
similarity index 95%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletOwnerModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletOwnerModel.kt
index 2c103ab7d..9c77b3d0c 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WalletOwnerModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WalletOwnerModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import co.nilin.opex.wallet.core.model.WalletOwner
import org.springframework.data.annotation.Id
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WithdrawModel.kt b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WithdrawModel.kt
similarity index 96%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WithdrawModel.kt
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WithdrawModel.kt
index 2c5a5b1d0..8f1330970 100644
--- a/Wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/port/wallet/postgres/model/WithdrawModel.kt
+++ b/wallet/wallet-ports/wallet-persister-postgres/src/main/kotlin/co/nilin/opex/wallet/ports/postgres/model/WithdrawModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.wallet.postgres.model
+package co.nilin.opex.wallet.ports.postgres.model
import org.springframework.data.annotation.Id
import org.springframework.data.relational.core.mapping.Column
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/resources/data.sql b/wallet/wallet-ports/wallet-persister-postgres/src/main/resources/data.sql
similarity index 100%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/resources/data.sql
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/resources/data.sql
diff --git a/Wallet/wallet-ports/wallet-persister-postgres/src/main/resources/schema.sql b/wallet/wallet-ports/wallet-persister-postgres/src/main/resources/schema.sql
similarity index 100%
rename from Wallet/wallet-ports/wallet-persister-postgres/src/main/resources/schema.sql
rename to wallet/wallet-ports/wallet-persister-postgres/src/main/resources/schema.sql
diff --git a/websocket/pom.xml b/websocket/pom.xml
new file mode 100644
index 000000000..9884fd020
--- /dev/null
+++ b/websocket/pom.xml
@@ -0,0 +1,70 @@
+
+
+ 4.0.0
+
+
+ OPEX-Core
+ co.nilin.opex
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.websocket
+ websocket
+ websocket
+ pom
+ Websocket root module
+
+
+ websocket-app
+ websocket-core
+ websocket-ports/websocket-eventlistener-kafka
+ websocket-ports/websocket-persister-postgres
+
+
+
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+ ${project.version}
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+ ${project.version}
+
+
+ co.nilin.opex.websocket.core
+ websocket-core
+ ${project.version}
+
+
+ co.nilin.opex.websocket.ports.kafka.listener
+ websocket-eventlistener-kafka
+ ${project.version}
+
+
+ co.nilin.opex.websocket.ports.postgres
+ websocket-persister-postgres
+ ${project.version}
+
+
+ co.nilin.opex.utility.error
+ error-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.log
+ logging-handler
+ ${project.version}
+
+
+ co.nilin.opex.utility.interceptors
+ interceptors
+ ${project.version}
+
+
+
+
\ No newline at end of file
diff --git a/EventLog/eventlog-app/.gitignore b/websocket/websocket-app/.gitignore
similarity index 100%
rename from EventLog/eventlog-app/.gitignore
rename to websocket/websocket-app/.gitignore
diff --git a/Websocket/websocket-app/Dockerfile b/websocket/websocket-app/Dockerfile
similarity index 100%
rename from Websocket/websocket-app/Dockerfile
rename to websocket/websocket-app/Dockerfile
diff --git a/websocket/websocket-app/pom.xml b/websocket/websocket-app/pom.xml
new file mode 100644
index 000000000..c0cc7950e
--- /dev/null
+++ b/websocket/websocket-app/pom.xml
@@ -0,0 +1,105 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.websocket
+ websocket
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.websocket.app
+ websocket-app
+ websocket-app
+ Websocket app
+
+
+ 2020.0.2
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.boot
+ spring-boot-starter-oauth2-resource-server
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.cloud
+ spring-cloud-starter-consul-all
+
+
+ org.springframework.boot
+ spring-boot-starter-websocket
+
+
+ org.springframework.security
+ spring-security-messaging
+
+
+ com.fasterxml.jackson.module
+ jackson-module-kotlin
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ co.nilin.opex.websocket.core
+ websocket-core
+
+
+ co.nilin.opex.websocket.ports.kafka.listener
+ websocket-eventlistener-kafka
+
+
+ co.nilin.opex.websocket.ports.postgres
+ websocket-persister-postgres
+
+
+ io.projectreactor
+ reactor-test
+ test
+
+
+
+
+
+
+ org.springframework.cloud
+ spring-cloud-dependencies
+ ${spring-cloud.version}
+ pom
+ import
+
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/WebSocketApp.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/WebSocketApp.kt
similarity index 91%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/WebSocketApp.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/WebSocketApp.kt
index 26150f8a6..734d11453 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/WebSocketApp.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/WebSocketApp.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket
+package co.nilin.opex.websocket.app
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/AppConfig.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/AppConfig.kt
similarity index 73%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/AppConfig.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/AppConfig.kt
index 3effe507a..43a891628 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/AppConfig.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/AppConfig.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.websocket.config
+package co.nilin.opex.websocket.app.config
-import co.nilin.opex.port.websocket.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.websocket.kafka.consumer.TradeKafkaListener
-import co.nilin.opex.port.websocket.listener.WebSocketKafkaListener
+import co.nilin.opex.websocket.app.listener.WebSocketKafkaListener
import co.nilin.opex.websocket.core.spi.EventStreamHandler
+import co.nilin.opex.websocket.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.websocket.ports.kafka.listener.consumer.TradeKafkaListener
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/AppDispatchers.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/AppDispatchers.kt
similarity index 86%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/AppDispatchers.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/AppDispatchers.kt
index a6509e0b8..d4d9a1c21 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/AppDispatchers.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/AppDispatchers.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.config
+package co.nilin.opex.websocket.app.config
import kotlinx.coroutines.asCoroutineDispatcher
import java.util.concurrent.Executors
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/WebSecurityConfig.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/WebSecurityConfig.kt
similarity index 92%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/WebSecurityConfig.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/WebSecurityConfig.kt
index d1bfa356d..b5dbbe2d6 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/config/WebSecurityConfig.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/config/WebSecurityConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.config
+package co.nilin.opex.websocket.app.config
import org.springframework.beans.factory.annotation.Value
import org.springframework.context.annotation.Bean
@@ -9,7 +9,6 @@ import org.springframework.security.config.annotation.web.configuration.WebSecur
import org.springframework.security.config.http.SessionCreationPolicy
import org.springframework.security.oauth2.jwt.JwtDecoder
import org.springframework.security.oauth2.jwt.NimbusJwtDecoder
-import org.springframework.web.reactive.function.client.WebClient
@Configuration
class WebSecurityConfig : WebSecurityConfigurerAdapter() {
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/controller/MarketController.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/controller/MarketController.kt
similarity index 82%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/controller/MarketController.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/controller/MarketController.kt
index f94000ce4..1362e8108 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/controller/MarketController.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/controller/MarketController.kt
@@ -1,10 +1,8 @@
-package co.nilin.opex.port.websocket.controller
+package co.nilin.opex.websocket.app.controller
-import co.nilin.opex.port.websocket.service.MarketDestinationType
-import co.nilin.opex.port.websocket.service.MarketStreamHandler
+import co.nilin.opex.websocket.app.service.MarketDestinationType
+import co.nilin.opex.websocket.app.service.MarketStreamHandler
import org.springframework.messaging.handler.annotation.DestinationVariable
-import org.springframework.messaging.handler.annotation.MessageMapping
-import org.springframework.messaging.handler.annotation.Payload
import org.springframework.messaging.simp.annotation.SubscribeMapping
import org.springframework.stereotype.Controller
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/DepthResponse.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/DepthResponse.kt
similarity index 85%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/DepthResponse.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/DepthResponse.kt
index f3807c9ff..cf4bfad6d 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/DepthResponse.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/DepthResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.dto
+package co.nilin.opex.websocket.app.dto
import java.math.BigDecimal
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/Interval.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/Interval.kt
similarity index 97%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/Interval.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/Interval.kt
index d18011976..8d22e7bc0 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/Interval.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/Interval.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.dto
+package co.nilin.opex.websocket.app.dto
import java.time.Instant
import java.time.LocalDateTime
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/OrderBookResponse.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/OrderBookResponse.kt
similarity index 85%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/OrderBookResponse.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/OrderBookResponse.kt
index 91444b51f..6d4fbb3e6 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/OrderBookResponse.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/OrderBookResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.dto
+package co.nilin.opex.websocket.app.dto
import java.math.BigDecimal
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/OrderResponse.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/OrderResponse.kt
similarity index 95%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/OrderResponse.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/OrderResponse.kt
index a5eda691a..d981e15f3 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/OrderResponse.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/OrderResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.dto
+package co.nilin.opex.websocket.app.dto
import co.nilin.opex.websocket.core.inout.OrderSide
import co.nilin.opex.websocket.core.inout.OrderStatus
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/RecentTradeResponse.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/RecentTradeResponse.kt
similarity index 87%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/RecentTradeResponse.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/RecentTradeResponse.kt
index 310512ab5..e74ba26a6 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/RecentTradeResponse.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/RecentTradeResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.dto
+package co.nilin.opex.websocket.app.dto
import java.math.BigDecimal
import java.util.*
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/TradeResponse.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/TradeResponse.kt
similarity index 91%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/TradeResponse.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/TradeResponse.kt
index 0b840aec4..f5bb3a79e 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/dto/TradeResponse.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/dto/TradeResponse.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.dto
+package co.nilin.opex.websocket.app.dto
import java.math.BigDecimal
import java.util.*
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/listener/WebSocketKafkaListener.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/listener/WebSocketKafkaListener.kt
similarity index 72%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/listener/WebSocketKafkaListener.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/listener/WebSocketKafkaListener.kt
index 59b50d7b8..888f0c84a 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/listener/WebSocketKafkaListener.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/listener/WebSocketKafkaListener.kt
@@ -1,12 +1,10 @@
-package co.nilin.opex.port.websocket.listener
+package co.nilin.opex.websocket.app.listener
import co.nilin.opex.accountant.core.inout.RichOrder
import co.nilin.opex.accountant.core.inout.RichTrade
-import co.nilin.opex.port.websocket.config.AppDispatchers
-import co.nilin.opex.port.websocket.kafka.spi.RichOrderListener
-import co.nilin.opex.port.websocket.kafka.spi.RichTradeListener
+import co.nilin.opex.websocket.ports.kafka.listener.spi.RichOrderListener
+import co.nilin.opex.websocket.ports.kafka.listener.spi.RichTradeListener
import co.nilin.opex.websocket.core.spi.EventStreamHandler
-import kotlinx.coroutines.runBlocking
class WebSocketKafkaListener(private val handler: EventStreamHandler) : RichTradeListener, RichOrderListener {
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/EventStreamHandlerImpl.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/EventStreamHandlerImpl.kt
similarity index 86%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/EventStreamHandlerImpl.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/EventStreamHandlerImpl.kt
index 918e5eeab..a2dce1cb1 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/EventStreamHandlerImpl.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/EventStreamHandlerImpl.kt
@@ -1,25 +1,21 @@
-package co.nilin.opex.port.websocket.service
+package co.nilin.opex.websocket.app.service
import co.nilin.opex.accountant.core.inout.RichOrder
import co.nilin.opex.accountant.core.inout.RichTrade
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.port.websocket.config.AppDispatchers
-import co.nilin.opex.port.websocket.dto.OrderResponse
-import co.nilin.opex.port.websocket.postgres.dao.OrderRepository
-import co.nilin.opex.port.websocket.postgres.model.OrderModel
-import co.nilin.opex.port.websocket.utils.*
-import co.nilin.opex.websocket.core.inout.OrderStatus
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.websocket.app.config.AppDispatchers
+import co.nilin.opex.websocket.app.dto.OrderResponse
+import co.nilin.opex.websocket.app.utils.*
import co.nilin.opex.websocket.core.inout.TradeResponse
import co.nilin.opex.websocket.core.spi.EventStreamHandler
-import kotlinx.coroutines.reactive.awaitFirst
+import co.nilin.opex.websocket.ports.postgres.dao.OrderRepository
+import co.nilin.opex.websocket.ports.postgres.model.OrderModel
import kotlinx.coroutines.reactive.awaitFirstOrNull
import kotlinx.coroutines.runBlocking
-import kotlinx.coroutines.withContext
import org.springframework.messaging.simp.SimpMessagingTemplate
import org.springframework.messaging.simp.user.SimpUserRegistry
import org.springframework.stereotype.Component
import java.math.BigDecimal
-import java.time.ZoneId
import java.util.*
@Component
@@ -57,7 +53,7 @@ class EventStreamHandlerImpl(
run {
val takerOrder = orderRepository.findByOuid(trade.takerOuid).awaitFirstOrNull()
val makerOrder = orderRepository.findByOuid(trade.makerOuid).awaitFirstOrNull()
- if (makerOrder==null ||takerOrder==null)
+ if (makerOrder == null || takerOrder == null)
return@run
val maker = trade.buildTradeResponse(trade.makerUuid, makerOrder, takerOrder)
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketDestinationType.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketDestinationType.kt
similarity index 94%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketDestinationType.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketDestinationType.kt
index 9e6d5fcb8..11481687d 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketDestinationType.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketDestinationType.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.service
+package co.nilin.opex.websocket.app.service
sealed class MarketDestinationType(val base: String, val path: String) {
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketService.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketService.kt
similarity index 94%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketService.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketService.kt
index 8eab79bfd..94a37118c 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketService.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketService.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.websocket.service
+package co.nilin.opex.websocket.app.service
-import co.nilin.opex.port.websocket.dto.DepthResponse
-import co.nilin.opex.port.websocket.dto.Interval
-import co.nilin.opex.port.websocket.dto.RecentTradeResponse
+import co.nilin.opex.websocket.app.dto.DepthResponse
+import co.nilin.opex.websocket.app.dto.Interval
+import co.nilin.opex.websocket.app.dto.RecentTradeResponse
import co.nilin.opex.websocket.core.inout.PriceChangeResponse
import co.nilin.opex.websocket.core.inout.PriceTickerResponse
import co.nilin.opex.websocket.core.spi.MarketQueryHandler
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketStreamHandler.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketStreamHandler.kt
similarity index 86%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketStreamHandler.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketStreamHandler.kt
index f1ba2b546..cb5652fce 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/MarketStreamHandler.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/MarketStreamHandler.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.websocket.service
+package co.nilin.opex.websocket.app.service
-import co.nilin.opex.port.websocket.dto.Interval
-import co.nilin.opex.port.websocket.service.stream.IntervalStreamHandler
-import co.nilin.opex.port.websocket.service.stream.StreamJob
+import co.nilin.opex.websocket.app.dto.Interval
+import co.nilin.opex.websocket.app.service.stream.IntervalStreamHandler
+import co.nilin.opex.websocket.app.service.stream.StreamJob
import org.springframework.messaging.simp.SimpMessagingTemplate
import org.springframework.messaging.simp.user.SimpUserRegistry
import org.springframework.stereotype.Component
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/stream/IntervalStreamHandler.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/stream/IntervalStreamHandler.kt
similarity index 97%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/stream/IntervalStreamHandler.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/stream/IntervalStreamHandler.kt
index 6bb51464c..485e58158 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/stream/IntervalStreamHandler.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/stream/IntervalStreamHandler.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.websocket.service.stream
+package co.nilin.opex.websocket.app.service.stream
-import co.nilin.opex.port.websocket.config.AppDispatchers
+import co.nilin.opex.websocket.app.config.AppDispatchers
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.runBlocking
import org.slf4j.LoggerFactory
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/stream/StreamJob.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/stream/StreamJob.kt
similarity index 74%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/stream/StreamJob.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/stream/StreamJob.kt
index 69d544936..7aa69eb0c 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/service/stream/StreamJob.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/service/stream/StreamJob.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.service.stream
+package co.nilin.opex.websocket.app.service.stream
import java.util.concurrent.TimeUnit
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/AuthInterceptor.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/AuthInterceptor.kt
similarity index 97%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/AuthInterceptor.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/AuthInterceptor.kt
index 0efb26c6c..edec61db4 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/AuthInterceptor.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/AuthInterceptor.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.socket
+package co.nilin.opex.websocket.app.socket
import org.slf4j.LoggerFactory
import org.springframework.beans.factory.annotation.Autowired
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/StompEventsConfig.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/StompEventsConfig.kt
similarity index 96%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/StompEventsConfig.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/StompEventsConfig.kt
index 8e6e772a7..a820c92ac 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/StompEventsConfig.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/StompEventsConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.socket
+package co.nilin.opex.websocket.app.socket
import org.springframework.context.ApplicationListener
import org.springframework.context.annotation.Bean
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketAuthenticationConfig.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketAuthenticationConfig.kt
similarity index 94%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketAuthenticationConfig.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketAuthenticationConfig.kt
index c73916e40..8105c930b 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketAuthenticationConfig.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketAuthenticationConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.socket
+package co.nilin.opex.websocket.app.socket
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.context.annotation.Configuration
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketAuthorizationConfig.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketAuthorizationConfig.kt
similarity index 94%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketAuthorizationConfig.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketAuthorizationConfig.kt
index 304a2b58f..0f7b23dc0 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketAuthorizationConfig.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketAuthorizationConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.socket
+package co.nilin.opex.websocket.app.socket
import org.springframework.context.annotation.Configuration
import org.springframework.security.config.annotation.web.messaging.MessageSecurityMetadataSourceRegistry
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketConfig.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketConfig.kt
similarity index 95%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketConfig.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketConfig.kt
index db18d95a2..d327beae3 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/socket/WebSocketConfig.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/socket/WebSocketConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.socket
+package co.nilin.opex.websocket.app.socket
import org.springframework.context.annotation.Configuration
import org.springframework.messaging.simp.config.MessageBrokerRegistry
diff --git a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/utils/EnumExtensions.kt b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/utils/EnumExtensions.kt
similarity index 85%
rename from Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/utils/EnumExtensions.kt
rename to websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/utils/EnumExtensions.kt
index 959e714cb..e4e13eb4f 100644
--- a/Websocket/websocket-app/src/main/kotlin/co/nilin/opex/port/websocket/utils/EnumExtensions.kt
+++ b/websocket/websocket-app/src/main/kotlin/co/nilin/opex/websocket/app/utils/EnumExtensions.kt
@@ -1,11 +1,11 @@
-package co.nilin.opex.port.websocket.utils
+package co.nilin.opex.websocket.app.utils
import co.nilin.opex.websocket.core.inout.OrderSide
import co.nilin.opex.websocket.core.inout.OrderStatus
import co.nilin.opex.websocket.core.inout.TimeInForce
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
fun MatchConstraint.toTimeInForce(): TimeInForce {
if (this == MatchConstraint.FOK_BUDGET)
diff --git a/Websocket/websocket-app/src/main/resources/application-docker.yml b/websocket/websocket-app/src/main/resources/application-docker.yml
similarity index 100%
rename from Websocket/websocket-app/src/main/resources/application-docker.yml
rename to websocket/websocket-app/src/main/resources/application-docker.yml
diff --git a/Websocket/websocket-app/src/main/resources/application.yml b/websocket/websocket-app/src/main/resources/application.yml
similarity index 100%
rename from Websocket/websocket-app/src/main/resources/application.yml
rename to websocket/websocket-app/src/main/resources/application.yml
diff --git a/Accountant/accountant-core/.gitignore b/websocket/websocket-core/.gitignore
similarity index 100%
rename from Accountant/accountant-core/.gitignore
rename to websocket/websocket-core/.gitignore
diff --git a/websocket/websocket-core/pom.xml b/websocket/websocket-core/pom.xml
new file mode 100644
index 000000000..3493ce5bc
--- /dev/null
+++ b/websocket/websocket-core/pom.xml
@@ -0,0 +1,56 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.websocket
+ websocket
+ 1.0-SNAPSHOT
+
+
+ co.nilin.opex.websocket.core
+ websocket-core
+ websocket-core
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+ org.springframework
+ spring-tx
+ provided
+
+
+
\ No newline at end of file
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/AggregatedOrderPriceModel.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/AggregatedOrderPriceModel.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/AggregatedOrderPriceModel.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/AggregatedOrderPriceModel.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/AllOrderRequest.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/AllOrderRequest.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/AllOrderRequest.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/AllOrderRequest.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/CandleData.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/CandleData.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/CandleData.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/CandleData.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/MarketTradeResponse.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/MarketTradeResponse.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/MarketTradeResponse.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/MarketTradeResponse.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/OrderBookResponse.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/OrderBookResponse.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/OrderBookResponse.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/OrderBookResponse.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/OrderEnums.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/OrderEnums.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/OrderEnums.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/OrderEnums.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/PriceChangeResponse.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/PriceChangeResponse.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/PriceChangeResponse.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/PriceChangeResponse.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/PriceTickerResponse.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/PriceTickerResponse.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/PriceTickerResponse.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/PriceTickerResponse.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/QueryOrderRequest.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/QueryOrderRequest.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/QueryOrderRequest.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/QueryOrderRequest.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/QueryOrderResponse.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/QueryOrderResponse.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/QueryOrderResponse.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/QueryOrderResponse.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/TradeRequest.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/TradeRequest.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/TradeRequest.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/TradeRequest.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/TradeResponse.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/TradeResponse.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/TradeResponse.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/inout/TradeResponse.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/EventStreamHandler.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/EventStreamHandler.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/EventStreamHandler.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/EventStreamHandler.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/MarketQueryHandler.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/MarketQueryHandler.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/MarketQueryHandler.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/MarketQueryHandler.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/SymbolMapper.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/SymbolMapper.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/SymbolMapper.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/SymbolMapper.kt
diff --git a/Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/UserQueryHandler.kt b/websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/UserQueryHandler.kt
similarity index 100%
rename from Websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/UserQueryHandler.kt
rename to websocket/websocket-core/src/main/kotlin/co/nilin/opex/websocket/core/spi/UserQueryHandler.kt
diff --git a/EventLog/eventlog-core/.gitignore b/websocket/websocket-ports/.gitignore
similarity index 100%
rename from EventLog/eventlog-core/.gitignore
rename to websocket/websocket-ports/.gitignore
diff --git a/Accountant/accountant-ports/accountant-eventlistener-kafka/.gitignore b/websocket/websocket-ports/websocket-eventlistener-kafka/.gitignore
similarity index 100%
rename from Accountant/accountant-ports/accountant-eventlistener-kafka/.gitignore
rename to websocket/websocket-ports/websocket-eventlistener-kafka/.gitignore
diff --git a/websocket/websocket-ports/websocket-eventlistener-kafka/pom.xml b/websocket/websocket-ports/websocket-eventlistener-kafka/pom.xml
new file mode 100644
index 000000000..2d60b4ddf
--- /dev/null
+++ b/websocket/websocket-ports/websocket-eventlistener-kafka/pom.xml
@@ -0,0 +1,68 @@
+
+
+ 4.0.0
+
+
+ co.nilin.opex.websocket
+ websocket
+ 1.0-SNAPSHOT
+ ../../pom.xml
+
+
+ co.nilin.opex.websocket.ports.kafka.listener
+ websocket-eventlistener-kafka
+ websocket-eventlistener-kafka
+
+
+
+ org.springframework.boot
+ spring-boot-starter
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
+
+
+ co.nilin.opex.accountant.core
+ accountant-core
+
+
+ co.nilin.opex.websocket.core
+ websocket-core
+
+
+ org.springframework.kafka
+ spring-kafka
+
+
+ io.projectreactor.kotlin
+ reactor-kotlin-extensions
+
+
+ org.jetbrains.kotlin
+ kotlin-reflect
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-reactor
+
+
+ org.jetbrains.kotlinx
+ kotlinx-coroutines-core
+
+
+ org.springframework.kafka
+ spring-kafka-test
+ test
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+
+
+
diff --git a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/config/WebSocketKafkaConfig.kt b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/config/WebSocketKafkaConfig.kt
similarity index 93%
rename from Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/config/WebSocketKafkaConfig.kt
rename to websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/config/WebSocketKafkaConfig.kt
index 905b33c00..cd49327c8 100644
--- a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/config/WebSocketKafkaConfig.kt
+++ b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/config/WebSocketKafkaConfig.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.websocket.kafka.config
+package co.nilin.opex.websocket.ports.kafka.listener.config
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
-import co.nilin.opex.port.websocket.kafka.consumer.OrderKafkaListener
-import co.nilin.opex.port.websocket.kafka.consumer.TradeKafkaListener
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
+import co.nilin.opex.websocket.ports.kafka.listener.consumer.OrderKafkaListener
+import co.nilin.opex.websocket.ports.kafka.listener.consumer.TradeKafkaListener
import org.apache.kafka.clients.admin.NewTopic
import org.apache.kafka.clients.consumer.ConsumerConfig
import org.apache.kafka.clients.producer.ProducerConfig
diff --git a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/OrderKafkaListener.kt b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/consumer/OrderKafkaListener.kt
similarity index 85%
rename from Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/OrderKafkaListener.kt
rename to websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/consumer/OrderKafkaListener.kt
index 6fbe90511..e26e8a08c 100644
--- a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/OrderKafkaListener.kt
+++ b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/consumer/OrderKafkaListener.kt
@@ -1,19 +1,20 @@
-package co.nilin.opex.port.api.kafka.consumer
+package co.nilin.opex.websocket.ports.kafka.listener.consumer
import co.nilin.opex.accountant.core.inout.RichOrder
-import co.nilin.opex.port.api.kafka.spi.RichOrderListener
+import co.nilin.opex.websocket.ports.kafka.listener.spi.RichOrderListener
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.listener.MessageListener
import org.springframework.stereotype.Component
@Component
class OrderKafkaListener : MessageListener {
+
val orderListeners = arrayListOf()
+
override fun onMessage(data: ConsumerRecord) {
orderListeners.forEach { tl ->
tl.onOrder(data.value(), data.partition(), data.offset(), data.timestamp())
}
-
}
fun addOrderListener(tl: RichOrderListener) {
diff --git a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/TradeKafkaListener.kt b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/consumer/TradeKafkaListener.kt
similarity index 85%
rename from Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/TradeKafkaListener.kt
rename to websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/consumer/TradeKafkaListener.kt
index 80a798b2d..d8f577c28 100644
--- a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/consumer/TradeKafkaListener.kt
+++ b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/consumer/TradeKafkaListener.kt
@@ -1,14 +1,16 @@
-package co.nilin.opex.port.api.kafka.consumer
+package co.nilin.opex.websocket.ports.kafka.listener.consumer
import co.nilin.opex.accountant.core.inout.RichTrade
-import co.nilin.opex.port.api.kafka.spi.RichTradeListener
+import co.nilin.opex.websocket.ports.kafka.listener.spi.RichTradeListener
import org.apache.kafka.clients.consumer.ConsumerRecord
import org.springframework.kafka.listener.MessageListener
import org.springframework.stereotype.Component
@Component
class TradeKafkaListener : MessageListener {
+
val tradeListeners = arrayListOf()
+
override fun onMessage(data: ConsumerRecord) {
tradeListeners.forEach { tl ->
tl.onTrade(data.value(), data.partition(), data.offset(), data.timestamp())
diff --git a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/EventListener.kt b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/EventListener.kt
similarity index 52%
rename from EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/EventListener.kt
rename to websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/EventListener.kt
index 6cbf6e603..186a79240 100644
--- a/EventLog/eventlog-ports/eventlog-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/eventlog/kafka/spi/EventListener.kt
+++ b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/EventListener.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.eventlog.kafka.spi
+package co.nilin.opex.websocket.ports.kafka.listener.spi
-import co.nilin.opex.matching.core.eventh.events.CoreEvent
+import co.nilin.opex.matching.engine.core.eventh.events.CoreEvent
interface EventListener {
fun id(): String
diff --git a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/RichOrderListener.kt b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/RichOrderListener.kt
similarity index 76%
rename from Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/RichOrderListener.kt
rename to websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/RichOrderListener.kt
index 326ef97a6..a9e3751a0 100644
--- a/Websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/websocket/kafka/spi/RichOrderListener.kt
+++ b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/RichOrderListener.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.kafka.spi
+package co.nilin.opex.websocket.ports.kafka.listener.spi
import co.nilin.opex.accountant.core.inout.RichOrder
diff --git a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/RichTradeListener.kt b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/RichTradeListener.kt
similarity index 76%
rename from Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/RichTradeListener.kt
rename to websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/RichTradeListener.kt
index d81423890..590c6de44 100644
--- a/Api/api-ports/api-eventlistener-kafka/src/main/kotlin/co/nilin/opex/port/api/kafka/spi/RichTradeListener.kt
+++ b/websocket/websocket-ports/websocket-eventlistener-kafka/src/main/kotlin/co/nilin/opex/websocket/ports/kafka/listener/spi/RichTradeListener.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.api.kafka.spi
+package co.nilin.opex.websocket.ports.kafka.listener.spi
import co.nilin.opex.accountant.core.inout.RichTrade
diff --git a/Accountant/accountant-ports/accountant-persister-postgres/.gitignore b/websocket/websocket-ports/websocket-persister-postgres/.gitignore
similarity index 100%
rename from Accountant/accountant-ports/accountant-persister-postgres/.gitignore
rename to websocket/websocket-ports/websocket-persister-postgres/.gitignore
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/pom.xml b/websocket/websocket-ports/websocket-persister-postgres/pom.xml
similarity index 51%
rename from Websocket/websocket-ports/websocket-persister-postgres/pom.xml
rename to websocket/websocket-ports/websocket-persister-postgres/pom.xml
index 1d1091700..580142288 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/pom.xml
+++ b/websocket/websocket-ports/websocket-persister-postgres/pom.xml
@@ -2,50 +2,34 @@
4.0.0
+
- org.springframework.boot
- spring-boot-starter-parent
- 2.4.4
-
+ co.nilin.opex.websocket
+ websocket
+ 1.0-SNAPSHOT
+ ../../pom.xml
- co.nilin.opex
+
+ co.nilin.opex.websocket.ports.postgres
websocket-persister-postgres
- 1.0-SNAPSHOT
websocket-persister-postgres
-
- 1.8
- 1.4.31
- ${version}
- ${version}
- ${version}
- ${version}
-
-
- co.nilin.opex
- matching-core
- ${matching.version}
- provided
+ co.nilin.opex.matching.engine.core
+ matching-engine-core
- co.nilin.opex
+ co.nilin.opex.websocket.core
websocket-core
- ${websocket.version}
- provided
- co.nilin.opex
+ co.nilin.opex.accountant.core
accountant-core
- ${accountant.version}
- provided
- co.nilin.opex
+ co.nilin.opex.utility.error
error-handler
- ${utility.version}
- provided
org.springframework.boot
@@ -61,7 +45,6 @@
postgresql
runtime
-
io.projectreactor.kotlin
reactor-kotlin-extensions
@@ -70,15 +53,10 @@
org.jetbrains.kotlin
kotlin-reflect
-
- org.jetbrains.kotlin
- kotlin-stdlib-jdk8
-
org.jetbrains.kotlinx
kotlinx-coroutines-reactor
-
org.jetbrains.kotlinx
kotlinx-coroutines-core
@@ -94,32 +72,6 @@
-
- ${project.basedir}/src/main/kotlin
- ${project.basedir}/src/test/kotlin
-
-
- org.jetbrains.kotlin
- kotlin-maven-plugin
-
-
- -Xjsr305=strict
-
-
- spring
-
-
-
-
- org.jetbrains.kotlin
- kotlin-maven-allopen
- ${kotlin.version}
-
-
-
-
-
-
spring-milestones
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/config/PostgresConfig.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/config/PostgresConfig.kt
similarity index 81%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/config/PostgresConfig.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/config/PostgresConfig.kt
index 0f54814cc..7878e5242 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/config/PostgresConfig.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/config/PostgresConfig.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.postgres.config
+package co.nilin.opex.websocket.ports.postgres.config
import org.springframework.context.annotation.Configuration
import org.springframework.data.r2dbc.repository.config.EnableR2dbcRepositories
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/OrderRepository.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/OrderRepository.kt
similarity index 95%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/OrderRepository.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/OrderRepository.kt
index a3338e733..45cfcc5e3 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/OrderRepository.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/OrderRepository.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.websocket.postgres.dao
+package co.nilin.opex.websocket.ports.postgres.dao
-import co.nilin.opex.matching.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.websocket.ports.postgres.model.OrderModel
import co.nilin.opex.websocket.core.inout.AggregatedOrderPriceModel
-import co.nilin.opex.port.websocket.postgres.model.OrderModel
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/SymbolMapRepository.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/SymbolMapRepository.kt
similarity index 84%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/SymbolMapRepository.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/SymbolMapRepository.kt
index 5d266accc..16757fc72 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/SymbolMapRepository.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/SymbolMapRepository.kt
@@ -1,6 +1,6 @@
-package co.nilin.opex.port.websocket.postgres.dao
+package co.nilin.opex.websocket.ports.postgres.dao
-import co.nilin.opex.port.websocket.postgres.model.SymbolMapModel
+import co.nilin.opex.websocket.ports.postgres.model.SymbolMapModel
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
import org.springframework.data.repository.reactive.ReactiveCrudRepository
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/TradeRepository.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/TradeRepository.kt
similarity index 96%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/TradeRepository.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/TradeRepository.kt
index 0dec743b2..589ce0fe9 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/dao/TradeRepository.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/dao/TradeRepository.kt
@@ -1,8 +1,8 @@
-package co.nilin.opex.port.websocket.postgres.dao
+package co.nilin.opex.websocket.ports.postgres.dao
-import co.nilin.opex.port.websocket.postgres.model.CandleInfoData
-import co.nilin.opex.port.websocket.postgres.model.TradeModel
-import co.nilin.opex.port.websocket.postgres.model.TradeTickerData
+import co.nilin.opex.websocket.ports.postgres.model.CandleInfoData
+import co.nilin.opex.websocket.ports.postgres.model.TradeModel
+import co.nilin.opex.websocket.ports.postgres.model.TradeTickerData
import kotlinx.coroutines.flow.Flow
import org.springframework.data.r2dbc.repository.Query
import org.springframework.data.repository.query.Param
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/MarketQueryHandlerImpl.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/MarketQueryHandlerImpl.kt
similarity index 91%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/MarketQueryHandlerImpl.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/MarketQueryHandlerImpl.kt
index eb676717a..0085befea 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/MarketQueryHandlerImpl.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/MarketQueryHandlerImpl.kt
@@ -1,25 +1,20 @@
-package co.nilin.opex.port.websocket.postgres.impl
+package co.nilin.opex.websocket.ports.postgres.impl
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import co.nilin.opex.websocket.core.inout.*
import co.nilin.opex.websocket.core.spi.MarketQueryHandler
import co.nilin.opex.websocket.core.spi.SymbolMapper
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.port.websocket.postgres.dao.OrderRepository
-import co.nilin.opex.port.websocket.postgres.dao.TradeRepository
-import co.nilin.opex.port.websocket.postgres.model.OrderModel
-import co.nilin.opex.port.websocket.postgres.model.TradeTickerData
-import co.nilin.opex.port.websocket.postgres.util.*
-import co.nilin.opex.port.websocket.postgres.util.toWebSocketOrderType
-import co.nilin.opex.port.websocket.postgres.util.toOrderSide
-import co.nilin.opex.port.websocket.postgres.util.toOrderStatus
-import co.nilin.opex.port.websocket.postgres.util.toTimeInForce
+import co.nilin.opex.websocket.ports.postgres.dao.OrderRepository
+import co.nilin.opex.websocket.ports.postgres.dao.TradeRepository
+import co.nilin.opex.websocket.ports.postgres.model.OrderModel
+import co.nilin.opex.websocket.ports.postgres.model.TradeTickerData
+import co.nilin.opex.websocket.ports.postgres.util.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.reactive.awaitFirst
import kotlinx.coroutines.reactive.awaitFirstOrElse
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
-import java.lang.Exception
import java.time.Instant
import java.time.LocalDateTime
import java.time.ZoneId
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/SymbolMapperImpl.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/SymbolMapperImpl.kt
similarity index 88%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/SymbolMapperImpl.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/SymbolMapperImpl.kt
index e29132356..4c9179568 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/SymbolMapperImpl.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/SymbolMapperImpl.kt
@@ -1,7 +1,7 @@
-package co.nilin.opex.port.websocket.postgres.impl
+package co.nilin.opex.websocket.ports.postgres.impl
import co.nilin.opex.websocket.core.spi.SymbolMapper
-import co.nilin.opex.port.websocket.postgres.dao.SymbolMapRepository
+import co.nilin.opex.websocket.ports.postgres.dao.SymbolMapRepository
import kotlinx.coroutines.reactive.awaitFirstOrElse
import kotlinx.coroutines.reactive.awaitFirstOrNull
import org.springframework.stereotype.Component
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/UserQueryHandlerImpl.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/UserQueryHandlerImpl.kt
similarity index 89%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/UserQueryHandlerImpl.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/UserQueryHandlerImpl.kt
index 2e989bcf0..5485d38ed 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/impl/UserQueryHandlerImpl.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/impl/UserQueryHandlerImpl.kt
@@ -1,18 +1,14 @@
-package co.nilin.opex.port.websocket.postgres.impl
+package co.nilin.opex.websocket.ports.postgres.impl
-import co.nilin.opex.websocket.core.inout.*
-import co.nilin.opex.websocket.core.spi.UserQueryHandler
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.port.websocket.postgres.dao.OrderRepository
-import co.nilin.opex.port.websocket.postgres.dao.TradeRepository
-import co.nilin.opex.port.websocket.postgres.model.OrderModel
-import co.nilin.opex.port.websocket.postgres.util.*
-import co.nilin.opex.port.websocket.postgres.util.toWebSocketOrderType
-import co.nilin.opex.port.websocket.postgres.util.toOrderSide
-import co.nilin.opex.port.websocket.postgres.util.toOrderStatus
-import co.nilin.opex.port.websocket.postgres.util.toTimeInForce
+import co.nilin.opex.matching.engine.core.model.OrderDirection
import co.nilin.opex.utility.error.data.OpexError
import co.nilin.opex.utility.error.data.OpexException
+import co.nilin.opex.websocket.core.inout.*
+import co.nilin.opex.websocket.core.spi.UserQueryHandler
+import co.nilin.opex.websocket.ports.postgres.dao.OrderRepository
+import co.nilin.opex.websocket.ports.postgres.dao.TradeRepository
+import co.nilin.opex.websocket.ports.postgres.model.OrderModel
+import co.nilin.opex.websocket.ports.postgres.util.*
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.filter
import kotlinx.coroutines.flow.map
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/CandleInfoData.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/CandleInfoData.kt
similarity index 87%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/CandleInfoData.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/CandleInfoData.kt
index 4fd205c2b..66ccf78d0 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/CandleInfoData.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/CandleInfoData.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.postgres.model
+package co.nilin.opex.websocket.ports.postgres.model
import org.springframework.data.relational.core.mapping.Column
import java.time.LocalDateTime
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/OrderModel.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/OrderModel.kt
similarity index 86%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/OrderModel.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/OrderModel.kt
index 20a1dad95..f47097a78 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/OrderModel.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/OrderModel.kt
@@ -1,9 +1,9 @@
-package co.nilin.opex.port.websocket.postgres.model
+package co.nilin.opex.websocket.ports.postgres.model
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
import org.springframework.data.annotation.Id
import org.springframework.data.annotation.Version
import org.springframework.data.relational.core.mapping.Column
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/SymbolMapModel.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/SymbolMapModel.kt
similarity index 84%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/SymbolMapModel.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/SymbolMapModel.kt
index 6c8d483bc..3e318dcc1 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/SymbolMapModel.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/SymbolMapModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.postgres.model
+package co.nilin.opex.websocket.ports.postgres.model
import org.springframework.data.annotation.Id
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/TradeModel.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/TradeModel.kt
similarity index 95%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/TradeModel.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/TradeModel.kt
index e05a5c785..e5a2ed718 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/TradeModel.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/TradeModel.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.postgres.model
+package co.nilin.opex.websocket.ports.postgres.model
import org.springframework.data.annotation.Id
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/TradeTickerData.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/TradeTickerData.kt
similarity index 93%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/TradeTickerData.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/TradeTickerData.kt
index 96f094a0f..7c0b5a397 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/model/TradeTickerData.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/model/TradeTickerData.kt
@@ -1,4 +1,4 @@
-package co.nilin.opex.port.websocket.postgres.model
+package co.nilin.opex.websocket.ports.postgres.model
import org.springframework.data.relational.core.mapping.Column
diff --git a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/util/EnumExtensions.kt b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/util/EnumExtensions.kt
similarity index 85%
rename from Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/util/EnumExtensions.kt
rename to websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/util/EnumExtensions.kt
index c84e303a0..9cd63abe3 100644
--- a/Websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/port/websocket/postgres/util/EnumExtensions.kt
+++ b/websocket/websocket-ports/websocket-persister-postgres/src/main/kotlin/co/nilin/opex/websocket/ports/postgres/util/EnumExtensions.kt
@@ -1,11 +1,11 @@
-package co.nilin.opex.port.websocket.postgres.util
+package co.nilin.opex.websocket.ports.postgres.util
+import co.nilin.opex.matching.engine.core.model.MatchConstraint
+import co.nilin.opex.matching.engine.core.model.OrderDirection
+import co.nilin.opex.matching.engine.core.model.OrderType
import co.nilin.opex.websocket.core.inout.OrderSide
import co.nilin.opex.websocket.core.inout.OrderStatus
import co.nilin.opex.websocket.core.inout.TimeInForce
-import co.nilin.opex.matching.core.model.MatchConstraint
-import co.nilin.opex.matching.core.model.OrderDirection
-import co.nilin.opex.matching.core.model.OrderType
fun MatchConstraint.toTimeInForce(): TimeInForce {
if (this == MatchConstraint.FOK_BUDGET)