From 6d83ac8eb7801be50afc8dfc7514c912ef02f590 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Fri, 12 Jun 2020 01:55:12 +0300 Subject: [PATCH 1/3] Optimized ModifierId --- build.sbt | 2 +- src/main/scala/scorex/core/core.scala | 10 ++-------- src/main/scala/scorex/core/utils/ScorexEncoder.scala | 2 +- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/build.sbt b/build.sbt index 571561334..b98651e01 100644 --- a/build.sbt +++ b/build.sbt @@ -96,7 +96,7 @@ val loggingDependencies = Seq( "ch.qos.logback" % "logback-classic" % "1.3.0-alpha4" ) -val scorexUtil = "org.scorexfoundation" %% "scorex-util" % "0.1.6" +val scorexUtil = "org.scorexfoundation" %% "scorex-util" % "0.1.7" val testingDependencies = Seq( "com.typesafe.akka" %% "akka-testkit" % akkaVersion % "test", diff --git a/src/main/scala/scorex/core/core.scala b/src/main/scala/scorex/core/core.scala index 020c1ee0d..1d41f974c 100644 --- a/src/main/scala/scorex/core/core.scala +++ b/src/main/scala/scorex/core/core.scala @@ -10,12 +10,6 @@ package object core { //TODO implement ModifierTypeId as a trait object ModifierTypeId extends TaggedType[Byte] - @deprecated("use `scorex.util.ModifierId`", "") - type ModifierId = scorex.util.ModifierId.Type - - @deprecated("use `scorex.util.ModifierId`", "") - val ModifierId: scorex.util.ModifierId.type = scorex.util.ModifierId - object VersionTag extends TaggedType[String] type ModifierTypeId = ModifierTypeId.Type @@ -43,8 +37,8 @@ package object core { def versionToBytes(id: VersionTag): Array[Byte] = Base16.decode(id).get - def versionToId(version: VersionTag): util.ModifierId = util.ModifierId @@ version + def versionToId(version: VersionTag): util.ModifierId = util.ModifierId(version) - def idToVersion(id: util.ModifierId): VersionTag = VersionTag @@ id + def idToVersion(id: util.ModifierId): VersionTag = VersionTag @@ id.toString } diff --git a/src/main/scala/scorex/core/utils/ScorexEncoder.scala b/src/main/scala/scorex/core/utils/ScorexEncoder.scala index 1e9bf2b68..af4161159 100644 --- a/src/main/scala/scorex/core/utils/ScorexEncoder.scala +++ b/src/main/scala/scorex/core/utils/ScorexEncoder.scala @@ -38,7 +38,7 @@ class ScorexEncoder extends BytesEncoder { * with encode() and decode methods */ @inline - def encodeId(input: ModifierId): String = input + def encodeId(input: ModifierId): String = input.toString } From 2d46a9d1b19edb088f45bed23cafcb1043311b22 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Mon, 15 Jun 2020 10:04:18 +0300 Subject: [PATCH 2/3] [refer #1132] Change ModifierId representation --- build.sbt | 2 +- src/main/scala/scorex/core/core.scala | 12 +++++------- src/main/scala/scorex/core/utils/ScorexEncoder.scala | 2 +- 3 files changed, 7 insertions(+), 9 deletions(-) diff --git a/build.sbt b/build.sbt index b98651e01..1849ca8df 100644 --- a/build.sbt +++ b/build.sbt @@ -3,7 +3,7 @@ import scala.util.Try name := "scorex-core" lazy val commonSettings = Seq( - scalaVersion := "2.12.3", + scalaVersion := "2.12.10", resolvers += Resolver.sonatypeRepo("public"), wartremoverErrors ++= Seq( Wart.Recursion, diff --git a/src/main/scala/scorex/core/core.scala b/src/main/scala/scorex/core/core.scala index 1d41f974c..ff252ac1b 100644 --- a/src/main/scala/scorex/core/core.scala +++ b/src/main/scala/scorex/core/core.scala @@ -10,11 +10,9 @@ package object core { //TODO implement ModifierTypeId as a trait object ModifierTypeId extends TaggedType[Byte] - object VersionTag extends TaggedType[String] - type ModifierTypeId = ModifierTypeId.Type - type VersionTag = VersionTag.Type + type VersionTag = util.ModifierId def idsToString(ids: Seq[(ModifierTypeId, util.ModifierId)])(implicit enc: ScorexEncoder): String = { List(ids.headOption, ids.lastOption) @@ -33,12 +31,12 @@ package object core { def idToBytes: util.ModifierId => Array[Byte] = scorex.util.idToBytes - def bytesToVersion(bytes: Array[Byte]): VersionTag = VersionTag @@ Base16.encode(bytes) + def bytesToVersion(bytes: Array[Byte]): VersionTag = scorex.util.bytesToId(bytes) - def versionToBytes(id: VersionTag): Array[Byte] = Base16.decode(id).get + def versionToBytes(id: VersionTag): Array[Byte] = scorex.util.idToBytes(id) - def versionToId(version: VersionTag): util.ModifierId = util.ModifierId(version) + def versionToId(version: VersionTag): util.ModifierId = version - def idToVersion(id: util.ModifierId): VersionTag = VersionTag @@ id.toString + def idToVersion(id: util.ModifierId): VersionTag = id } diff --git a/src/main/scala/scorex/core/utils/ScorexEncoder.scala b/src/main/scala/scorex/core/utils/ScorexEncoder.scala index af4161159..071efd0f9 100644 --- a/src/main/scala/scorex/core/utils/ScorexEncoder.scala +++ b/src/main/scala/scorex/core/utils/ScorexEncoder.scala @@ -30,7 +30,7 @@ class ScorexEncoder extends BytesEncoder { * with encode() and decode methods */ @inline - def encodeVersion(input: VersionTag): String = input + def encodeVersion(input: VersionTag): String = input.toString /** * This method might be useful and reimplemented, if encoding of ModifierId and VersionTag From 2d88d00883fc922604864657858d02aa2e601d54 Mon Sep 17 00:00:00 2001 From: Konstantin Knizhnik Date: Mon, 6 Jul 2020 17:53:26 +0300 Subject: [PATCH 3/3] Replace FileTreeWalker with recursive delete function --- .../scorex/testkit/utils/FileUtils.scala | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/testkit/src/main/scala/scorex/testkit/utils/FileUtils.scala b/testkit/src/main/scala/scorex/testkit/utils/FileUtils.scala index 4417b68f0..b7492d304 100644 --- a/testkit/src/main/scala/scorex/testkit/utils/FileUtils.scala +++ b/testkit/src/main/scala/scorex/testkit/utils/FileUtils.scala @@ -35,21 +35,22 @@ trait FileUtils { createTempDirForPrefix(prefix) } + + @SuppressWarnings(Array("org.wartremover.warts.Recursion")) + def deleteRecursive(dir: java.io.File): Unit = { + for (file <- dir.listFiles) { + if (!file.getName.startsWith(".")) { + if (file.isDirectory) deleteRecursive(file) + file.delete() + } + } + } + /** * Recursively remove all files and directories in `root` */ def remove(root: Path): Unit = { - Files.walkFileTree(root, new SimpleFileVisitor[Path] { - override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { - Files.delete(file) - FileVisitResult.CONTINUE - } - - override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { - Files.delete(dir) - FileVisitResult.CONTINUE - } - }) + deleteRecursive(root.toFile) } private def createTempDirForPrefix(prefix: String): java.io.File = {