Compare commits
4 Commits
857d97c142
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 16e954101f | |||
| 61369fc2bf | |||
| da16ea9afe | |||
| fedc1029ce |
1
.gitignore
vendored
1
.gitignore
vendored
@@ -4,6 +4,7 @@ build/
|
|||||||
!gradle/wrapper/gradle-wrapper.jar
|
!gradle/wrapper/gradle-wrapper.jar
|
||||||
!**/src/main/**/build/
|
!**/src/main/**/build/
|
||||||
!**/src/test/**/build/
|
!**/src/test/**/build/
|
||||||
|
application-dev.yml
|
||||||
|
|
||||||
### STS ###
|
### STS ###
|
||||||
.apt_generated
|
.apt_generated
|
||||||
|
|||||||
@@ -1,11 +1,29 @@
|
|||||||
package com.cubetiqs.demo.axon
|
package com.cubetiqs.demo.axon
|
||||||
|
|
||||||
|
import com.cubetiqs.demo.axon.util.ExecUtils
|
||||||
import org.springframework.boot.autoconfigure.SpringBootApplication
|
import org.springframework.boot.autoconfigure.SpringBootApplication
|
||||||
import org.springframework.boot.runApplication
|
import org.springframework.boot.runApplication
|
||||||
|
import org.springframework.http.MediaType
|
||||||
|
import org.springframework.util.FileCopyUtils
|
||||||
|
import org.springframework.web.bind.annotation.GetMapping
|
||||||
|
import org.springframework.web.bind.annotation.RestController
|
||||||
|
import javax.servlet.http.HttpServletResponse
|
||||||
|
|
||||||
@SpringBootApplication
|
@SpringBootApplication
|
||||||
class AxonApplication
|
class AxonApplication
|
||||||
|
|
||||||
fun main(args: Array<String>) {
|
fun main(args: Array<String>) {
|
||||||
runApplication<AxonApplication>(*args)
|
runApplication<AxonApplication>(*args)
|
||||||
|
}
|
||||||
|
|
||||||
|
@RestController
|
||||||
|
class MyDumper {
|
||||||
|
@GetMapping("/dump")
|
||||||
|
fun dumper(
|
||||||
|
response: HttpServletResponse
|
||||||
|
) {
|
||||||
|
response.contentType = MediaType.APPLICATION_OCTET_STREAM_VALUE
|
||||||
|
val data = ExecUtils.execMySqlDump()
|
||||||
|
FileCopyUtils.copy(data ?: ByteArray(0), response.outputStream)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -11,12 +11,14 @@ import org.axonframework.commandhandling.CommandHandler
|
|||||||
import org.axonframework.eventsourcing.EventSourcingHandler
|
import org.axonframework.eventsourcing.EventSourcingHandler
|
||||||
import org.axonframework.modelling.command.AggregateIdentifier
|
import org.axonframework.modelling.command.AggregateIdentifier
|
||||||
import org.axonframework.modelling.command.AggregateLifecycle
|
import org.axonframework.modelling.command.AggregateLifecycle
|
||||||
|
import org.axonframework.serialization.Revision
|
||||||
import org.axonframework.spring.stereotype.Aggregate
|
import org.axonframework.spring.stereotype.Aggregate
|
||||||
import java.math.BigDecimal
|
import java.math.BigDecimal
|
||||||
import java.util.UUID
|
import java.util.UUID
|
||||||
|
|
||||||
@Aggregate
|
@Aggregate
|
||||||
class BankAccountAggregate() {
|
@Revision("1.0")
|
||||||
|
final class BankAccountAggregate() {
|
||||||
@AggregateIdentifier
|
@AggregateIdentifier
|
||||||
private var id: UUID? = null
|
private var id: UUID? = null
|
||||||
private var balance: BigDecimal? = null
|
private var balance: BigDecimal? = null
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import java.util.concurrent.CompletableFuture
|
|||||||
class SwaggerConfiguration {
|
class SwaggerConfiguration {
|
||||||
@Bean
|
@Bean
|
||||||
fun apiDocket(): Docket {
|
fun apiDocket(): Docket {
|
||||||
val ignoreClasses = arrayListOf(CompletableFuture::class.java).toTypedArray()
|
|
||||||
return Docket(DocumentationType.SWAGGER_2)
|
return Docket(DocumentationType.SWAGGER_2)
|
||||||
.select()
|
.select()
|
||||||
.apis(
|
.apis(
|
||||||
@@ -26,7 +25,6 @@ class SwaggerConfiguration {
|
|||||||
)
|
)
|
||||||
.paths(PathSelectors.any())
|
.paths(PathSelectors.any())
|
||||||
.build()
|
.build()
|
||||||
.ignoredParameterTypes(*ignoreClasses)
|
|
||||||
.apiInfo(apiInfo)
|
.apiInfo(apiInfo)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
17
src/main/kotlin/com/cubetiqs/demo/axon/config/WebConfig.kt
Normal file
17
src/main/kotlin/com/cubetiqs/demo/axon/config/WebConfig.kt
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
package com.cubetiqs.demo.axon.config
|
||||||
|
|
||||||
|
import org.springframework.context.annotation.Configuration
|
||||||
|
import org.springframework.web.servlet.config.annotation.EnableWebMvc
|
||||||
|
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry
|
||||||
|
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer
|
||||||
|
|
||||||
|
@Configuration
|
||||||
|
@EnableWebMvc
|
||||||
|
class WebConfig : WebMvcConfigurer {
|
||||||
|
override fun addResourceHandlers(registry: ResourceHandlerRegistry) {
|
||||||
|
registry.addResourceHandler("swagger-ui.html")
|
||||||
|
.addResourceLocations("classpath:/META-INF/resources/")
|
||||||
|
registry.addResourceHandler("/webjars/**")
|
||||||
|
.addResourceLocations("classpath:/META-INF/resources/webjars/")
|
||||||
|
}
|
||||||
|
}
|
||||||
43
src/main/kotlin/com/cubetiqs/demo/axon/util/ExecUtils.kt
Normal file
43
src/main/kotlin/com/cubetiqs/demo/axon/util/ExecUtils.kt
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
package com.cubetiqs.demo.axon.util
|
||||||
|
|
||||||
|
import java.io.BufferedInputStream
|
||||||
|
import java.io.ByteArrayOutputStream
|
||||||
|
|
||||||
|
object ExecUtils {
|
||||||
|
private const val MYSQLDUMP_FILE = "mysqldump"
|
||||||
|
|
||||||
|
fun execMySqlDump(): ByteArray? {
|
||||||
|
var results: ByteArray?
|
||||||
|
try {
|
||||||
|
val command: MutableList<String> = mutableListOf()
|
||||||
|
command.add(MYSQLDUMP_FILE)
|
||||||
|
command.add("--databases")
|
||||||
|
command.add("orderwebapp")
|
||||||
|
command.add("--host")
|
||||||
|
command.add("192.168.0.204")
|
||||||
|
command.add("-usombochea")
|
||||||
|
command.add("-p@Csb632612")
|
||||||
|
|
||||||
|
val builder = ProcessBuilder(*command.toTypedArray())
|
||||||
|
.redirectErrorStream(false)
|
||||||
|
val process = builder.start()
|
||||||
|
BufferedInputStream(process.inputStream).use {
|
||||||
|
ByteArrayOutputStream().use { stdout ->
|
||||||
|
while (true) {
|
||||||
|
val x = it.read()
|
||||||
|
if (x == -1) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
stdout.write(x)
|
||||||
|
}
|
||||||
|
results = stdout.toByteArray()
|
||||||
|
process.waitFor()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
println(e.message)
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
return results
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -6,9 +6,9 @@ spring:
|
|||||||
name: axon-demo
|
name: axon-demo
|
||||||
datasource:
|
datasource:
|
||||||
driverClassName: org.postgresql.Driver
|
driverClassName: org.postgresql.Driver
|
||||||
url: jdbc:postgresql://${POSTGRES_HOST:192.168.0.202}:${POSTGRES_PORT:5432}/${POSTGRES_DB:axon_demo}
|
url: jdbc:postgresql://${POSTGRES_HOST:localhost}:${POSTGRES_PORT:5432}/${POSTGRES_DB:axon_demo}
|
||||||
username: ${POSTGRES_USERNAME:cubetiq}
|
username: ${POSTGRES_USERNAME:root}
|
||||||
password: ${POSTGRES_PASSWORD:Root$}
|
password: ${POSTGRES_PASSWORD:root}
|
||||||
hikari:
|
hikari:
|
||||||
max-lifetime: 1800000
|
max-lifetime: 1800000
|
||||||
connection-timeout: 30000
|
connection-timeout: 30000
|
||||||
@@ -37,7 +37,7 @@ axon:
|
|||||||
serializer:
|
serializer:
|
||||||
general: jackson
|
general: jackson
|
||||||
axonserver:
|
axonserver:
|
||||||
servers: 192.168.0.202
|
servers: localhost
|
||||||
|
|
||||||
logging:
|
logging:
|
||||||
level.root: debug
|
level.root: debug
|
||||||
10
src/test/kotlin/TestExecUtils.kt
Normal file
10
src/test/kotlin/TestExecUtils.kt
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import com.cubetiqs.demo.axon.util.ExecUtils
|
||||||
|
import org.junit.jupiter.api.Test
|
||||||
|
|
||||||
|
class TestExecUtils {
|
||||||
|
@Test
|
||||||
|
fun dump() {
|
||||||
|
val dump = ExecUtils.execMySqlDump()
|
||||||
|
println("Dump size: ${dump?.size}")
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user