override fun writeWithFormattingTo()

in artist-core/src/main/kotlin/com/uber/artist/JavaFormattingFileWriter.kt [40:71]


  override fun writeWithFormattingTo(directory: File) {
    val directoryPath = directory.toPath()
    checkArgument(Files.notExists(directoryPath) || Files.isDirectory(directoryPath),
        "path %s exists but is not a directoryPath.", directoryPath)
    var outputDirectory = directoryPath
    if (!packageName.isEmpty()) {
      for (packageComponent in packageName.split(packageSplitRegex)
          .filter { !it.isEmpty() }.toTypedArray()) {
        outputDirectory = outputDirectory.resolve(packageComponent)
      }
      Files.createDirectories(outputDirectory)
    }

    val typeSpec = typeSpecBuilder.build()
    val outputPath = outputDirectory.resolve(typeSpec.name + ".java")
    try {
      OutputStreamWriter(Files.newOutputStream(outputPath), UTF_8).use { writer ->
        val stringBuilder = StringBuilder(defaultFileSize)
        outputFile.writeTo(stringBuilder)
        formatter.formatSource(
            CharSource.wrap(stringBuilder),
            object : CharSink() {
              @Throws(IOException::class)
              override fun openStream(): Writer {
                return writer
              }
            })
      }
    } catch (e: FormatterException) {
      throw IOException("Error formatting " + outputPath.fileName.toString(), e)
    }
  }