java.nio.file.attribute.BasicFileAttributes Scala Examples
The following examples show how to use java.nio.file.attribute.BasicFileAttributes.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
Example 1
Source File: UtilTest.scala From daml with Apache License 2.0 | 5 votes |
// Copyright (c) 2020 Digital Asset (Switzerland) GmbH and/or its affiliates. All rights reserved. // SPDX-License-Identifier: Apache-2.0 package com.daml.codegen import com.daml.lf.data.Ref.{QualifiedName, PackageId} import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor} import com.daml.lf.{iface => I} import org.scalatest.{BeforeAndAfterAll, FlatSpec, Matchers} import org.scalatest.prop.GeneratorDrivenPropertyChecks class UtilTest extends UtilTestHelpers with GeneratorDrivenPropertyChecks { val packageInterface = I.Interface(packageId = PackageId.assertFromString("abcdef"), typeDecls = Map.empty) val scalaPackageParts = Array("com", "digitalasset") val scalaPackage: String = scalaPackageParts.mkString(".") val util = lf.LFUtil( scalaPackage, I.EnvironmentInterface fromReaderInterfaces packageInterface, outputDir.toFile) def damlScalaName(damlNameSpace: Array[String], name: String): util.DamlScalaName = util.DamlScalaName(damlNameSpace, name) behavior of "Util" it should "mkDamlScalaName for a Contract named Test" in { val result = util.mkDamlScalaNameFromDirsAndName(Array(), "Test") result shouldEqual damlScalaName(Array.empty, "Test") result.packageName shouldEqual scalaPackage result.qualifiedName shouldEqual (scalaPackage + ".Test") } it should "mkDamlScalaName for a Template names foo.bar.Test" in { val result = util.mkDamlScalaName(Util.Template, QualifiedName assertFromString "foo.bar:Test") result shouldEqual damlScalaName(Array("foo", "bar"), "Test") result.packageName shouldEqual (scalaPackage + ".foo.bar") result.qualifiedName shouldEqual (scalaPackage + ".foo.bar.Test") } "partitionEithers" should "equal scalaz separate in simple cases" in forAll { iis: List[Either[Int, Int]] => import scalaz.syntax.monadPlus._, scalaz.std.list._, scalaz.std.either._ Util.partitionEithers(iis) shouldBe iis.separate } } abstract class UtilTestHelpers extends FlatSpec with Matchers with BeforeAndAfterAll { val outputDir = Files.createTempDirectory("codegenUtilTest") override protected def afterAll(): Unit = { super.afterAll() deleteRecursively(outputDir) } def deleteRecursively(dir: Path): Unit = { Files.walkFileTree( dir, new SimpleFileVisitor[Path] { override def postVisitDirectory(dir: Path, exc: IOException) = { Files.delete(dir) FileVisitResult.CONTINUE } override def visitFile(file: Path, attrs: BasicFileAttributes) = { Files.delete(file) FileVisitResult.CONTINUE } } ) () } }
Example 2
Source File: TestHelpers.scala From matcher with MIT License | 5 votes |
package com.wavesplatform.dex.util import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor} object TestHelpers { def deleteRecursively(path: Path): Unit = Files.walkFileTree( path, new SimpleFileVisitor[Path] { override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { Option(exc).fold { Files.delete(dir) FileVisitResult.CONTINUE }(throw _) } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } } ) }
Example 3
Source File: IOUtil.scala From jardiff with Apache License 2.0 | 5 votes |
package scala.tools.jardiff import java.io.IOException import java.net.URI import java.nio.file._ import java.nio.file.attribute.BasicFileAttributes import java.util object IOUtil { def rootPath(fileOrZip: Path): Path = { if (fileOrZip.getFileName.toString.endsWith(".jar")) { val uri = URI.create(s"jar:${fileOrZip.toUri}") newFileSystem(uri, new util.HashMap[String, Any]()).getPath("/") } else { val extSlash = ".jar/" val index = fileOrZip.toString.indexOf(extSlash) if (index == -1) { fileOrZip } else { val uri = URI.create("jar:" + Paths.get(fileOrZip.toString.substring(0, index + extSlash.length - 1)).toUri.toString) val jarEntry = fileOrZip.toString.substring(index + extSlash.length - 1) val system = newFileSystem(uri, new util.HashMap[String, Any]()) system.getPath(jarEntry) } } } private def newFileSystem(uri: URI, map: java.util.Map[String, Any]) = try FileSystems.newFileSystem(uri, map) catch { case _: FileSystemAlreadyExistsException => FileSystems.getFileSystem(uri) } def mapRecursive(source: java.nio.file.Path, target: java.nio.file.Path)(f: (Path, Path) => Unit) = { Files.walkFileTree(source, util.EnumSet.of(FileVisitOption.FOLLOW_LINKS), Integer.MAX_VALUE, new FileVisitor[Path] { def preVisitDirectory(dir: Path, sourceBasic: BasicFileAttributes): FileVisitResult = { val relative = source.relativize(dir).toString if (!Files.exists(target.resolve(relative))) Files.createDirectory(target.resolve(relative)) FileVisitResult.CONTINUE } def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { val relative = source.relativize(file).toString f(file, target.resolve(relative)) FileVisitResult.CONTINUE } def visitFileFailed(file: Path, e: IOException) = throw e def postVisitDirectory(dir: Path, e: IOException): FileVisitResult = { if (e != null) throw e FileVisitResult.CONTINUE } }) } def deleteRecursive(p: Path): Unit = { import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, SimpleFileVisitor} Files.walkFileTree(p, new SimpleFileVisitor[Path]() { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } override def preVisitDirectory(dir: Path, attrs: BasicFileAttributes): FileVisitResult = { if (dir.getFileName.toString == ".git") FileVisitResult.SKIP_SUBTREE else super.preVisitDirectory(dir, attrs) } override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { val listing = Files.list(dir) try { if (!listing.iterator().hasNext) Files.delete(dir) } finally { listing.close() } FileVisitResult.CONTINUE } }) } }
Example 4
Source File: IDEPathHelper.scala From keycloak-benchmark with Apache License 2.0 | 5 votes |
import java.net.URI import java.nio.file.attribute.{FileAttribute, BasicFileAttributes} import java.nio.file.{StandardCopyOption, Paths, Files, Path} import io.gatling.core.util.PathHelper._ class Directories( val data: Path, val bodies: Path, val binaries: Path, val results: Path ) object IDEPathHelper { private val uri: URI = getClass.getClassLoader.getResource("gatling.conf").toURI val directories: Directories = if (uri.getScheme.startsWith("jar")) { val testDir = System.getProperty("test.dir"); val mainDir: Path = if (testDir != null) { val dir = Paths.get(testDir); if (dir.exists) { if (!dir.isDirectory) { throw new IllegalArgumentException(testDir + " is not a directory") } dir } else { Files.createDirectory(dir) } } else { Files.createTempDirectory("gatling-") } System.out.println("Using " + mainDir + " as gatling directory") // unpack gatling.conf Files.copy(getClass.getResourceAsStream("gatling.conf"), mainDir.resolve("gatling.conf"), StandardCopyOption.REPLACE_EXISTING) // using createDirectories to ignore existing val directories = new Directories( Files.createDirectories(mainDir.resolve("data")), Files.createDirectories(mainDir.resolve("bodies")), Files.createDirectories(mainDir.resolve("binaries")), Files.createDirectories(mainDir.resolve("results"))) val simulationFile: String = Engine.simulationClass.replace('.', '/') + ".class" // unpack simulation val targetFile: Path = mainDir.resolve("binaries").resolve(simulationFile) Files.createDirectories(targetFile.getParent) Files.copy(getClass.getResourceAsStream(simulationFile), targetFile, StandardCopyOption.REPLACE_EXISTING) directories } else { val projectRootDir = RichPath(uri).ancestor(3) val mavenResourcesDirectory = projectRootDir / "src" / "test" / "resources" val mavenTargetDirectory = projectRootDir / "target" new Directories( mavenResourcesDirectory / "data", mavenResourcesDirectory / "bodies", mavenTargetDirectory / "test-classes", mavenTargetDirectory / "results") } }
Example 5
Source File: Persister.scala From exodus with MIT License | 5 votes |
package com.wix.bazel.migrator import java.io.File import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{Files, Paths} import java.time.Instant import java.time.temporal.TemporalUnit import java.util import com.fasterxml.jackson.databind.{DeserializationFeature, ObjectMapper} import com.fasterxml.jackson.module.scala.DefaultScalaModule import com.wix.bazel.migrator.model.{CodePurpose, Package, Target, TestType} import com.wix.bazel.migrator.utils.{IgnoringIsArchiveDefMixin, IgnoringIsProtoArtifactDefMixin, IgnoringIsWarDefMixin, TypeAddingMixin} import com.wix.build.maven.analysis.SourceModules import com.wixpress.build.maven.{Coordinates, MavenScope, Packaging} import scala.collection.JavaConverters._ object Persister { private val transformedFile = new File("dag.bazel") private val mavenCache = Paths.get("classpathModules.cache") val objectMapper = new ObjectMapper().registerModule(DefaultScalaModule) .addMixIn(classOf[Target], classOf[TypeAddingMixin]) .addMixIn(classOf[CodePurpose], classOf[TypeAddingMixin]) .addMixIn(classOf[TestType], classOf[TypeAddingMixin]) .addMixIn(classOf[MavenScope], classOf[TypeAddingMixin]) .addMixIn(classOf[Packaging], classOf[IgnoringIsArchiveDefMixin]) .addMixIn(classOf[Packaging], classOf[IgnoringIsWarDefMixin]) .addMixIn(classOf[Coordinates], classOf[IgnoringIsProtoArtifactDefMixin]) .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) def persistTransformationResults(bazelPackages: Set[Package]): Unit = { println("Persisting transformation") objectMapper.writeValue(transformedFile, bazelPackages) } def readTransformationResults(): Set[Package] = { val collectionType = objectMapper.getTypeFactory.constructCollectionType(classOf[util.Collection[Package]], classOf[Package]) val value: util.Collection[Package] = objectMapper.readValue(transformedFile, collectionType) val bazelPackages = value.asScala.toSet bazelPackages } def persistMavenClasspathResolution(sourceModules: SourceModules): Unit = { println("Persisting maven") objectMapper.writeValue(mavenCache.toFile, sourceModules) } def readTransMavenClasspathResolution(): SourceModules = { objectMapper.readValue[SourceModules](mavenCache.toFile, classOf[SourceModules]) } def mavenClasspathResolutionIsUnavailableOrOlderThan(amount: Int, unit: TemporalUnit): Boolean = !Files.isReadable(mavenCache) || lastModifiedMavenCache().toInstant.isBefore(Instant.now().minus(amount, unit)) private def lastModifiedMavenCache() = Files.readAttributes(mavenCache, classOf[BasicFileAttributes]).lastModifiedTime() }
Example 6
Source File: FileUtil.scala From mleap with Apache License 2.0 | 5 votes |
package ml.combust.bundle.util import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor} object FileUtil { def rmRf(path: Path): Unit = { Files.walkFileTree(path, 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 } }) } }
Example 7
Source File: IO.scala From perf_tester with Apache License 2.0 | 5 votes |
package org.perftester.process import java.nio.file.{Files, Path, SimpleFileVisitor, FileVisitResult} import java.nio.file.attribute.BasicFileAttributes import java.io.IOException object IO { def deleteDir(root: Path, deleteRoot: Boolean): Unit = { object deleter extends SimpleFileVisitor[Path] { override def visitFile(path: Path, attr: BasicFileAttributes): FileVisitResult = { Files.delete(path) FileVisitResult.CONTINUE } override def postVisitDirectory(path: Path, e: IOException): FileVisitResult = { if (e eq null) { if (deleteRoot || path != root) Files.delete(path) FileVisitResult.CONTINUE } else throw e // directory iteration failed } } Files.walkFileTree(root, deleter) } def jarsIn(path: Path): Seq[Path] = Files .walk(path) .toArray() .map(_.asInstanceOf[Path].toAbsolutePath) .toList .filter(_.getFileName.toString.endsWith(".jar")) def listSourcesIn(path: Path): List[Path] = { def isSource(p: Path) = { val name = p.getFileName.toString name.endsWith(".scala") || name.endsWith(".java") } val maxDepth = 557 Files .walk(path, maxDepth) .toArray .map(_.asInstanceOf[Path].toAbsolutePath) .filter(isSource) .toList } }
Example 8
Source File: Utils.scala From perf_tester with Apache License 2.0 | 5 votes |
package org.perftester import java.io.IOException import java.nio.file._ import java.nio.file.attribute.{BasicFileAttributes, FileTime} import java.time.Instant import java.util import ammonite.ops.{Path => aPath} object Utils { def lastChangedDate(path: aPath): (Instant, String) = lastChangedDate(path.toNIO) def lastChangedDate(path: Path): (Instant, String) = { var latest = Files.getLastModifiedTime(path) var at = path.toString object walker extends SimpleFileVisitor[Path] { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { val thisTime = attrs.lastModifiedTime() if (thisTime.compareTo(latest) > 0) { at = file.toString latest = thisTime } FileVisitResult.CONTINUE } override def preVisitDirectory(dir: Path, attrs: BasicFileAttributes): FileVisitResult = { if (dir.getFileName.toString == "intellij") FileVisitResult.SKIP_SUBTREE else FileVisitResult.CONTINUE } } Files.walkFileTree(path, util.EnumSet.noneOf(classOf[FileVisitOption]), Int.MaxValue, walker) (latest.toInstant, at) } def deleteDir(scalaPackDir: Path) = { if (Files.exists(scalaPackDir)) { println(s"delete pack dir $scalaPackDir") Files.walkFileTree(scalaPackDir, fileDeleter) } else { println(s"pack dir $scalaPackDir doesnt exist") } } private object fileDeleter extends SimpleFileVisitor[Path] { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { println(s"delete file $file") Files.delete(file) FileVisitResult.CONTINUE } override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { println(s"delete dir $dir") Files.delete(dir) FileVisitResult.CONTINUE } } def copy(source: Path, target: Path): Unit = { class Copier(source: Path, target: Path) extends SimpleFileVisitor[Path] { override def preVisitDirectory(dir: Path, attrs: BasicFileAttributes): FileVisitResult = { val targetDir = target.resolve(source.relativize(dir)) println(s"copy dir $dir -> $targetDir") Files.copy(dir, targetDir) FileVisitResult.CONTINUE } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { val targetFile = target.resolve(source.relativize(file)) println(s"copy file $file -> $targetFile") Files.copy(file, targetFile) FileVisitResult.CONTINUE } } Files.walkFileTree(source, new Copier(source, target)) } def touch(path: Path): Unit = { if (Files.exists(path)) Files.setLastModifiedTime(path, FileTime.from(Instant.now)) else Files.createFile(path) } }
Example 9
Source File: ZipArchive.scala From codepropertygraph with Apache License 2.0 | 5 votes |
package io.shiftleft.codepropertygraph.cpgloading import java.io.Closeable import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileSystem, FileSystems, FileVisitResult, Files, Path, Paths, SimpleFileVisitor} import java.util.{Collection => JCollection} import scala.collection.mutable.ArrayBuffer import scala.jdk.CollectionConverters._ class ZipArchive(inputFile: String) extends Closeable { private val zipFileSystem: FileSystem = FileSystems.newFileSystem(Paths.get(inputFile), null) private def root: Path = zipFileSystem.getRootDirectories.iterator.next private def walk(rootPath: Path): Seq[Path] = { val entries = ArrayBuffer[Path]() Files.walkFileTree( rootPath, new SimpleFileVisitor[Path]() { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { if (attrs.isRegularFile) entries += file FileVisitResult.CONTINUE } } ) entries.toSeq } def entries: Seq[Path] = walk(root) def getFileEntries: JCollection[Path] = entries.asJava override def close(): Unit = zipFileSystem.close() }
Example 10
Source File: File.scala From docspell with GNU General Public License v3.0 | 5 votes |
package docspell.common import java.io.IOException import java.nio.file._ import java.nio.file.attribute.BasicFileAttributes import java.util.concurrent.atomic.AtomicInteger import scala.jdk.CollectionConverters._ import cats.effect._ import cats.implicits._ import fs2.Stream object File { def mkDir[F[_]: Sync](dir: Path): F[Path] = Sync[F].delay(Files.createDirectories(dir)) def mkTempDir[F[_]: Sync](parent: Path, prefix: String): F[Path] = mkDir(parent).map(p => Files.createTempDirectory(p, prefix)) def mkTempFile[F[_]: Sync]( parent: Path, prefix: String, suffix: Option[String] = None ): F[Path] = mkDir(parent).map(p => Files.createTempFile(p, prefix, suffix.orNull)) def deleteDirectory[F[_]: Sync](dir: Path): F[Int] = Sync[F].delay { val count = new AtomicInteger(0) Files.walkFileTree( dir, new SimpleFileVisitor[Path]() { override def visitFile( file: Path, attrs: BasicFileAttributes ): FileVisitResult = { Files.deleteIfExists(file) count.incrementAndGet() FileVisitResult.CONTINUE } override def postVisitDirectory(dir: Path, e: IOException): FileVisitResult = Option(e) match { case Some(ex) => throw ex case None => Files.deleteIfExists(dir) FileVisitResult.CONTINUE } } ) count.get } def exists[F[_]: Sync](file: Path): F[Boolean] = Sync[F].delay(Files.exists(file)) def existsNonEmpty[F[_]: Sync](file: Path, minSize: Long = 0): F[Boolean] = Sync[F].delay(Files.exists(file) && Files.size(file) > minSize) def deleteFile[F[_]: Sync](file: Path): F[Unit] = Sync[F].delay(Files.deleteIfExists(file)).map(_ => ()) def delete[F[_]: Sync](path: Path): F[Int] = if (Files.isDirectory(path)) deleteDirectory(path) else deleteFile(path).map(_ => 1) def withTempDir[F[_]: Sync](parent: Path, prefix: String): Resource[F, Path] = Resource.make(mkTempDir(parent, prefix))(p => delete(p).map(_ => ())) def listFiles[F[_]: Sync](pred: Path => Boolean, dir: Path): F[List[Path]] = Sync[F].delay { val javaList = Files.list(dir).filter(p => pred(p)).collect(java.util.stream.Collectors.toList()) javaList.asScala.toList.sortBy(_.getFileName.toString) } def readAll[F[_]: Sync: ContextShift]( file: Path, blocker: Blocker, chunkSize: Int ): Stream[F, Byte] = fs2.io.file.readAll(file, blocker, chunkSize) def readText[F[_]: Sync: ContextShift](file: Path, blocker: Blocker): F[String] = readAll[F](file, blocker, 8192).through(fs2.text.utf8Decode).compile.foldMonoid }
Example 11
Source File: TemporaryDirectoryContext.scala From cluster-broccoli with Apache License 2.0 | 5 votes |
package de.frosner.broccoli.util import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, FileVisitor, Files, Path} import org.specs2.execute.{AsResult, Result} import org.specs2.specification.ForEach trait TemporaryDirectoryContext extends ForEach[Path] { override protected def foreach[R: AsResult](f: (Path) => R): Result = { val tempDirectory = Files.createTempDirectory(getClass.getName) try { AsResult(f(tempDirectory)) } finally { Files.walkFileTree( tempDirectory, new FileVisitor[Path] { override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { Files.delete(dir) FileVisitResult.CONTINUE } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } override def visitFileFailed(file: Path, exc: IOException): FileVisitResult = throw exc override def preVisitDirectory(dir: Path, attrs: BasicFileAttributes): FileVisitResult = FileVisitResult.CONTINUE } ) } } }
Example 12
Source File: CopyRecursively.scala From scastie with Apache License 2.0 | 5 votes |
import java.nio.file.{Path, Files, SimpleFileVisitor, FileVisitResult} import java.nio.file.attribute.BasicFileAttributes object CopyRecursively { def apply(source: Path, destination: Path, directoryFilter: (Path, Int) => Boolean): Unit = { Files.walkFileTree( source, new CopyVisitor(source, destination, directoryFilter) ) } } class CopyVisitor(source: Path, destination: Path, directoryFilter: (Path, Int) => Boolean) extends SimpleFileVisitor[Path] { private def relative(subPath: Path): Path = destination.resolve(source.relativize(subPath)) private def pathDepth(dir: Path): Int = { dir.getNameCount - source.getNameCount - 1 } override def preVisitDirectory( dir: Path, attrs: BasicFileAttributes ): FileVisitResult = { def copy(): FileVisitResult = { Files.createDirectories(relative(dir)) FileVisitResult.CONTINUE } if (dir == source) { copy() } else if (directoryFilter(source.relativize(dir), pathDepth(dir))) { copy() } else { FileVisitResult.SKIP_SUBTREE } } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.copy(file, relative(file)) FileVisitResult.CONTINUE } }
Example 13
Source File: FileHelper.scala From bahir with Apache License 2.0 | 5 votes |
package org.apache.bahir.utils import java.io.{File, IOException} import java.nio.file.{Files, FileVisitResult, Path, SimpleFileVisitor} import java.nio.file.attribute.BasicFileAttributes object FileHelper extends Logging { def deleteFileQuietly(file: File): Path = { Files.walkFileTree(file.toPath, new SimpleFileVisitor[Path]() { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { try { Files.delete(file) } catch { case t: Throwable => log.warn("Failed to delete", t) } FileVisitResult.CONTINUE } override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { try { Files.delete(dir) } catch { case t: Throwable => log.warn("Failed to delete", t) } FileVisitResult.CONTINUE } }) } }
Example 14
Source File: ClusterSpec.scala From akka-cqrs with Apache License 2.0 | 5 votes |
package test.support import java.io.{File, IOException} import java.nio.file._ import java.nio.file.attribute.BasicFileAttributes import akka.actor.{ActorIdentity, Identify, Props} import akka.cluster.Cluster import akka.persistence.Persistence import akka.persistence.journal.leveldb.{SharedLeveldbJournal, SharedLeveldbStore} import akka.remote.testconductor.RoleName import akka.remote.testkit.MultiNodeSpec import akka.testkit.ImplicitSender import scala.util.control.NonFatal abstract class ClusterSpec extends MultiNodeSpec(ClusterConfig) with SbtMultiNodeSpec with ImplicitSender { import ClusterConfig._ implicit val logger = system.log def initialParticipants = roles.size def deleteDirectory(path: Path): Unit = if (Files.exists(path)) { Files.walkFileTree(path, new SimpleFileVisitor[Path] { def deleteAndContinue(file: Path): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = deleteAndContinue(file) override def visitFileFailed(file: Path, exc: IOException): FileVisitResult = deleteAndContinue(file) override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { Option(exc).fold(deleteAndContinue(dir)) { case NonFatal(e) => throw e } } }) } val storageLocations = List( "akka.persistence.journal.leveldb.dir", "akka.persistence.journal.leveldb-shared.store.dir", "akka.persistence.snapshot-store.local.dir").map(s => new File(system.settings.config.getString(s))) override protected def atStartup() { on(node1) { storageLocations.foreach(dir => deleteDirectory(dir.toPath)) } } override protected def afterTermination() { on(node1) { storageLocations.foreach(dir => deleteDirectory(dir.toPath)) } } def join(startOn: RoleName, joinTo: RoleName) { on(startOn) { Cluster(system) join node(joinTo).address } enterBarrier(startOn.name + "-joined") } def setupSharedJournal() { Persistence(system) on(node1) { system.actorOf(Props[SharedLeveldbStore], "store") } enterBarrier("persistence-started") system.actorSelection(node(node1) / "user" / "store") ! Identify(None) val sharedStore = expectMsgType[ActorIdentity].ref.get SharedLeveldbJournal.setStore(sharedStore, system) enterBarrier("after-1") } def joinCluster() { join(startOn = node1, joinTo = node1) join(startOn = node2, joinTo = node1) enterBarrier("after-2") } def on(nodes: RoleName*)(thunk: => Unit): Unit = { runOn(nodes: _*)(thunk) } }
Example 15
Source File: Main.scala From scalajs-highcharts with MIT License | 5 votes |
package com.karasiq.highcharts.generator import java.io.{BufferedWriter, FileOutputStream, OutputStreamWriter, PrintWriter} import java.nio.file._ import java.nio.file.attribute.BasicFileAttributes import scala.util.control.Exception import scalaj.http.{Http, HttpOptions} import com.karasiq.highcharts.generator.writers.{ScalaClassWriter, ScalaJsClassBuilder} case class HighchartsApiDoc(library: String) { private val defaultPackage = System.getProperty(s"highcharts-generator.$library.package", s"com.$library") private def httpGet(url: String): List[ConfigurationObject] = { val page = Http.get(url) .header("User-Agent", "Mozilla/5.0 (X11; OpenBSD amd64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.81 Safari/537.36") .header("Accept", "application/json") .options(HttpOptions.connTimeout(10000), HttpOptions.readTimeout(10000)) val json = page.asString ConfigurationObject.fromJson(json) } private def writeFiles(pkg: String, configs: List[ConfigurationObject], rootObject: Option[String] = None): Unit = { val header = s""" |package $pkg | |import scalajs.js, js.`|` |import com.highcharts.CleanJsObject |import com.highcharts.HighchartsUtils._ | |""".stripMargin val outputDir = Paths.get(System.getProperty("highcharts-generator.output", "src/main/scala"), pkg.split("\\."):_*) Files.createDirectories(outputDir) // Remove all files Files.walkFileTree(outputDir, new SimpleFileVisitor[Path] { override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } }) val classes = new ScalaJsClassBuilder().parse(configs, rootObject) val classWriter = new ScalaClassWriter classes.foreach { scalaJsClass ⇒ val file = outputDir.resolve(scalaJsClass.scalaName + ".scala") println(s"Writing $file...") val writer = new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file.toFile, true), "UTF-8"))) Exception.allCatch.andFinally(writer.close()) { if (Files.size(file) == 0) { writer.print(header) } classWriter.writeClass(scalaJsClass) { line ⇒ writer.println(line) } writer.flush() } } } def writeConfigs(): Unit = { val configs = httpGet(s"https://api.highcharts.com/$library/dump.json") writeFiles(s"$defaultPackage.config", configs, Some(s"${library.capitalize}Config")) } def writeApis(): Unit = { val configs = httpGet(s"https://api.highcharts.com/$library/object/dump.json") writeFiles(s"$defaultPackage.api", configs) } def writeAll(): Unit = { // TODO: https://github.com/highcharts/highcharts/issues/7227 writeConfigs() // writeApis() // TODO: 404 } } object Main extends App { HighchartsApiDoc("highcharts").writeAll() HighchartsApiDoc("highstock").writeAll() HighchartsApiDoc("highmaps").writeAll() }
Example 16
Source File: TestHelpers.scala From Waves with MIT License | 5 votes |
package com.wavesplatform import java.io.IOException import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, Files, Path, SimpleFileVisitor} import com.wavesplatform.account.Address import com.wavesplatform.features.BlockchainFeatures import com.wavesplatform.settings.{FunctionalitySettings, GenesisSettings, GenesisTransactionSettings, WavesSettings} import scala.concurrent.duration._ object TestHelpers { def genesisSettings(balances: Map[Address, Long], blockTimestamp: Long = System.currentTimeMillis()): GenesisSettings = { val totalAmount = balances.values.sum val transactions = balances.map { case (account, amount) => GenesisTransactionSettings(account.stringRepr, amount) }.toSeq GenesisSettings(blockTimestamp, blockTimestamp, totalAmount, None, transactions, 1000, 60.seconds) } def enableNG(settings: FunctionalitySettings): FunctionalitySettings = settings.copy( blockVersion3AfterHeight = 0, preActivatedFeatures = settings.preActivatedFeatures ++ Map(BlockchainFeatures.NG.id -> 0) ) def enableNG(settings: WavesSettings): WavesSettings = settings.copy( blockchainSettings = settings.blockchainSettings.copy(functionalitySettings = enableNG(settings.blockchainSettings.functionalitySettings)) ) def deleteRecursively(path: Path): Unit = Files.walkFileTree( path, new SimpleFileVisitor[Path] { override def postVisitDirectory(dir: Path, exc: IOException): FileVisitResult = { Option(exc).fold { Files.delete(dir) FileVisitResult.CONTINUE }(throw _) } override def visitFile(file: Path, attrs: BasicFileAttributes): FileVisitResult = { Files.delete(file) FileVisitResult.CONTINUE } } ) }