Guest User

Untitled

a guest
Jul 20th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. interface Transactional {
  2. fun <T> transaction(action: () -> T): T
  3. }
  4.  
  5. class TransactionalImpl(private val transactionTemplate: TransactionTemplate): Transactional {
  6. override fun <T> transaction(action: () -> T): T {
  7. return transactionTemplate.execute({ action() }) as T
  8. }
  9. }
  10.  
  11. @Component
  12. class Api(private val repo: PersonRepository, val transactionTemplate: TransactionTemplate): Transactional by TransactionalImpl(transactionTemplate) {
  13.  
  14. @EventListener(ContextRefreshedEvent::class)
  15. fun expose() {
  16. get("/") {
  17. transaction {
  18. type(contentType = "application/json")
  19.  
  20. val p = Person(UUID.randomUUID(), "Nathan", 35)
  21. repo.save(p)
  22.  
  23. repo.findAll().map {
  24. PersonDto(it.name, it.tags?.flatMap {
  25. it.name?.let { listOf(it) } ?: emptyList()
  26. })
  27. }.toJson()
  28. }
  29. }
  30. }
  31. }
Add Comment
Please, Sign In to add comment