Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface Transactional {
- fun <T> transaction(action: () -> T): T
- }
- class TransactionalImpl(private val transactionTemplate: TransactionTemplate): Transactional {
- override fun <T> transaction(action: () -> T): T {
- return transactionTemplate.execute({ action() }) as T
- }
- }
- @Component
- class Api(private val repo: PersonRepository, val transactionTemplate: TransactionTemplate): Transactional by TransactionalImpl(transactionTemplate) {
- @EventListener(ContextRefreshedEvent::class)
- fun expose() {
- get("/") {
- transaction {
- type(contentType = "application/json")
- val p = Person(UUID.randomUUID(), "Nathan", 35)
- repo.save(p)
- repo.findAll().map {
- PersonDto(it.name, it.tags?.flatMap {
- it.name?.let { listOf(it) } ?: emptyList()
- })
- }.toJson()
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment