Skip to content

Commit 666c746

Browse files
author
Al Scott
committed
Extract transaction stuff to external package.
1 parent eb9dbd4 commit 666c746

20 files changed

+78
-226
lines changed

.idea/kotlinc.xml

+4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pom.xml

+16-15
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@
3838
</dependencyManagement>
3939

4040
<dependencies>
41+
<dependency>
42+
<groupId>com.campspot</groupId>
43+
<artifactId>dropwizard-jdbi3-transactions-core</artifactId>
44+
<version>1.0</version>
45+
</dependency>
4146
<dependency>
4247
<groupId>io.dropwizard</groupId>
4348
<artifactId>dropwizard-core</artifactId>
@@ -55,21 +60,6 @@
5560
<artifactId>dropwizard-jdbi3</artifactId>
5661
<version>1.2</version>
5762
</dependency>
58-
<dependency>
59-
<groupId>org.jdbi</groupId>
60-
<artifactId>jdbi3-core</artifactId>
61-
<version>3.0.1</version>
62-
</dependency>
63-
<dependency>
64-
<groupId>org.jdbi</groupId>
65-
<artifactId>jdbi3-kotlin</artifactId>
66-
<version>3.0.1</version>
67-
</dependency>
68-
<dependency>
69-
<groupId>org.jdbi</groupId>
70-
<artifactId>jdbi3-kotlin-sqlobject</artifactId>
71-
<version>3.0.1</version>
72-
</dependency>
7363
<dependency>
7464
<groupId>mysql</groupId>
7565
<artifactId>mysql-connector-java</artifactId>
@@ -104,6 +94,12 @@
10494
</dependency>
10595

10696

97+
<dependency>
98+
<groupId>com.campspot</groupId>
99+
<artifactId>dropwizard-jdbi3-transactions-test</artifactId>
100+
<version>1.0</version>
101+
<scope>test</scope>
102+
</dependency>
107103
<dependency>
108104
<groupId>io.dropwizard</groupId>
109105
<artifactId>dropwizard-testing</artifactId>
@@ -247,6 +243,11 @@
247243
<groupId>org.jetbrains.kotlin</groupId>
248244
<artifactId>kotlin-maven-plugin</artifactId>
249245
<version>${kotlin.version}</version>
246+
<configuration>
247+
<args>
248+
<arg>-java-parameters</arg>
249+
</args>
250+
</configuration>
250251
<executions>
251252
<execution>
252253
<id>compile</id>

src/main/kotlin/com/campspot/TimeTrackingApplication.kt

+5-2
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
package com.campspot
22

33
import com.campspot.dao.PunchDAO
4+
import com.campspot.jdbi3.DAOManager
5+
import com.campspot.jdbi3.TransactionApplicationListener
46
import com.campspot.lib.MockableObject
57
import com.campspot.lib.PunchLib
68
import com.campspot.middleware.charset.CharsetResponseFilter
7-
import com.campspot.middleware.transactions.DAOManager
8-
import com.campspot.middleware.transactions.TransactionApplicationListener
99
import com.campspot.resources.PunchResource
10+
import com.fasterxml.jackson.annotation.JsonCreator
1011
import com.fasterxml.jackson.module.kotlin.KotlinModule
12+
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule
1113
import com.github.arteam.jdbi3.JdbiFactory
1214
import io.dropwizard.Application
1315
import io.dropwizard.assets.AssetsBundle
@@ -45,6 +47,7 @@ class TimeTrackingApplication : Application<TimeTrackingConfiguration>() {
4547

4648
val objectMapper = environment.objectMapper
4749
objectMapper.registerModule(KotlinModule())
50+
objectMapper.registerModule(ParameterNamesModule(JsonCreator.Mode.PROPERTIES))
4851
objectMapper.configure(com.fasterxml.jackson.databind.SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false)
4952
objectMapper.setTimeZone(utc)
5053

src/main/kotlin/com/campspot/api/Punch.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,6 @@ data class Punch(
77
val start: ZonedDateTime,
88
val end: ZonedDateTime,
99
val category: String,
10-
val description: String
10+
val description: String,
11+
var isPaid: Boolean
1112
)

src/main/kotlin/com/campspot/dao/DAO.kt

-3
This file was deleted.

src/main/kotlin/com/campspot/dao/PunchDAO.kt

+1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.campspot.dao
22

33
import com.campspot.api.Punch
4+
import com.campspot.jdbi3.DAO
45
import org.jdbi.v3.sqlobject.statement.GetGeneratedKeys
56
import org.jdbi.v3.sqlobject.statement.SqlQuery
67
import org.jdbi.v3.sqlobject.statement.SqlUpdate

src/main/kotlin/com/campspot/lib/PunchLib.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import com.campspot.api.Punch
44
import com.campspot.dao.PunchDAO
55
import com.campspot.exceptions.EntityNotFoundException
66
import com.campspot.exceptions.PunchCannotOverlapException
7-
import com.campspot.middleware.transactions.DAOManager
7+
import com.campspot.jdbi3.DAOManager
88
import java.time.ZonedDateTime
99

1010
class PunchLib(

src/main/kotlin/com/campspot/middleware/transactions/DAOManager.kt

-33
This file was deleted.

src/main/kotlin/com/campspot/middleware/transactions/InTransaction.kt

-5
This file was deleted.

src/main/kotlin/com/campspot/middleware/transactions/TransactionAspect.kt

-45
This file was deleted.

src/main/kotlin/com/campspot/middleware/transactions/TransactionEventListener.kt

-66
This file was deleted.

src/main/kotlin/com/campspot/resources/PunchResource.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@ package com.campspot.resources
22

33
import com.campspot.TimeTrackingApplication.Companion.MASTER
44
import com.campspot.api.Punch
5+
import com.campspot.jdbi3.InTransaction
56
import com.campspot.lib.PunchLib
6-
import com.campspot.middleware.transactions.InTransaction
77
import com.codahale.metrics.annotation.Timed
88
import io.dropwizard.jersey.jsr310.ZonedDateTimeParam
99
import org.hibernate.validator.valuehandling.UnwrapValidatedValue

src/main/resources/migrations.xml

+6
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,10 @@
2828
<column name="end"/>
2929
</createIndex>
3030
</changeSet>
31+
32+
<changeSet id="2" author="Al Scott">
33+
<addColumn tableName="Punch">
34+
<column name="isPaid" type="boolean"/>
35+
</addColumn>
36+
</changeSet>
3137
</databaseChangeLog>

src/test/kotlin/com/campspot/api/PunchTest.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ class PunchTest {
88
start = ZonedDateTime.parse("2016-10-05T06:45:00Z[UTC]"),
99
end = ZonedDateTime.parse("2016-10-05T07:30:00Z[UTC]"),
1010
category = "Activities",
11-
description = "Party rocking"
11+
description = "Party rocking",
12+
isPaid = true
1213
)
1314

1415
@Test

src/test/kotlin/com/campspot/dao/PunchDAOTest.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class PunchDAOTest : DAOTest() {
1818
.plusDays(5)
1919
.withHour(11)
2020
val end = start.plusMinutes(30)
21-
val punch = Punch(start = start, end = end, category = "", description = "")
21+
val punch = Punch(start = start, end = end, category = "", description = "", isPaid = true)
2222

2323
punchDAO.create(punch)
2424

src/test/kotlin/com/campspot/dao/TestDAOManager.kt

-18
This file was deleted.

src/test/kotlin/com/campspot/lib/PunchLibTest.kt

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@ package com.campspot.lib
33
import com.campspot.any
44
import com.campspot.api.Punch
55
import com.campspot.dao.PunchDAO
6-
import com.campspot.dao.TestDAOManager
76
import com.campspot.exceptions.EntityNotFoundException
87
import com.campspot.exceptions.PunchCannotOverlapException
8+
import com.campspot.jdbi3.test.TestDAOManager
99
import org.assertj.core.api.Assertions.assertThat
1010
import org.junit.Test
1111
import org.mockito.Mockito.*
@@ -19,7 +19,7 @@ class PunchLibTest {
1919

2020
val start = ZonedDateTime.now()
2121
val end = ZonedDateTime.now().plusMinutes(30)
22-
val basicPunch = Punch(start = start, end = end, category = "", description = "")
22+
val basicPunch = Punch(start = start, end = end, category = "", description = "", isPaid = true)
2323

2424
@Test(expected = PunchCannotOverlapException::class)
2525
fun create_ThrowsErrorIfPunchOverlaps() {

src/test/kotlin/integration/PunchResourceTest.kt

+3-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ class PunchResourceTest : IntegrationTest() {
1717
.withHour(11)
1818
.withMinute(15)
1919
val end = start.withMinute(45)
20-
val punch = Punch(start = start, end = end, category = "Stuff", description = "Very important, pay me extra")
20+
val punch = Punch(start = start, end = end, category = "Stuff", description = "Very important, pay me extra", isPaid = true)
2121

2222
val createdPunch = apiClient!!.createPunch(punch).get()
2323

@@ -41,7 +41,7 @@ class PunchResourceTest : IntegrationTest() {
4141
val end = start.withMinute(45)
4242
val category = "Stuff"
4343
val description = "Very important, pay me extra"
44-
val punch = Punch(id = id, start = start, end = end, category = category, description = description)
44+
val punch = Punch(id = id, start = start, end = end, category = category, description = description, isPaid = false)
4545

4646
val handle = jdbi!!.open()
4747
handle.execute("INSERT INTO PUNCH (id, start, end, category, description) VALUES (?, ?, ?, ?, ?)", id, start, end, category, description)
@@ -72,7 +72,7 @@ class PunchResourceTest : IntegrationTest() {
7272
.plusDays(5)
7373
val rangeEnd = rangeStart.plusDays(5)
7474

75-
val basePunch = Punch(id = 0, start = rangeStart, end = rangeEnd, category = "", description = "")
75+
val basePunch = Punch(id = 0, start = rangeStart, end = rangeEnd, category = "", description = "", isPaid = true)
7676

7777
val beforeStartNoOverlap = basePunch.copy(id = 1, start = rangeStart.minusDays(5), end = rangeStart.minusDays(3))
7878
val beforeStartTillExactlyStart = basePunch.copy(id = 2, start = rangeStart.minusDays(5), end = rangeStart)

src/test/resources/fixtures/punch.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,6 @@
22
"start": "2016-10-05T06:45:00Z",
33
"end": "2016-10-05T07:30:00Z",
44
"category": "Activities",
5-
"description": "Party rocking"
5+
"description": "Party rocking",
6+
"isPaid": true
67
}

0 commit comments

Comments
 (0)