From 3cdb05eb05b834cba686be4c6f33b48ebb720faa Mon Sep 17 00:00:00 2001 From: Ian Clarke Date: Sat, 21 Jul 2018 13:33:46 -0500 Subject: [PATCH] version bump and misc improvements --- build.gradle | 18 ++++++++++-------- gradle/wrapper/gradle-wrapper.jar | Bin 54212 -> 54413 bytes gradle/wrapper/gradle-wrapper.properties | 5 ++--- gradlew | 6 +++--- .../io/kweb/shoebox/stores/DirectoryStore.kt | 11 ++++++----- .../kweb/shoebox/stores/DirectoryStoreSpec.kt | 11 ++++------- 6 files changed, 25 insertions(+), 26 deletions(-) diff --git a/build.gradle b/build.gradle index f9a4975..09ef1fb 100644 --- a/build.gradle +++ b/build.gradle @@ -1,9 +1,9 @@ group 'io.kweb' -version '0.2.18' +version '0.2.19' buildscript { - ext.kotlin_version = '1.2.50' - ext.dokka_version = '0.9.15' + ext.kotlin_version = '1.2.51' + ext.dokka_version = '0.9.17' repositories { jcenter() @@ -21,15 +21,17 @@ buildscript { } dependencies { classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" - classpath 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.1.10' + classpath 'info.solidsoft.gradle.pitest:gradle-pitest-plugin:1.3.0' classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version" - + classpath 'com.github.ben-manes:gradle-versions-plugin:0.20.0' } + } apply plugin: 'kotlin' apply plugin: 'org.jetbrains.dokka' apply plugin: "info.solidsoft.pitest" +apply plugin: "com.github.ben-manes.versions" repositories { mavenCentral() @@ -45,12 +47,12 @@ repositories { dependencies { compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" - compile 'com.github.salomonbrys.kotson:kotson:2.3.0' - compile 'com.google.guava:guava:18.0' + compile 'com.github.salomonbrys.kotson:kotson:2.5.0' + compile 'com.google.guava:guava:25.1-jre' compile 'net.incongru.watchservice:barbary-watchservice:1.0' compile 'com.fatboyindustrial.gson-javatime-serialisers:gson-javatime-serialisers:1.1.1' - testCompile 'io.kotlintest:kotlintest:2.0.1' + testCompile 'io.kotlintest:kotlintest:2.0.7' } task dokkaJavadoc(type: org.jetbrains.dokka.gradle.DokkaTask) { diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 8ac176eaeedd1e5ff4d5d24ae8e7f4b7c1b04808..0d4a9516871afd710a9d84d89e31ba77745607bd 100644 GIT binary patch delta 34282 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 DirectoryStore(directory : Path) = DirectoryStore(d class DirectoryStore(val directory : Path, private val kc : KClass) : Store { companion object { - const private val LOCK_FILENAME = "shoebox.lock" - const private val LOCK_TOUCH_TIME_MS = 100.toLong() - const private val LOCK_STALE_TIME = LOCK_TOUCH_TIME_MS * 2 + private const val LOCK_FILENAME = "shoebox.lock" + private val LOCK_TOUCH_TIME = Duration.ofMillis(100) + private val LOCK_STALE_TIME = LOCK_TOUCH_TIME.multipliedBy(20) private val gson = Converters.registerAll(GsonBuilder()).let { it.registerTypeAdapter(object : TypeToken() {}.type, DurationConverter()) }.create() @@ -56,7 +56,8 @@ class DirectoryStore(val directory : Path, private val kc : KClass) init { Files.createDirectories(directory) if (Files.exists(lockFilePath)) { - if (System.currentTimeMillis() - Files.getLastModifiedTime(lockFilePath).toMillis() < LOCK_STALE_TIME) { + val durationSinceLock = Duration.between(Files.getLastModifiedTime(lockFilePath).toInstant(), Instant.now()) + if (durationSinceLock < LOCK_STALE_TIME) { throw RuntimeException("$directory locked by $lockFilePath, created ${System.currentTimeMillis() - Files.getLastModifiedTime(lockFilePath).toMillis()}ms ago.") } else { Files.setLastModifiedTime(lockFilePath, FileTime.fromMillis(System.currentTimeMillis())) @@ -68,7 +69,7 @@ class DirectoryStore(val directory : Path, private val kc : KClass) } scheduledExecutor.scheduleWithFixedDelay({ Files.setLastModifiedTime(lockFilePath, FileTime.fromMillis(System.currentTimeMillis())) - }, LOCK_TOUCH_TIME_MS, LOCK_TOUCH_TIME_MS, TimeUnit.MILLISECONDS) + }, LOCK_TOUCH_TIME.toMillis(), LOCK_TOUCH_TIME.toMillis(), TimeUnit.MILLISECONDS) } /** diff --git a/src/test/kotlin/io/kweb/shoebox/stores/DirectoryStoreSpec.kt b/src/test/kotlin/io/kweb/shoebox/stores/DirectoryStoreSpec.kt index 73682e6..97595cd 100644 --- a/src/test/kotlin/io/kweb/shoebox/stores/DirectoryStoreSpec.kt +++ b/src/test/kotlin/io/kweb/shoebox/stores/DirectoryStoreSpec.kt @@ -1,11 +1,8 @@ package io.kweb.shoebox.stores -import io.kweb.shoebox.ShoeboxSpec -import io.kotlintest.matchers.gt -import io.kotlintest.matchers.shouldBe -import io.kotlintest.matchers.shouldEqual -import io.kotlintest.matchers.shouldThrow +import io.kotlintest.matchers.* import io.kotlintest.specs.FreeSpec +import io.kweb.shoebox.ShoeboxSpec import io.kweb.shoebox.ShoeboxSpec.TestData import java.nio.file.Files import java.nio.file.attribute.FileTime @@ -56,7 +53,7 @@ class DirectoryStoreSpec : FreeSpec() { val pm = DirectoryStore(dir) pm["key1"] = object1 "should cache the item that was stored" { - pm.cache.get("key1") shouldEqual object1 + pm.cache.get("key1").value shouldEqual object1 } } "when an item is replaced" - { @@ -66,7 +63,7 @@ class DirectoryStoreSpec : FreeSpec() { pm["key1"] = object2 "should have cached the replaced data" { - pm.cache.get("key1") shouldEqual object2 + pm.cache.get("key1").value shouldEqual object2 } "should retrieve the replaced data without the cache" { pm.cache.invalidate("key1")