diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 2ae87d1..480f6d5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -18,6 +18,8 @@ jobs: - uses: actions/checkout@v4 with: submodules: recursive + - name: Check style + run: ./gradlew spotlessCheck - name: Build run: ./gradlew build - name: Test @@ -37,6 +39,8 @@ jobs: tag_name="${{ github.ref_name }}" python ./tools/version_validator.py "$tag_name" echo "tag_name=$tag_name" >> $GITHUB_OUTPUT + - name: Check style + run: ./gradlew spotlessCheck - name: Build run: ./gradlew -PVERSION=${{ steps.version.outputs.tag_name }} build - name: Test diff --git a/build.gradle.kts b/build.gradle.kts index 658c3f6..89ab892 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,12 +1,13 @@ import io.gitlab.arturbosch.detekt.Detekt -import java.util.Properties import java.io.FileInputStream import java.io.IOException +import java.util.Properties import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { alias(libs.plugins.android.library) alias(libs.plugins.detekt) + alias(libs.plugins.diffplug.spotless) alias(libs.plugins.jetbrains.kotlin.android) alias(libs.plugins.jreleaser) `maven-publish` @@ -17,10 +18,12 @@ val keystorePropertiesFile = rootProject.file("keystore.properties") val keystoreProperties = Properties() try { - keystoreProperties.load(FileInputStream(keystorePropertiesFile)) + keystoreProperties.load(FileInputStream(keystorePropertiesFile)) } catch (ignored: IOException) { - if (project.hasProperty("centralUsername")) keystoreProperties["centralUsername"] = property("centralUsername") - if (project.hasProperty("centralPassword")) keystoreProperties["centralPassword"] = property("centralPassword") + if (project.hasProperty("centralUsername")) + keystoreProperties["centralUsername"] = property("centralUsername") + if (project.hasProperty("centralPassword")) + keystoreProperties["centralPassword"] = property("centralPassword") } android { @@ -33,8 +36,8 @@ android { // The version must be of the form "X.Y.Z[-b][-SNAPSHOT]" version = - if (project.hasProperty("VERSION")) project.property("VERSION").toString() - else "1.0.1-SNAPSHOT" + if (project.hasProperty("VERSION")) project.property("VERSION").toString() + else "1.0.1-SNAPSHOT" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -48,30 +51,34 @@ android { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } - + testOptions { unitTests { isIncludeAndroidResources = true } } - publishing { - singleVariant("release") {} - } + publishing { singleVariant("release") {} } } -kotlin { - compilerOptions { - jvmTarget.set(JvmTarget.JVM_17) - } -} +kotlin { compilerOptions { jvmTarget.set(JvmTarget.JVM_17) } } -detekt { - config.setFrom("$projectDir/config/detekt.yml") +spotless { + kotlin { + target("**/*.kts", "**/*.kt") + // Versions can be monitored: https://github.com/facebook/ktfmt/releases + ktfmt("0.58") + } + json { + target("**/*.json") + gson().indentWithSpaces(4) + } } +detekt { config.setFrom("$projectDir/config/detekt.yml") } + tasks.withType().configureEach { - reports { - html.required.set(true) - sarif.required.set(true) - md.required.set(true) - } + reports { + html.required.set(true) + sarif.required.set(true) + md.required.set(true) + } } tasks.withType { @@ -99,98 +106,94 @@ dependencies { androidTestImplementation(libs.androidx.espresso.core) } -if (keystoreProperties.containsKey("centralUsername") && keystoreProperties.containsKey("centralPassword")) { - afterEvaluate { - publishing { - publications { - create("release") { - from(components["release"]) - - pom { - name = "Khronicle" - packaging = "aar" - description = "An SLF4J backend for Android." - url = "https://github.com/esri/khronicle" - - scm { - connection = "scm:git:https://github.com/esri/khronicle" - developerConnection = "scm:git:https://github.com/esri/khronicle" - url = "https://github.com/esri/khronicle" - } - - licenses { - license { - name = "Apache License 2.0" - url = "https://spdx.org/licenses/Apache-2.0.html" - } - } - - developers { - developer { - id = "award" - name = "Adam Ward" - email = "award@esri.com" - } - developer { - id = "jonasvautherin" - name = "Jonas Vautherin" - email = "jvautherin@esri.com" - } - } - } - } +if ( + keystoreProperties.containsKey("centralUsername") && + keystoreProperties.containsKey("centralPassword") +) { + afterEvaluate { + publishing { + publications { + create("release") { + from(components["release"]) + + pom { + name = "Khronicle" + packaging = "aar" + description = "An SLF4J backend for Android." + url = "https://github.com/esri/khronicle" + + scm { + connection = "scm:git:https://github.com/esri/khronicle" + developerConnection = "scm:git:https://github.com/esri/khronicle" + url = "https://github.com/esri/khronicle" } - repositories { - maven { - url = uri(layout.buildDirectory.dir("target/staging-deploy")) - } + + licenses { + license { + name = "Apache License 2.0" + url = "https://spdx.org/licenses/Apache-2.0.html" + } + } + + developers { + developer { + id = "award" + name = "Adam Ward" + email = "award@esri.com" + } + developer { + id = "jonasvautherin" + name = "Jonas Vautherin" + email = "jvautherin@esri.com" + } } + } } + } + repositories { maven { url = uri(layout.buildDirectory.dir("target/staging-deploy")) } } } + } - jreleaser { - signing { - setActive("ALWAYS") - armored.set(true) - setMode("COMMAND") + jreleaser { + signing { + setActive("ALWAYS") + armored.set(true) + setMode("COMMAND") - command { - keyName.set("C8B1511EF991537875A649517D5F7A7C9542C299") - } + command { keyName.set("C8B1511EF991537875A649517D5F7A7C9542C299") } + } + deploy { + release { + github { + skipRelease = true + skipTag = true } - deploy { - release { - github { - skipRelease = true - skipTag = true - } - } - maven { - mavenCentral { - create("sonatype") { - verifyPom = false - setActive("RELEASE") - username = keystoreProperties["centralUsername"] as String - password = keystoreProperties["centralPassword"] as String - url = "https://central.sonatype.com/api/v1/publisher" - stagingRepository("build/target/staging-deploy") - } - } - nexus2 { - create("snapshot-deploy") { - verifyPom = false - setActive("SNAPSHOT") - snapshotUrl.set("https://central.sonatype.com/repository/maven-snapshots") - url = "https://central.sonatype.com/repository/maven-snapshots" - applyMavenCentralRules = true - snapshotSupported = true - username = keystoreProperties["centralUsername"] as String - password = keystoreProperties["centralPassword"] as String - stagingRepository("build/target/staging-deploy") - } - } - } + } + maven { + mavenCentral { + create("sonatype") { + verifyPom = false + setActive("RELEASE") + username = keystoreProperties["centralUsername"] as String + password = keystoreProperties["centralPassword"] as String + url = "https://central.sonatype.com/api/v1/publisher" + stagingRepository("build/target/staging-deploy") + } + } + nexus2 { + create("snapshot-deploy") { + verifyPom = false + setActive("SNAPSHOT") + snapshotUrl.set("https://central.sonatype.com/repository/maven-snapshots") + url = "https://central.sonatype.com/repository/maven-snapshots" + applyMavenCentralRules = true + snapshotSupported = true + username = keystoreProperties["centralUsername"] as String + password = keystoreProperties["centralPassword"] as String + stagingRepository("build/target/staging-deploy") + } } + } } + } } - diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 40f1661..48fd851 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,6 +13,7 @@ material = "1.12.0" mockkVersion = "1.14.5" robolectric = "4.15.1" slf4jApi = "2.0.17" +spotlessPlugin = "7.2.1" [libraries] android-gradle-plugin = { group = "com.android.tools.build", name = "gradle", version.ref = "agp" } @@ -30,6 +31,7 @@ slf4j-api = { group = "org.slf4j", name = "slf4j-api", version.ref = "slf4jApi"} [plugins] android-library = { id = "com.android.library", version.ref = "agp" } detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" } +diffplug-spotless = { id = "com.diffplug.spotless", version.ref = "spotlessPlugin" } jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } jreleaser = { id = "org.jreleaser", version.ref = "jreleaser-plugin" } diff --git a/src/main/java/com/esri/logger/khronicle/ConfigurationParser.kt b/src/main/java/com/esri/logger/khronicle/ConfigurationParser.kt index af331f3..df6169a 100644 --- a/src/main/java/com/esri/logger/khronicle/ConfigurationParser.kt +++ b/src/main/java/com/esri/logger/khronicle/ConfigurationParser.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -102,9 +102,10 @@ class ConfigurationParser { when (parser.name) { TAG_ENCODER -> handleEncoder(appender) else -> { - val property = kClass.memberProperties - .filterIsInstance>() - .find { it.name == parser.name } + val property = + kClass.memberProperties.filterIsInstance>().find { + it.name == parser.name + } if (property != null) { val contents = readText() @@ -139,9 +140,7 @@ class ConfigurationParser { private fun handleRoot() = handleTag(parser, TAG_ROOT) { - val root = checkNotNull(loggers["root"]) { - "Root config should be pre-initialized" - } + val root = checkNotNull(loggers["root"]) { "Root config should be pre-initialized" } parser.getAttributeValue(null, ATTR_LEVEL)?.let { level -> root.setLevel(level) } @@ -164,9 +163,10 @@ class ConfigurationParser { private fun handleLogger() = handleTag(parser, TAG_LOGGER) { - val name = requireNotNull(parser.getAttributeValue(null, ATTR_NAME)) { - "Logger configuration requires name attribute" - } + val name = + requireNotNull(parser.getAttributeValue(null, ATTR_NAME)) { + "Logger configuration requires name attribute" + } val logger = LoggerConfig() loggers[name] = logger @@ -209,9 +209,7 @@ class ConfigurationParser { } private fun skip() { - check(parser.eventType == XmlPullParser.START_TAG) { - "The element must start with a START_TAG" - } + check(parser.eventType == XmlPullParser.START_TAG) { "The element must start with a START_TAG" } var depth = 1 while (depth != 0) { diff --git a/src/main/java/com/esri/logger/khronicle/FileExtensions.kt b/src/main/java/com/esri/logger/khronicle/FileExtensions.kt index fec5474..1a7dc2d 100644 --- a/src/main/java/com/esri/logger/khronicle/FileExtensions.kt +++ b/src/main/java/com/esri/logger/khronicle/FileExtensions.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -37,7 +37,8 @@ internal fun File.incrementNumberedFileName(namePrefix: String, extension: Strin indexString.isDigitsOnly() -> indexString.toInt() + 1 else -> throw IllegalArgumentException( - "Input file did not follow required prefix#extension pattern") + "Input file did not follow required prefix#extension pattern" + ) } val newFile = File(path.removeSuffix(name), "$namePrefix$newIndex$extension") diff --git a/src/main/java/com/esri/logger/khronicle/LoggerBuilder.kt b/src/main/java/com/esri/logger/khronicle/LoggerBuilder.kt index 34e904a..83a44fa 100644 --- a/src/main/java/com/esri/logger/khronicle/LoggerBuilder.kt +++ b/src/main/java/com/esri/logger/khronicle/LoggerBuilder.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/LoggerFactory.kt b/src/main/java/com/esri/logger/khronicle/LoggerFactory.kt index 28bd48c..05fdcbf 100644 --- a/src/main/java/com/esri/logger/khronicle/LoggerFactory.kt +++ b/src/main/java/com/esri/logger/khronicle/LoggerFactory.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/LoggerImpl.kt b/src/main/java/com/esri/logger/khronicle/LoggerImpl.kt index f4ed55e..cc8f1d2 100644 --- a/src/main/java/com/esri/logger/khronicle/LoggerImpl.kt +++ b/src/main/java/com/esri/logger/khronicle/LoggerImpl.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -37,7 +37,7 @@ class LoggerImpl(private val loggerName: String) : Logger { format: String?, arguments: MutableList? = null, marker: Marker? = null, - throwable: Throwable? = null + throwable: Throwable? = null, ) { if (format == null) return if (level > logLevel) return @@ -98,14 +98,16 @@ class LoggerImpl(private val loggerName: String) : Logger { level = Level.TRACE, format = format, marker = marker, - arguments = mutableListOf(arg1, arg2)) + arguments = mutableListOf(arg1, arg2), + ) override fun trace(marker: Marker?, format: String?, vararg arguments: Any?) = log( level = Level.TRACE, format = format, marker = marker, - arguments = arguments.toMutableList()) + arguments = arguments.toMutableList(), + ) override fun trace(marker: Marker?, msg: String?, t: Throwable?) = log(level = Level.TRACE, format = msg, marker = marker, throwable = t) @@ -144,14 +146,16 @@ class LoggerImpl(private val loggerName: String) : Logger { level = Level.DEBUG, format = format, marker = marker, - arguments = mutableListOf(arg1, arg2)) + arguments = mutableListOf(arg1, arg2), + ) override fun debug(marker: Marker?, format: String?, vararg arguments: Any?) = log( level = Level.DEBUG, format = format, marker = marker, - arguments = arguments.toMutableList()) + arguments = arguments.toMutableList(), + ) override fun debug(marker: Marker?, msg: String?, t: Throwable?) = log(level = Level.DEBUG, format = msg, marker = marker, throwable = t) @@ -190,14 +194,16 @@ class LoggerImpl(private val loggerName: String) : Logger { level = Level.INFO, format = format, marker = marker, - arguments = mutableListOf(arg1, arg2)) + arguments = mutableListOf(arg1, arg2), + ) override fun info(marker: Marker?, format: String?, vararg arguments: Any?) = log( level = Level.INFO, format = format, marker = marker, - arguments = arguments.toMutableList()) + arguments = arguments.toMutableList(), + ) override fun info(marker: Marker?, msg: String?, t: Throwable?) = log(level = Level.INFO, format = msg, marker = marker, throwable = t) @@ -236,14 +242,16 @@ class LoggerImpl(private val loggerName: String) : Logger { level = Level.WARN, format = format, marker = marker, - arguments = mutableListOf(arg1, arg2)) + arguments = mutableListOf(arg1, arg2), + ) override fun warn(marker: Marker?, format: String?, vararg arguments: Any?) = log( level = Level.WARN, format = format, marker = marker, - arguments = arguments.toMutableList()) + arguments = arguments.toMutableList(), + ) override fun warn(marker: Marker?, msg: String?, t: Throwable?) = log(level = Level.WARN, format = msg, marker = marker, throwable = t) @@ -282,14 +290,16 @@ class LoggerImpl(private val loggerName: String) : Logger { level = Level.ERROR, format = format, marker = marker, - arguments = mutableListOf(arg1, arg2)) + arguments = mutableListOf(arg1, arg2), + ) override fun error(marker: Marker?, format: String?, vararg arguments: Any?) = log( level = Level.ERROR, format = format, marker = marker, - arguments = arguments.toMutableList()) + arguments = arguments.toMutableList(), + ) override fun error(marker: Marker?, msg: String?, t: Throwable?) = log(level = Level.ERROR, format = msg, marker = marker, throwable = t) diff --git a/src/main/java/com/esri/logger/khronicle/LoggingEvent.kt b/src/main/java/com/esri/logger/khronicle/LoggingEvent.kt index 3956f73..e1bfad5 100644 --- a/src/main/java/com/esri/logger/khronicle/LoggingEvent.kt +++ b/src/main/java/com/esri/logger/khronicle/LoggingEvent.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/ServiceProvider.kt b/src/main/java/com/esri/logger/khronicle/ServiceProvider.kt index 7095a80..b96f760 100644 --- a/src/main/java/com/esri/logger/khronicle/ServiceProvider.kt +++ b/src/main/java/com/esri/logger/khronicle/ServiceProvider.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/android/AndroidAPIProvider.kt b/src/main/java/com/esri/logger/khronicle/android/AndroidAPIProvider.kt index e053182..c7e3eba 100644 --- a/src/main/java/com/esri/logger/khronicle/android/AndroidAPIProvider.kt +++ b/src/main/java/com/esri/logger/khronicle/android/AndroidAPIProvider.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/android/ContextProvider.kt b/src/main/java/com/esri/logger/khronicle/android/ContextProvider.kt index f80e658..929e6b0 100644 --- a/src/main/java/com/esri/logger/khronicle/android/ContextProvider.kt +++ b/src/main/java/com/esri/logger/khronicle/android/ContextProvider.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -32,7 +32,7 @@ class ContextProvider : ContentProvider() { projection: Array?, selection: String?, selectionArgs: Array?, - sortOrder: String? + sortOrder: String?, ): Cursor? = null override fun getType(uri: Uri): String? = null @@ -45,6 +45,6 @@ class ContextProvider : ContentProvider() { uri: Uri, values: ContentValues?, selection: String?, - selectionArgs: Array? + selectionArgs: Array?, ): Int = 0 } diff --git a/src/main/java/com/esri/logger/khronicle/appender/Appender.kt b/src/main/java/com/esri/logger/khronicle/appender/Appender.kt index 0c9e1db..68f51b8 100644 --- a/src/main/java/com/esri/logger/khronicle/appender/Appender.kt +++ b/src/main/java/com/esri/logger/khronicle/appender/Appender.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/appender/LogcatAppender.kt b/src/main/java/com/esri/logger/khronicle/appender/LogcatAppender.kt index fd48bd8..27b2031 100644 --- a/src/main/java/com/esri/logger/khronicle/appender/LogcatAppender.kt +++ b/src/main/java/com/esri/logger/khronicle/appender/LogcatAppender.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/appender/PrintlnAppender.kt b/src/main/java/com/esri/logger/khronicle/appender/PrintlnAppender.kt index cfda185..7b67c47 100644 --- a/src/main/java/com/esri/logger/khronicle/appender/PrintlnAppender.kt +++ b/src/main/java/com/esri/logger/khronicle/appender/PrintlnAppender.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/appender/RollingFileAppender.kt b/src/main/java/com/esri/logger/khronicle/appender/RollingFileAppender.kt index ea724fc..834c414 100644 --- a/src/main/java/com/esri/logger/khronicle/appender/RollingFileAppender.kt +++ b/src/main/java/com/esri/logger/khronicle/appender/RollingFileAppender.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/encoder/Encoder.kt b/src/main/java/com/esri/logger/khronicle/encoder/Encoder.kt index c903ce9..8c4a78f 100644 --- a/src/main/java/com/esri/logger/khronicle/encoder/Encoder.kt +++ b/src/main/java/com/esri/logger/khronicle/encoder/Encoder.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/main/java/com/esri/logger/khronicle/encoder/PatternEncoder.kt b/src/main/java/com/esri/logger/khronicle/encoder/PatternEncoder.kt index 7983937..7280a75 100644 --- a/src/main/java/com/esri/logger/khronicle/encoder/PatternEncoder.kt +++ b/src/main/java/com/esri/logger/khronicle/encoder/PatternEncoder.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/test/java/com/esri/logger/khronicle/ConfigurationParserTest.kt b/src/test/java/com/esri/logger/khronicle/ConfigurationParserTest.kt index 26932ec..636d36b 100644 --- a/src/test/java/com/esri/logger/khronicle/ConfigurationParserTest.kt +++ b/src/test/java/com/esri/logger/khronicle/ConfigurationParserTest.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -65,7 +65,8 @@ class ConfigurationParserTest { assertEquals( "The logging level should default to ${LoggerConfig.DEFAULT_LEVEL}", LoggerConfig.DEFAULT_LEVEL, - root?.level) + root?.level, + ) assertEquals("No appender should be added", 0, root?.appenders?.size) } @@ -80,7 +81,8 @@ class ConfigurationParserTest { assertEquals( "The logging level should default to ${LoggerConfig.DEFAULT_LEVEL}", LoggerConfig.DEFAULT_LEVEL, - root?.level) + root?.level, + ) } @Test @@ -123,14 +125,14 @@ class ConfigurationParserTest { fun parse_multipleAppendersAreSupported() { val testConfig = """ - - - - - - - " - """ + + + + + + + " + """ .trimIndent() .byteInputStream() @@ -146,16 +148,16 @@ class ConfigurationParserTest { fun parse_multipleLoggersAreSupported() { val testConfig = """ - - - + + + + + + - - - - - " - """ + + " + """ .trimIndent() .byteInputStream() @@ -165,10 +167,13 @@ class ConfigurationParserTest { val testLogger = configParser.loggers["my.test.logger"] assertEquals("Two loggers should be added", 2, configParser.loggers.size) assertThat( - "A TestAppender should be added to the root", root?.appenders?.first() is TestAppender) + "A TestAppender should be added to the root", + root?.appenders?.first() is TestAppender, + ) assertThat( "A TestAppender should be added to \"my.test.logger\"", - testLogger?.appenders?.first() is TestAppender) + testLogger?.appenders?.first() is TestAppender, + ) } @Test @@ -200,6 +205,7 @@ class ConfigurationParserTest { assertThat("A RollingFileAppender should be added", appender is RollingFileAppender) assertThat( "File appender should have filename set", - (appender as RollingFileAppender).file == "sample") + (appender as RollingFileAppender).file == "sample", + ) } } diff --git a/src/test/java/com/esri/logger/khronicle/FileExtensionsTest.kt b/src/test/java/com/esri/logger/khronicle/FileExtensionsTest.kt index 00b11ac..847150d 100644 --- a/src/test/java/com/esri/logger/khronicle/FileExtensionsTest.kt +++ b/src/test/java/com/esri/logger/khronicle/FileExtensionsTest.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -165,22 +165,28 @@ class FileExtensionsTest { assertThat( "File name expected to pass regex matcher", - File("log.txt").matchesNumberedFilePattern(filename, extension)) + File("log.txt").matchesNumberedFilePattern(filename, extension), + ) assertThat( "File name expected to pass regex matcher", - File("log1.txt").matchesNumberedFilePattern(filename, extension)) + File("log1.txt").matchesNumberedFilePattern(filename, extension), + ) assertThat( "File name expected to not pass regex matcher", - File("notlog.txt").matchesNumberedFilePattern(filename, extension) == false) + File("notlog.txt").matchesNumberedFilePattern(filename, extension) == false, + ) assertThat( "File name expected to not pass regex matcher", - File("lognot.txt").matchesNumberedFilePattern(filename, extension) == false) + File("lognot.txt").matchesNumberedFilePattern(filename, extension) == false, + ) assertThat( "File name expected to not pass regex matcher", - File("log.txtnot").matchesNumberedFilePattern(filename, extension) == false) + File("log.txtnot").matchesNumberedFilePattern(filename, extension) == false, + ) assertThat( "File name expected to not pass regex matcher", - File("log.nottxt").matchesNumberedFilePattern(filename, extension) == false) + File("log.nottxt").matchesNumberedFilePattern(filename, extension) == false, + ) } } diff --git a/src/test/java/com/esri/logger/khronicle/LoggerBuilderTest.kt b/src/test/java/com/esri/logger/khronicle/LoggerBuilderTest.kt index e7e09a0..29d0110 100644 --- a/src/test/java/com/esri/logger/khronicle/LoggerBuilderTest.kt +++ b/src/test/java/com/esri/logger/khronicle/LoggerBuilderTest.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/test/java/com/esri/logger/khronicle/LoggerImplTest.kt b/src/test/java/com/esri/logger/khronicle/LoggerImplTest.kt index 144b986..9f5db17 100644 --- a/src/test/java/com/esri/logger/khronicle/LoggerImplTest.kt +++ b/src/test/java/com/esri/logger/khronicle/LoggerImplTest.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -97,7 +97,10 @@ class LoggerImplTest { appender.output = { event -> assertEquals("There should be one argument", 1, event.arguments.size) assertEquals( - "The argument should be \"$expectedArgument\"", expectedArgument, event.arguments.first()) + "The argument should be \"$expectedArgument\"", + expectedArgument, + event.arguments.first(), + ) } logger.appenders.add(appender) @@ -117,9 +120,15 @@ class LoggerImplTest { appender.output = { event -> assertEquals("There should be two arguments", 2, event.arguments.size) assertEquals( - "The first argument should be \"$expectedArg1\"", expectedArg1, event.arguments.first()) + "The first argument should be \"$expectedArg1\"", + expectedArg1, + event.arguments.first(), + ) assertEquals( - "The second argument should be \"$expectedArg2\"", expectedArg2, event.arguments[1]) + "The second argument should be \"$expectedArg2\"", + expectedArg2, + event.arguments[1], + ) } logger.appenders.add(appender) @@ -141,9 +150,13 @@ class LoggerImplTest { assertEquals( "There should be one argument after throwable is moved to its expected param", 1, - event.arguments.size) + event.arguments.size, + ) assertEquals( - "The first argument should be \"$expectedArg1\"", expectedArg1, event.arguments.first()) + "The first argument should be \"$expectedArg1\"", + expectedArg1, + event.arguments.first(), + ) assertEquals("Throwable should be \"$expectedArg2\"", expectedArg2, event.throwable) } logger.appenders.add(appender) @@ -165,11 +178,20 @@ class LoggerImplTest { appender.output = { event -> assertEquals("There should be three arguments", 3, event.arguments.size) assertEquals( - "The first argument should be \"$expectedArg1\"", expectedArg1, event.arguments.first()) + "The first argument should be \"$expectedArg1\"", + expectedArg1, + event.arguments.first(), + ) assertEquals( - "The second argument should be \"$expectedArg2\"", expectedArg2, event.arguments[1]) + "The second argument should be \"$expectedArg2\"", + expectedArg2, + event.arguments[1], + ) assertEquals( - "The third argument should be \"$expectedArg3\"", expectedArg3, event.arguments[2]) + "The third argument should be \"$expectedArg3\"", + expectedArg3, + event.arguments[2], + ) } logger.appenders.add(appender) @@ -192,11 +214,18 @@ class LoggerImplTest { assertEquals( "There should be two arguments after throwable is moved to its expected param", 2, - event.arguments.size) + event.arguments.size, + ) assertEquals( - "The first argument should be \"$expectedArg1\"", expectedArg1, event.arguments.first()) + "The first argument should be \"$expectedArg1\"", + expectedArg1, + event.arguments.first(), + ) assertEquals( - "The second argument should be \"$expectedArg2\"", expectedArg2, event.arguments[1]) + "The second argument should be \"$expectedArg2\"", + expectedArg2, + event.arguments[1], + ) assertEquals("Throwable should be \"$expectedArg3\"", expectedArg3, event.throwable) } logger.appenders.add(appender) @@ -215,7 +244,10 @@ class LoggerImplTest { appender.output = { event -> assertEquals("There should be one argument", 1, event.arguments.size) assertEquals( - "The appender should be passed as an argument", appender, event.arguments.first()) + "The appender should be passed as an argument", + appender, + event.arguments.first(), + ) } logger.appenders.add(appender) @@ -308,7 +340,10 @@ class LoggerImplTest { appender.output = { event -> assertEquals("There should be one argument", 1, event.arguments.size) assertEquals( - "The argument should be \"$expectedArgument\"", expectedArgument, event.arguments.first()) + "The argument should be \"$expectedArgument\"", + expectedArgument, + event.arguments.first(), + ) assertTrue("Marker should be passed to the appender", event.markers.contains(marker)) } logger.appenders.add(appender) @@ -330,9 +365,15 @@ class LoggerImplTest { appender.output = { event -> assertEquals("There should be two arguments", 2, event.arguments.size) assertEquals( - "The first argument should be \"$expectedArg1\"", expectedArg1, event.arguments.first()) + "The first argument should be \"$expectedArg1\"", + expectedArg1, + event.arguments.first(), + ) assertEquals( - "The second argument should be \"$expectedArg2\"", expectedArg2, event.arguments[1]) + "The second argument should be \"$expectedArg2\"", + expectedArg2, + event.arguments[1], + ) assertTrue("Marker should be passed to the appender", event.markers.contains(marker)) } logger.appenders.add(appender) @@ -355,11 +396,20 @@ class LoggerImplTest { appender.output = { event -> assertEquals("There should be three arguments", 3, event.arguments.size) assertEquals( - "The first argument should be \"$expectedArg1\"", expectedArg1, event.arguments.first()) + "The first argument should be \"$expectedArg1\"", + expectedArg1, + event.arguments.first(), + ) assertEquals( - "The second argument should be \"$expectedArg2\"", expectedArg2, event.arguments[1]) + "The second argument should be \"$expectedArg2\"", + expectedArg2, + event.arguments[1], + ) assertEquals( - "The third argument should be \"$expectedArg3\"", expectedArg3, event.arguments[2]) + "The third argument should be \"$expectedArg3\"", + expectedArg3, + event.arguments[2], + ) assertTrue("Marker should be passed to the appender", event.markers.contains(marker)) } logger.appenders.add(appender) @@ -379,7 +429,10 @@ class LoggerImplTest { appender.output = { event -> assertEquals("There should be one argument", 1, event.arguments.size) assertEquals( - "The appender should be passed as an argument", appender, event.arguments.first()) + "The appender should be passed as an argument", + appender, + event.arguments.first(), + ) assertTrue("Marker should be passed to the appender", event.markers.contains(marker)) } logger.appenders.add(appender) diff --git a/src/test/java/com/esri/logger/khronicle/PatternEncoderTest.kt b/src/test/java/com/esri/logger/khronicle/PatternEncoderTest.kt index 38980e6..d9847fd 100644 --- a/src/test/java/com/esri/logger/khronicle/PatternEncoderTest.kt +++ b/src/test/java/com/esri/logger/khronicle/PatternEncoderTest.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -23,9 +23,9 @@ import org.slf4j.event.Level import org.slf4j.helpers.BasicMarkerFactory class PatternEncoderTest { -@Before + @Before fun setUp() { - TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")) + TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")) } @Test @@ -43,7 +43,8 @@ class PatternEncoderTest { assertEquals( "The decoded message should be equal to the encoded message", expectedMessage, - encodedString) + encodedString, + ) } @Test @@ -60,7 +61,10 @@ class PatternEncoderTest { val encodedString = encoder.encode(loggingEvent).decodeToString() assertEquals( - "The argument should be encoded as \"$expectedArg\"", "Hello, $expectedArg!", encodedString) + "The argument should be encoded as \"$expectedArg\"", + "Hello, $expectedArg!", + encodedString, + ) } @Test @@ -80,7 +84,8 @@ class PatternEncoderTest { assertEquals( "The arguments should be encoded as \"$expectedArg1\" and \"$expectedArg2\"", "Hello, $expectedArg1-$expectedArg2!", - encodedString) + encodedString, + ) } @Test @@ -101,7 +106,8 @@ class PatternEncoderTest { assertEquals( "The arguments should be encoded as \"$expectedArg1\", \"$expectedArg2\" and \"$expectedArg3\"", "Hello, $expectedArg1-$expectedArg2-$expectedArg3!", - encodedString) + encodedString, + ) } @Test @@ -151,7 +157,8 @@ class PatternEncoderTest { assertEquals( "The throwable should be auto appended at the end of the message", "Hello!\n${throwable}", - encodedString) + encodedString, + ) } @Test @@ -170,7 +177,8 @@ class PatternEncoderTest { assertEquals( "The timestamp should be encoded as [10-11-2024 12:49:22,123]", "10-11-2024 12:49:22,123 Hello!", - encodedString) + encodedString, + ) } @Test @@ -187,6 +195,9 @@ class PatternEncoderTest { val encodedString = encoder.encode(loggingEvent).decodeToString() assertEquals( - "The timestamp should be encoded as 1234567890", "1234567890 Hello!", encodedString) + "The timestamp should be encoded as 1234567890", + "1234567890 Hello!", + encodedString, + ) } } diff --git a/src/test/java/com/esri/logger/khronicle/ServiceProviderTest.kt b/src/test/java/com/esri/logger/khronicle/ServiceProviderTest.kt index a728b09..c70ac2d 100644 --- a/src/test/java/com/esri/logger/khronicle/ServiceProviderTest.kt +++ b/src/test/java/com/esri/logger/khronicle/ServiceProviderTest.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. diff --git a/src/test/java/com/esri/logger/khronicle/appender/TestAppender.kt b/src/test/java/com/esri/logger/khronicle/appender/TestAppender.kt index 3e62f0c..0ab17dc 100644 --- a/src/test/java/com/esri/logger/khronicle/appender/TestAppender.kt +++ b/src/test/java/com/esri/logger/khronicle/appender/TestAppender.kt @@ -1,11 +1,11 @@ // Copyright 2025 Esri -// +// // Licensed under the Apache License Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at -// +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.