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 Opex -## 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)