diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
index 83c93a4e..c4b8d14d 100644
--- a/.github/workflows/codeql-analysis.yml
+++ b/.github/workflows/codeql-analysis.yml
@@ -76,4 +76,4 @@ jobs:
uses: github/codeql-action/analyze@9e8d0789d4a0fa9ceb6b1738f7e269594bdd67f0 # v3.28.9
- name: Check dependencies with Gradle
if: ${{ github.repository_owner == 'nagyesta' }}
- run: ./gradlew ossIndexAudit -PossIndexUsername=${{ secrets.OSS_INDEX_USER }} -PossIndexPassword=${{ secrets.OSS_INDEX_PASSWORD }}
+ run: ./gradlew ossIndexAudit -PossIndexUsername=${{ secrets.OSS_INDEX_USER }} -PossIndexPassword=${{ secrets.OSS_INDEX_PASSWORD }} --info
diff --git a/.github/workflows/gradle-oss-index-scan.yml b/.github/workflows/gradle-oss-index-scan.yml
index 17133bb4..ba42d251 100644
--- a/.github/workflows/gradle-oss-index-scan.yml
+++ b/.github/workflows/gradle-oss-index-scan.yml
@@ -26,4 +26,4 @@ jobs:
- name: Setup Gradle
uses: gradle/actions/setup-gradle@94baf225fe0a508e581a564467443d0e2379123b # v4.3.0
- name: Check dependencies with Gradle
- run: ./gradlew ossIndexAudit -PossIndexUsername=${{ secrets.OSS_INDEX_USER }} -PossIndexPassword=${{ secrets.OSS_INDEX_PASSWORD }}
+ run: ./gradlew ossIndexAudit -PossIndexUsername=${{ secrets.OSS_INDEX_USER }} -PossIndexPassword=${{ secrets.OSS_INDEX_PASSWORD }} --info
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
index 3ac174e0..ae21aec4 100644
--- a/.idea/inspectionProfiles/Project_Default.xml
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -24,6 +24,7 @@
+
-
\ No newline at end of file
+
diff --git a/README.md b/README.md
index bd1eafdc..d69800d3 100644
--- a/README.md
+++ b/README.md
@@ -242,5 +242,5 @@ Used for metadata endpoints
- Some encryption/signature algorithms are not supported. Please refer to the ["Features"](#features) section for the up-to-date list of supported algorithms.
- Only self-signed certificates are supported by the certificate API.
-- Time shift cannot renew/recreate deleted certificates. Please consider performing deletions after time shift as a work around.
+- Time shift cannot renew/recreate deleted certificates. Please consider performing deletions after time shift as a workaround.
- Recovery options cannot be configured for vaults created during start-up
diff --git a/build.gradle b/build.gradle
deleted file mode 100644
index a0aded5e..00000000
--- a/build.gradle
+++ /dev/null
@@ -1,268 +0,0 @@
-plugins {
- alias(libs.plugins.versioner)
- alias(libs.plugins.index.scan)
- alias(libs.plugins.owasp.dependencycheck)
- alias(libs.plugins.nexus.publish.plugin)
- alias libs.plugins.cyclonedx.bom apply false
- alias libs.plugins.licensee.plugin apply false
-}
-
-group = 'com.github.nagyesta.lowkey-vault'
-
-apply from: "config/ossindex/ossIndexAudit.gradle"
-
-project.ext {
- gitToken = project.hasProperty('githubToken') ? (project.property('githubToken') as String) : ''
- gitUser = project.hasProperty('githubUser') ? (project.property('githubUser') as String) : ''
- ossrhUser = project.hasProperty('ossrhUsername') ? (project.property('ossrhUsername') as String) : ''
- ossrhPass = project.hasProperty('ossrhPassword') ? (project.property('ossrhPassword') as String) : ''
- ossIndexUser = project.hasProperty('ossIndexUsername') ? (project.property('ossIndexUsername') as String) : ''
- ossIndexPass = project.hasProperty('ossIndexPassword') ? (project.property('ossIndexPassword') as String) : ''
- keyToolDir = project.hasProperty('keyToolDir') ? (project.property('keyToolDir') as String) : ''
- dockerAbortGroups = project.hasProperty('dockerSuppressGroups') ? 'all' : ''
- dockerSuppressGroups = project.hasProperty('dockerSuppressGroups') ? (project.property('dockerSuppressGroups') as String) : ''
- repoUrl = 'https://github.com/nagyesta/lowkey-vault'
- licenseName = 'MIT License'
- licenseUrl = 'https://raw.githubusercontent.com/nagyesta/lowkey-vault/main/LICENSE'
- maintainerId = 'nagyesta'
- maintainerName = 'Istvan Zoltan Nagy'
- maintainerUrl = 'https://github.com/nagyesta/'
- scmConnection = 'scm:git:https://github.com/nagyesta/lowkey-vault.git'
- scmProjectUrl = 'https://github.com/nagyesta/lowkey-vault/'
-}
-
-versioner {
- startFrom {
- major = 0
- minor = 0
- patch = 1
- }
- match {
- major = '{major}'
- minor = '{minor}'
- patch = '{patch}'
- }
- pattern {
- pattern = "%M.%m.%p"
- }
- git {
- authentication {
- https {
- token = project.ext.gitToken
- }
- }
- }
- tag {
- prefix = 'v'
- useCommitMessage = true
- }
-}
-
-configure(subprojects.findAll({
- !'lowkey-vault-docker'.equalsIgnoreCase(it.name)
-})) {
- apply plugin: 'java'
- apply plugin: 'checkstyle'
- apply plugin: 'jacoco'
- apply plugin: 'maven-publish'
- apply plugin: 'signing'
- apply plugin: 'org.sonatype.gradle.plugins.scan'
- apply plugin: 'org.owasp.dependencycheck'
- apply plugin: 'org.cyclonedx.bom'
- apply plugin: 'app.cash.licensee'
-
- versioner.apply()
-
- version = rootProject.version
- //noinspection GroovyUnusedAssignment
- repositories {
- mavenCentral()
- }
-
- javadoc.options.addStringOption('Xdoclint:none', '-quiet')
-
- jacocoTestReport {
- reports {
- xml.required.set(true)
- xml.outputLocation.set(layout.buildDirectory.file("reports/jacoco/report.xml").get().getAsFile())
- csv.required.set(false)
- html.required.set(true)
- html.outputLocation.set(layout.buildDirectory.dir("reports/jacoco/html").get().getAsFile())
- }
- }
-
- test.finalizedBy jacocoTestReport
- jacocoTestReport.finalizedBy jacocoTestCoverageVerification
-
- jacoco {
- toolVersion = libs.versions.jacoco.get()
- }
-
- jacocoTestCoverageVerification {
- inputs.file(layout.buildDirectory.file("reports/jacoco/report.xml").get().getAsFile())
- outputs.file(layout.buildDirectory.file("reports/jacoco/jacocoTestCoverageVerification").get().getAsFile())
-
- violationRules {
- rule {
- limit {
- counter = 'LINE'
- value = 'COVEREDRATIO'
- minimum = 0.8
- }
- limit {
- counter = 'BRANCH'
- value = 'COVEREDRATIO'
- minimum = 0.8
- }
- excludes = []
- }
- rule {
- element = 'CLASS'
- limit {
- counter = 'LINE'
- value = 'COVEREDRATIO'
- minimum = 0.5
- }
- limit {
- counter = 'BRANCH'
- value = 'COVEREDRATIO'
- minimum = 0.5
- }
- excludes = [
- 'com.github.nagyesta.lowkeyvault.LowkeyVaultApp',
- 'com.github.nagyesta.lowkeyvault.AppConfiguration',
- 'com.github.nagyesta.lowkeyvault.service.exception.AlreadyExistsException',
- 'com.github.nagyesta.lowkeyvault.service.exception.NotFoundException',
- 'com.github.nagyesta.lowkeyvault.service.exception.CryptoException',
- 'com.github.nagyesta.lowkeyvault.exception.VaultNotFoundException'
- ]
- }
- }
- doLast {
- layout.buildDirectory.file("reports/jacoco/jacocoTestCoverageVerification").get().getAsFile().write("Passed")
- }
- }
- jar.dependsOn check
-
- tasks.withType(Checkstyle).configureEach {
- configProperties = [base_dir: rootDir.toString(), cache_file: layout.buildDirectory.file("checkstyle/cacheFile").get().getAsFile()]
- reports {
- xml.required.set(false)
- html.required.set(true)
- html.stylesheet resources.text
- .fromFile(rootProject.file('config/checkstyle/checkstyle-stylesheet.xsl') as String)
- }
- }
- checkstyle.toolVersion = libs.versions.checkstyle.get()
-
-
- cyclonedxBom {
- includeConfigs = ["runtimeClasspath"]
- skipConfigs = ["compileClasspath", "testCompileClasspath"]
- skipProjects = []
- projectType = project.name.endsWith("app") ? "application" : "library"
- schemaVersion = "1.5"
- destination = file("build/reports")
- outputName = "bom"
- outputFormat = "json"
- //noinspection UnnecessaryQualifiedReference
- final def attachmentText = new org.cyclonedx.model.AttachmentText()
- attachmentText.setText(file("${project.rootProject.projectDir}/LICENSE").readBytes().encodeBase64().toString())
- attachmentText.setEncoding("base64")
- attachmentText.setContentType("text/plain")
- //noinspection UnnecessaryQualifiedReference
- final def license = new org.cyclonedx.model.License()
- license.setName(project.rootProject.ext.licenseName)
- license.setLicenseText(attachmentText)
- license.setUrl(project.rootProject.ext.licenseUrl)
- setLicenseChoice {
- it.addLicense(license)
- }
- }
-
- licensee {
- allow("Apache-2.0")
- allow("MIT")
- allow("MIT-0")
- allow("EPL-1.0")
- allow("EPL-2.0")
- allow("BSD-2-Clause")
- allowUrl("https://www.bouncycastle.org/licence.html")
- allowUrl("https://github.com/openjdk/nashorn/blob/main/LICENSE")
- allowUrl("https://github.com/swagger-api/swagger-ui")
- allowUrl("http://www.eclipse.org/legal/epl-2.0")
- allowUrl("http://www.eclipse.org/org/documents/edl-v10.php")
- allowUrl("https://asm.ow2.io/license.html")
- allowUrl("https://github.com/webjars/webjars-locator-lite/blob/main/LICENSE.md")
- ignoreDependencies("org.apache.tomcat", "tomcat-servlet-api")
- unusedAction("IGNORE")
- }
-
- tasks.register('copyLegalDocs', Copy.class) {
- from file("${project.rootProject.projectDir}/LICENSE")
- from layout.buildDirectory.file("reports/licensee/artifacts.json").get().asFile
- from layout.buildDirectory.file("reports/bom.json").get().asFile
- into layout.buildDirectory.dir("resources/main/META-INF").get().asFile
- rename('artifacts.json', 'dependency-licenses.json')
- rename('bom.json', 'SBOM.json')
- }
- //noinspection ConfigurationAvoidance
- tasks.copyLegalDocs.dependsOn(tasks.licensee)
- tasks.copyLegalDocs.dependsOn(tasks.cyclonedxBom)
- tasks.javadoc.dependsOn(tasks.copyLegalDocs)
- tasks.compileTestJava.dependsOn(tasks.copyLegalDocs)
- tasks.checkstyleMain.dependsOn(tasks.copyLegalDocs)
- tasks.processResources.finalizedBy(tasks.copyLegalDocs)
-
- publishing {
- repositories {
- maven {
- name = "GitHubPackages"
- url = uri("https://maven.pkg.github.com/nagyesta/lowkey-vault")
- credentials {
- username = rootProject.ext.gitUser
- password = rootProject.ext.gitToken
- }
- }
- }
- }
-
- //Disable metadata publishing and rely on Maven only
- tasks.withType(GenerateModuleMetadata).configureEach {
- enabled = false
- }
-
- ossIndexAudit {
- username = rootProject.ext.ossIndexUser
- password = rootProject.ext.ossIndexPass
- printBanner = false
- colorEnabled = true
- showAll = false
- outputFormat = 'DEPENDENCY_GRAPH'
- excludeVulnerabilityIds = rootProject.ext.ossIndexExclusions
- }
-}
-
-nexusPublishing {
- repositories {
- sonatype {
- username = project.ext.ossrhUser
- password = project.ext.ossrhPass
- }
- }
-}
-
-ossIndexAudit {
- username = rootProject.ext.ossIndexUser
- password = rootProject.ext.ossIndexPass
- printBanner = false
- colorEnabled = true
- showAll = false
- outputFormat = 'DEPENDENCY_GRAPH'
- excludeVulnerabilityIds = rootProject.ext.ossIndexExclusions
-}
-
-repositories {
- mavenCentral()
-}
-
diff --git a/build.gradle.kts b/build.gradle.kts
new file mode 100644
index 00000000..ceb270bd
--- /dev/null
+++ b/build.gradle.kts
@@ -0,0 +1,273 @@
+import org.sonatype.gradle.plugins.scan.ossindex.OutputFormat
+import java.util.*
+
+plugins {
+ id("java")
+ jacoco
+ checkstyle
+ alias(libs.plugins.versioner)
+ alias(libs.plugins.index.scan)
+ alias(libs.plugins.owasp.dependencycheck)
+ alias(libs.plugins.nexus.publish.plugin)
+ alias(libs.plugins.cyclonedx.bom)
+}
+
+group = "com.github.nagyesta.lowkey-vault"
+
+apply("config/ossindex/ossIndexAudit.gradle.kts")
+
+buildscript {
+ fun optionalPropertyString(name: String): String {
+ return if (project.hasProperty(name)) {
+ project.property(name) as String
+ } else {
+ ""
+ }
+ }
+
+ fun dockerAbortGroups(name: String): String {
+ return if (project.hasProperty(name)) {
+ "all"
+ } else {
+ ""
+ }
+ }
+
+ // Define versions in a single place
+ extra.apply {
+ set("gitToken", optionalPropertyString("githubToken"))
+ set("gitUser", optionalPropertyString("githubUser"))
+ set("ossrhUser", optionalPropertyString("ossrhUsername"))
+ set("ossrhPass", optionalPropertyString("ossrhPassword"))
+ set("ossIndexUser", optionalPropertyString("ossIndexUsername"))
+ set("ossIndexPass", optionalPropertyString("ossIndexPassword"))
+ set("keyToolDir", optionalPropertyString("keyToolDir"))
+ set("dockerAbortGroups", dockerAbortGroups("dockerSuppressGroups"))
+ set("dockerSuppressGroups", optionalPropertyString("dockerSuppressGroups"))
+ set("repoUrl", "https://github.com/nagyesta/lowkey-vault")
+ set("licenseName", "MIT License")
+ set("licenseUrl", "https://raw.githubusercontent.com/nagyesta/lowkey-vault/main/LICENSE")
+ set("maintainerId", "nagyesta")
+ set("maintainerName", "Istvan Zoltan Nagy")
+ set("maintainerUrl", "https://github.com/nagyesta/")
+ set("scmConnection", "scm:git:https://github.com/nagyesta/lowkey-vault.git")
+ set("scmProjectUrl", "https://github.com/nagyesta/lowkey-vault/")
+ set("githubMavenRepoUrl", "https://maven.pkg.github.com/nagyesta/lowkey-vault")
+ set("ossrhMavenRepoUrl", "https://oss.sonatype.org/service/local/staging/deploy/maven2")
+ }
+}
+
+versioner {
+ startFrom {
+ major = 0
+ minor = 0
+ patch = 1
+ }
+ match {
+ major = "{major}"
+ minor = "{minor}"
+ patch = "{patch}"
+ }
+ pattern {
+ pattern = "%M.%m.%p"
+ }
+ git {
+ authentication {
+ https {
+ token = project.extra.get("gitToken").toString()
+ }
+ }
+ }
+ tag {
+ prefix = "v"
+ useCommitMessage = true
+ }
+}
+
+versioner.apply()
+
+subprojects {
+ if (project.name != "lowkey-vault-docker") {
+ apply(plugin = "java")
+ apply(plugin = "org.gradle.jacoco")
+ apply(plugin = "org.gradle.checkstyle")
+ apply(plugin = "org.gradle.signing")
+ apply(plugin = "org.sonatype.gradle.plugins.scan")
+ apply(plugin = "org.owasp.dependencycheck")
+ apply(plugin = "org.cyclonedx.bom")
+
+ group = rootProject.group
+ version = rootProject.version
+
+ repositories {
+ mavenCentral()
+ }
+
+ tasks.javadoc.configure {
+ (options as StandardJavadocDocletOptions).addBooleanOption("Xdoclint:none", true)
+ (options as StandardJavadocDocletOptions).addBooleanOption("Xdoclint:-missing", true)
+ }
+
+ jacoco {
+ toolVersion = rootProject.libs.versions.jacoco.get()
+ }
+
+ tasks.jacocoTestReport {
+ reports {
+ xml.required.set(true)
+ xml.outputLocation.set(layout.buildDirectory.file("reports/jacoco/report.xml"))
+ csv.required.set(false)
+ html.required.set(true)
+ html.outputLocation.set(layout.buildDirectory.dir("reports/jacoco/html"))
+ }
+ dependsOn(tasks.test)
+ finalizedBy(tasks.getByName("jacocoTestCoverageVerification"))
+ }
+
+ tasks.withType().configureEach {
+ inputs.file(layout.buildDirectory.file("reports/jacoco/report.xml"))
+ outputs.file(layout.buildDirectory.file("reports/jacoco/jacocoTestCoverageVerification"))
+
+ violationRules {
+ rule {
+ limit {
+ counter = "LINE"
+ value = "COVEREDRATIO"
+ minimum = BigDecimal.valueOf(0.8)
+ }
+ limit {
+ counter = "BRANCH"
+ value = "COVEREDRATIO"
+ minimum = BigDecimal.valueOf(0.8)
+ }
+ excludes = listOf()
+ }
+ rule {
+ element = "CLASS"
+ limit {
+ counter = "LINE"
+ value = "COVEREDRATIO"
+ minimum = BigDecimal.valueOf(0.5)
+ }
+ limit {
+ counter = "BRANCH"
+ value = "COVEREDRATIO"
+ minimum = BigDecimal.valueOf(0.5)
+ }
+ excludes = mutableListOf(
+ "com.github.nagyesta.lowkeyvault.LowkeyVaultApp",
+ "com.github.nagyesta.lowkeyvault.AppConfiguration",
+ "com.github.nagyesta.lowkeyvault.service.exception.AlreadyExistsException",
+ "com.github.nagyesta.lowkeyvault.service.exception.NotFoundException",
+ "com.github.nagyesta.lowkeyvault.service.exception.CryptoException",
+ "com.github.nagyesta.lowkeyvault.exception.VaultNotFoundException"
+ )
+ }
+ }
+ doLast {
+ layout.buildDirectory.file("reports/jacoco/jacocoTestCoverageVerification").get().asFile.writeText("Passed")
+ }
+ }
+
+ tasks.jar.configure {
+ dependsOn(tasks.check)
+ }
+
+ tasks.withType().configureEach {
+ configProperties = mutableMapOf(
+ "base_dir" to rootDir.absolutePath.toString(),
+ "cache_file" to layout.buildDirectory.file("checkstyle/cacheFile").get().asFile.absolutePath.toString()
+ )
+ checkstyle.toolVersion = rootProject.libs.versions.checkstyle.get()
+ checkstyle.configFile = rootProject.file("config/checkstyle/checkstyle.xml")
+ reports {
+ xml.required.set(false)
+ html.required.set(true)
+ html.stylesheet = rootProject.resources.text.fromFile("config/checkstyle/checkstyle-stylesheet.xsl")
+ }
+ }
+
+ //Disable metadata publishing and rely on Maven only
+ tasks.withType().configureEach {
+ enabled = false
+ }
+
+
+ ossIndexAudit {
+ username = rootProject.extra.get("ossIndexUser").toString()
+ password = rootProject.extra.get("ossIndexPass").toString()
+ isPrintBanner = false
+ isColorEnabled = true
+ isShowAll = false
+ outputFormat = OutputFormat.DEFAULT
+ @Suppress("UNCHECKED_CAST")
+ excludeVulnerabilityIds = rootProject.extra.get("ossIndexExclusions") as MutableSet
+ }
+
+ tasks.cyclonedxBom {
+ if (project.name.endsWith("app")) {
+ setProjectType("application")
+ } else {
+ setProjectType("library")
+ }
+ setIncludeConfigs(listOf("runtimeClasspath"))
+ setSkipConfigs(listOf("compileClasspath", "testCompileClasspath"))
+ setSkipProjects(listOf())
+ setSchemaVersion("1.5")
+ setDestination(file("build/reports"))
+ setOutputName("bom")
+ setOutputFormat("json")
+ //noinspection UnnecessaryQualifiedReference
+ val attachmentText = org.cyclonedx.model.AttachmentText()
+ attachmentText.text = Base64.getEncoder().encodeToString(
+ file("${project.rootProject.projectDir}/LICENSE").readBytes()
+ )
+ attachmentText.encoding = "base64"
+ attachmentText.contentType = "text/plain"
+ //noinspection UnnecessaryQualifiedReference
+ val license = org.cyclonedx.model.License()
+ license.name = "MIT License"
+ license.setLicenseText(attachmentText)
+ license.url = "https://raw.githubusercontent.com/nagyesta/lowkey-vault/main/LICENSE"
+ setLicenseChoice {
+ it.addLicense(license)
+ }
+ }
+ }
+}
+
+ossIndexAudit {
+ username = rootProject.extra.get("ossIndexUser").toString()
+ password = rootProject.extra.get("ossIndexPass").toString()
+ isPrintBanner = false
+ isColorEnabled = true
+ isShowAll = false
+ outputFormat = OutputFormat.DEFAULT
+ @Suppress("UNCHECKED_CAST")
+ excludeVulnerabilityIds = rootProject.extra.get("ossIndexExclusions") as MutableSet
+}
+
+checkstyle {
+ toolVersion = rootProject.libs.versions.checkstyle.get()
+}
+
+repositories {
+ mavenCentral()
+}
+
+tasks.jacocoTestReport {
+ reports {
+ xml.required.set(false)
+ html.required.set(false)
+ csv.required.set(false)
+ }
+}
+
+nexusPublishing {
+ repositories {
+ sonatype {
+ username = rootProject.extra.get("ossrhUser").toString()
+ password = rootProject.extra.get("ossrhPass").toString()
+ }
+ }
+}
diff --git a/config/ossindex/ossIndexAudit.gradle b/config/ossindex/ossIndexAudit.gradle
deleted file mode 100644
index bb25bd95..00000000
--- a/config/ossindex/ossIndexAudit.gradle
+++ /dev/null
@@ -1,10 +0,0 @@
-def readExclusions() {
- return rootProject.file("config/ossindex/exclusions.txt").readLines()
- .stream()
- .filter(s -> !s.isBlank())
- .toArray()
-}
-
-project.ext {
- ossIndexExclusions = readExclusions()
-}
diff --git a/config/ossindex/ossIndexAudit.gradle.kts b/config/ossindex/ossIndexAudit.gradle.kts
new file mode 100644
index 00000000..ba8c98a7
--- /dev/null
+++ b/config/ossindex/ossIndexAudit.gradle.kts
@@ -0,0 +1,11 @@
+buildscript {
+ fun readExclusions(): MutableSet {
+ return rootProject.file("config/ossindex/exclusions.txt").readLines()
+ .stream()
+ .toList()
+ .filter { it.isNotBlank() }
+ .toMutableSet()
+ }
+
+ extra.set("ossIndexExclusions", readExclusions())
+}
diff --git a/gradle.properties b/gradle.properties
index 0c7ad002..a99b4fd9 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -4,5 +4,5 @@
org.gradle.warning.mode=all
org.gradle.daemon=true
org.gradle.caching=true
-org.gradle.jvmargs=-Xmx1g -XX:MaxMetaspaceSize=256m -XX:+HeapDumpOnOutOfMemoryError
+org.gradle.jvmargs=-Xmx2g -XX:MaxMetaspaceSize=512m -XX:+HeapDumpOnOutOfMemoryError
org.gradle.dependency.verification.console=verbose
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index e5054473..0d0e8881 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -662,6 +662,14 @@
+
+
+
+
+
+
+
+
@@ -677,6 +685,11 @@
+
+
+
+
+
@@ -693,6 +706,14 @@
+
+
+
+
+
+
+
+
@@ -716,6 +737,11 @@
+
+
+
+
+
@@ -757,6 +783,14 @@
+
+
+
+
+
+
+
+
@@ -883,6 +917,14 @@
+
+
+
+
+
+
+
+
@@ -1078,6 +1120,14 @@
+
+
+
+
+
+
+
+
@@ -1678,6 +1728,14 @@
+
+
+
+
+
+
+
+
@@ -1704,6 +1762,11 @@
+
+
+
+
+
@@ -1720,6 +1783,14 @@
+
+
+
+
+
+
+
+
@@ -2672,6 +2743,11 @@
+
+
+
+
+
@@ -3029,6 +3105,14 @@
+
+
+
+
+
+
+
+
@@ -3037,11 +3121,24 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -3050,6 +3147,14 @@
+
+
+
+
+
+
+
+
@@ -3058,6 +3163,14 @@
+
+
+
+
+
+
+
+
@@ -3125,22 +3238,17 @@
-
-
-
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
+
+
+
@@ -3148,6 +3256,11 @@
+
+
+
+
+
@@ -3456,6 +3569,14 @@
+
+
+
+
+
+
+
+
@@ -3477,6 +3598,11 @@
+
+
+
+
+
@@ -3493,6 +3619,14 @@
+
+
+
+
+
+
+
+
@@ -3514,6 +3648,14 @@
+
+
+
+
+
+
+
+
diff --git a/lowkey-vault-app/build.gradle b/lowkey-vault-app/build.gradle
deleted file mode 100644
index 1a31125f..00000000
--- a/lowkey-vault-app/build.gradle
+++ /dev/null
@@ -1,165 +0,0 @@
-plugins {
- alias(libs.plugins.spring.boot)
- id 'java'
- alias(libs.plugins.lombok)
- alias(libs.plugins.abort.mission)
-}
-
-group = "${rootProject.group}"
-
-project.ext {
- artifactDisplayName = "Lowkey Vault - App"
- artifactDescription = "Assembled application of Lowkey Vault."
-}
-
-dependencies {
- implementation libs.bundles.spring.boot.app
- implementation libs.bundles.logback
- implementation libs.bundles.tomcat
- implementation libs.bouncycastle.bcpkix
- implementation libs.hibernate.validator
- implementation libs.handlebars
- implementation libs.findbugs.jsr305
- implementation libs.springdoc.openapi.ui
- annotationProcessor libs.lombok
- annotationProcessor libs.spring.boot.configuration.processor
- testImplementation libs.bundles.spring.test
- testImplementation libs.jupiter
- testImplementation libs.abort.mission.jupiter
-}
-
-java {
- sourceCompatibility = JavaVersion.VERSION_17
- toolchain {
- languageVersion = JavaLanguageVersion.of(17)
- }
- withJavadocJar()
- withSourcesJar()
-}
-
-test {
- outputs.file(layout.buildDirectory.file("reports/abort-mission/abort-mission-report.json").get().getAsFile())
- useJUnitPlatform()
- systemProperty("junit.jupiter.extensions.autodetection.enabled", true)
- systemProperty("junit.jupiter.execution.parallel.enabled", true)
- systemProperty("junit.jupiter.execution.parallel.mode.default", "same_thread")
- systemProperty("junit.jupiter.execution.parallel.mode.classes.default", "concurrent")
-}
-
-abortMission {
- toolVersion libs.versions.abortMission.get()
-}
-
-processResources {
- inputs.property('version', project.version)
- filesMatching('application.properties') {
- expand(project.properties)
- }
-}
-
-jar {
- enabled = false
-}
-
-bootJar {
- archiveVersion.value(project.version as String)
-}
-tasks.resolveMainClassName.dependsOn("copyLegalDocs")
-
-tasks.register('regenerateCertJks', Exec) {
- outputs.file("${project.projectDir}/src/main/resources/cert/keystore.jks")
- workingDir file("${project.projectDir}/src/main/resources/cert")
- outputs.upToDateWhen { false }
-
- //generate key in JKS with JDK15+ keytool to allow wildcard SAN
- commandLine "${project.property('keyToolDir') ?: ''}/keytool",
- '-genkeypair',
- '-alias', 'lowkey-vault.local',
- '-keyalg', 'RSA',
- '-keysize', '4096',
- '-validity', '3650',
- '-dname', 'CN=lowkey-vault.local',
- '-keypass', 'changeit',
- '-keystore', 'keystore.jks',
- '-storeType', 'JKS',
- '-storepass', 'changeit',
- '-ext', 'SAN=dns:lowkey-vault.local,dns:lowkey-vault,dns:*.localhost,dns:*.lowkey-vault,dns:*.lowkey-vault.local,dns:*.default.svc.cluster.local,dns:localhost,ip:127.0.0.1'
-
- doFirst {
- file("${project.projectDir}/src/main/resources/cert/keystore.jks").delete()
- }
-
- logging.captureStandardOutput LogLevel.INFO
- logging.captureStandardError LogLevel.ERROR
-}
-tasks.register('regenerateCert', Exec) {
- outputs.file("${project.projectDir}/src/main/resources/cert/keystore.p12")
- outputs.file("${project.projectDir}/src/main/resources/cert/keystore.jks")
- inputs.file("${project.projectDir}/src/main/resources/cert/keystore.jks")
- workingDir file("${project.projectDir}/src/main/resources/cert")
- outputs.upToDateWhen { false }
- dependsOn tasks.regenerateCertJks
- //convert to P12 using the old keytool to fix algorithm issues when used with old JDK (and still use P12)
- commandLine 'keytool',
- '-importkeystore',
- '-srckeystore', 'keystore.jks',
- '-srcstorepass', 'changeit',
- '-srcstoretype', 'JKS',
- '-destkeystore', 'keystore.p12',
- '-deststorepass', 'changeit',
- '-deststoretype', 'pkcs12'
-
- doFirst {
- file("${project.projectDir}/src/main/resources/cert/keystore.p12").delete()
- }
- doLast {
- file("${project.projectDir}/src/main/resources/cert/keystore.jks").delete()
- }
-
- logging.captureStandardOutput LogLevel.INFO
- logging.captureStandardError LogLevel.ERROR
-}
-
-publishing {
- publications {
- mavenJava(MavenPublication) {
- from components.java
- artifact bootJar
- artifactId = "${project.name}"
- pom {
- name = "${project.artifactDisplayName}"
- description = "${project.artifactDescription}"
- url = rootProject.ext.repoUrl
- packaging = "jar"
- licenses {
- license {
- name = rootProject.ext.licenseName
- url = rootProject.ext.licenseUrl
- }
- }
- developers {
- developer {
- id = rootProject.ext.maintainerId
- name = rootProject.ext.maintainerName
- url = rootProject.ext.maintainerUrl
- }
- }
- scm {
- connection = rootProject.ext.scmConnection
- developerConnection = rootProject.ext.scmConnection
- url = rootProject.ext.scmProjectUrl
- }
- withXml {
- asNode().dependencies.findAll() {
- def parent = it.parent()
- parent.remove(it)
- }
- }
- }
- }
- }
-}
-
-signing {
- sign publishing.publications.mavenJava
-}
diff --git a/lowkey-vault-app/build.gradle.kts b/lowkey-vault-app/build.gradle.kts
new file mode 100644
index 00000000..dd9d9ccb
--- /dev/null
+++ b/lowkey-vault-app/build.gradle.kts
@@ -0,0 +1,222 @@
+@file:Suppress("SpellCheckingInspection")
+
+import groovy.util.Node
+import groovy.util.NodeList
+import org.apache.tools.ant.filters.ReplaceTokens
+import org.springframework.boot.gradle.tasks.bundling.BootJar
+
+
+plugins {
+ id("java")
+ signing
+ `maven-publish`
+ alias(libs.plugins.spring.boot)
+ alias(libs.plugins.lombok)
+ alias(libs.plugins.abort.mission)
+ alias(libs.plugins.licensee.plugin)
+}
+
+group = rootProject.group
+
+extra.apply {
+ set("artifactDisplayName", "Lowkey Vault - App")
+ set("artifactDescription", "Assembled application of Lowkey Vault.")
+}
+
+dependencies {
+ implementation(libs.bundles.spring.boot.app)
+ implementation(libs.bundles.logback)
+ implementation(libs.bundles.tomcat)
+ implementation(libs.bouncycastle.bcpkix)
+ implementation(libs.hibernate.validator)
+ implementation(libs.handlebars)
+ implementation(libs.findbugs.jsr305)
+ implementation(libs.springdoc.openapi.ui)
+ annotationProcessor(libs.lombok)
+ annotationProcessor(libs.spring.boot.configuration.processor)
+ testImplementation(libs.bundles.spring.test)
+ testImplementation(libs.jupiter)
+ testImplementation(libs.abort.mission.jupiter)
+}
+
+licensee {
+ allow("Apache-2.0")
+ allow("MIT")
+ allow("EPL-1.0")
+ allow("EPL-2.0")
+ allowUrl("https://www.bouncycastle.org/licence.html")
+ allowUrl("https://github.com/openjdk/nashorn/blob/main/LICENSE")
+ allowUrl("http://www.eclipse.org/legal/epl-2.0")
+ allowUrl("http://www.eclipse.org/org/documents/edl-v10.php")
+ allowUrl("https://asm.ow2.io/license.html")
+ allowUrl("https://github.com/webjars/webjars-locator-lite/blob/main/LICENSE.md")
+ ignoreDependencies("org.apache.tomcat", "tomcat-servlet-api")
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_17
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(17)
+ }
+ withJavadocJar()
+ withSourcesJar()
+}
+
+val copyLegalDocs = tasks.register("copyLegalDocs") {
+ from(file("${project.rootProject.projectDir}/LICENSE"))
+ from(layout.buildDirectory.file("reports/licensee/artifacts.json").get().asFile)
+ from(layout.buildDirectory.file("reports/bom.json").get().asFile)
+ into(layout.buildDirectory.dir("resources/main/META-INF").get().asFile)
+ rename("artifacts.json", "dependency-licenses.json")
+ rename("bom.json", "SBOM.json")
+}.get()
+copyLegalDocs.dependsOn(tasks.licensee)
+copyLegalDocs.dependsOn(tasks.cyclonedxBom)
+tasks.javadoc.get().dependsOn(copyLegalDocs)
+tasks.compileJava.get().dependsOn(copyLegalDocs)
+tasks.processResources.get().finalizedBy(copyLegalDocs)
+
+tasks.test {
+ outputs.file(layout.buildDirectory.file("reports/abort-mission/abort-mission-report.json").get().asFile)
+ useJUnitPlatform {
+ systemProperty("junit.jupiter.extensions.autodetection.enabled", true)
+ systemProperty("junit.jupiter.execution.parallel.enabled", true)
+ systemProperty("junit.jupiter.execution.parallel.mode.default", "same_thread")
+ systemProperty("junit.jupiter.execution.parallel.mode.classes.default", "concurrent")
+ }
+ finalizedBy(tasks.getByName("jacocoTestReport"))
+}
+
+project.tasks.processResources {
+ val tokens = mapOf("version" to project.version)
+ filesMatching("**/application.properties") {
+ filter("tokens" to tokens)
+ }
+}
+
+abortMission {
+ toolVersion = libs.versions.abortMission.get()
+}
+
+tasks.getByName("jar") {
+ enabled = false
+}
+
+tasks.getByName("bootJar") {
+ inputs.property("version", project.version)
+ archiveVersion.value(project.version as String)
+}
+tasks.getByName("resolveMainClassName") {
+ dependsOn(tasks.named("copyLegalDocs"))
+}
+
+tasks.register("regenerateCertJks") {
+ outputs.file("${project.projectDir}/src/main/resources/cert/keystore.jks")
+ workingDir(file("${project.projectDir}/src/main/resources/cert"))
+ outputs.upToDateWhen { false }
+
+ //generate key in JKS with JDK15+ keytool to allow wildcard SAN
+ commandLine = mutableListOf("${project.property("keyToolDir") ?: ""}/keytool",
+ "-genkeypair",
+ "-alias", "lowkey-vault.local",
+ "-keyalg", "RSA",
+ "-keysize", "4096",
+ "-validity", "3650",
+ "-dname", "CN=lowkey-vault.local",
+ "-keypass", "changeit",
+ "-keystore", "keystore.jks",
+ "-storeType", "JKS",
+ "-storepass", "changeit",
+ "-ext", "SAN=dns:lowkey-vault.local,dns:lowkey-vault,dns:*.localhost,dns:*.lowkey-vault,dns:*.lowkey-vault.local,dns:*.default.svc.cluster.local,dns:localhost,ip:127.0.0.1")
+
+ doFirst {
+ file("${project.projectDir}/src/main/resources/cert/keystore.jks").delete()
+ }
+
+ logging.captureStandardOutput(LogLevel.INFO)
+ logging.captureStandardError(LogLevel.ERROR)
+}
+tasks.register("regenerateCert") {
+ outputs.file("${project.projectDir}/src/main/resources/cert/keystore.p12")
+ outputs.file("${project.projectDir}/src/main/resources/cert/keystore.jks")
+ inputs.file("${project.projectDir}/src/main/resources/cert/keystore.jks")
+ workingDir(file("${project.projectDir}/src/main/resources/cert"))
+ outputs.upToDateWhen { false }
+ dependsOn(tasks.getByName("regenerateCertJks"))
+ //convert to P12 using the old keytool to fix algorithm issues when used with old JDK (and still use P12)
+ commandLine = mutableListOf("keytool",
+ "-importkeystore",
+ "-srckeystore", "keystore.jks",
+ "-srcstorepass", "changeit",
+ "-srcstoretype", "JKS",
+ "-destkeystore", "keystore.p12",
+ "-deststorepass", "changeit",
+ "-deststoretype", "pkcs12")
+
+ doFirst {
+ file("${project.projectDir}/src/main/resources/cert/keystore.p12").delete()
+ }
+ doLast {
+ file("${project.projectDir}/src/main/resources/cert/keystore.jks").delete()
+ }
+
+ logging.captureStandardOutput(LogLevel.INFO)
+ logging.captureStandardError(LogLevel.ERROR)
+}
+
+publishing {
+ repositories {
+ maven {
+ name = "GitHubPackages"
+ url = uri(rootProject.extra.get("githubMavenRepoUrl").toString())
+ credentials {
+ username = rootProject.extra.get("gitUser").toString()
+ password = rootProject.extra.get("gitToken").toString()
+ }
+ }
+ }
+ publications {
+ create("mavenJava") {
+ from(components["java"])
+ artifact(tasks["bootJar"])
+ artifactId = project.name
+ pom {
+ name.set(project.extra.get("artifactDisplayName").toString())
+ description.set(project.extra.get("artifactDescription").toString())
+ url.set(rootProject.extra.get("repoUrl").toString())
+ packaging = "jar"
+ licenses {
+ license {
+ name.set(rootProject.extra.get("licenseName").toString())
+ url.set(rootProject.extra.get("licenseUrl").toString())
+ }
+ }
+ developers {
+ developer {
+ id.set(rootProject.extra.get("maintainerId").toString())
+ name.set(rootProject.extra.get("maintainerName").toString())
+ email.set(rootProject.extra.get("maintainerUrl").toString())
+ }
+ }
+ scm {
+ connection.set(rootProject.extra.get("scmConnection").toString())
+ developerConnection.set(rootProject.extra.get("scmConnection").toString())
+ url.set(rootProject.extra.get("scmProjectUrl").toString())
+ }
+ }
+ pom.withXml {
+ asNode().apply {
+ (get("dependencies") as NodeList).forEach { depsNode ->
+ ((depsNode as Node).get("dependency") as NodeList).forEach { depNode ->
+ depsNode.remove(depNode as Node)
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+signing {
+ sign(publishing.publications["mavenJava"])
+}
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/AppConfiguration.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/AppConfiguration.java
index 8e2a2f68..154a697f 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/AppConfiguration.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/AppConfiguration.java
@@ -14,7 +14,6 @@
import org.springframework.util.StringUtils;
import org.springframework.web.filter.CommonsRequestLoggingFilter;
-import java.io.IOException;
import java.net.URI;
import java.util.Arrays;
import java.util.Optional;
@@ -39,7 +38,7 @@ public class AppConfiguration {
private boolean useRelaxedPorts;
@Bean
- public VaultService vaultService() throws IOException {
+ public VaultService vaultService() {
final VaultService service = new VaultServiceImpl(portMapper());
if (!SKIP_AUTO_REGISTRATION.equals(autoRegisterVaults)) {
autoRegisterVaults(service);
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/AbstractBase64ZipDeserializer.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/AbstractBase64ZipDeserializer.java
index 859db47f..5cdbbc95 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/AbstractBase64ZipDeserializer.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/AbstractBase64ZipDeserializer.java
@@ -36,12 +36,11 @@ public E deserialize(final JsonParser jsonParser, final DeserializationContext c
}
private E decompressWrappedObject(final byte[] bytes) {
- //noinspection LocalCanBeFinal
try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream)) {
final String json = new String(gzipInputStream.readAllBytes());
return objectMapper.reader().readValue(json, getType());
- } catch (Exception e) {
+ } catch (final Exception e) {
log.error(e.getMessage(), e);
throw new IllegalArgumentException("Unable to decompress input.");
}
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/AbstractBase64ZipSerializer.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/AbstractBase64ZipSerializer.java
index 5f043995..a6f892ce 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/AbstractBase64ZipSerializer.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/AbstractBase64ZipSerializer.java
@@ -42,7 +42,6 @@ public void serialize(final E value, final JsonGenerator gen,
}
private String compressObject(final E value) {
- //noinspection LocalCanBeFinal
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
final String json = objectMapper.writer().writeValueAsString(value);
@@ -51,7 +50,7 @@ private String compressObject(final E value) {
gzipOutputStream.finish();
final byte[] byteArray = byteArrayOutputStream.toByteArray();
return base64Serializer.base64Encode(byteArray);
- } catch (Exception e) {
+ } catch (final Exception e) {
log.error(e.getMessage(), e);
throw new IllegalArgumentException("Unable to compress input.");
}
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/CertificateLifetimeActionDeserializer.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/CertificateLifetimeActionDeserializer.java
index de4ff8a1..feb811c8 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/CertificateLifetimeActionDeserializer.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/model/json/util/CertificateLifetimeActionDeserializer.java
@@ -20,7 +20,6 @@ public CertificateLifetimeActionActivity deserialize(final JsonParser parser, fi
final TreeNode actionType = node.path(INNER_NODE_NAME);
Assert.isTrue(actionType.isValueNode(),
"The \"action\" node must have an \"" + INNER_NODE_NAME + "\" child containing the value.");
- //noinspection LocalCanBeFinal
try (JsonParser textField = actionType.traverse()) {
final String value = textField.nextTextValue();
return CertificateLifetimeActionActivity.byValue(value);
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertContentType.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertContentType.java
index 344ec76e..ba14cf88 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertContentType.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertContentType.java
@@ -128,11 +128,11 @@ public JsonWebKeyImportRequest getKey(@NonNull final String certificateContent,
"-----BEGIN PRIVATE KEY-----", "-----END PRIVATE KEY-----");
final KeyType keyType = assumeKeyType(encodedKey.length);
final KeyFactory kf = KeyFactory.getInstance(keyType.getAlgorithmName(), KeyGenUtil.BOUNCY_CASTLE_PROVIDER);
- final PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(encodedKey);
+ final PKCS8EncodedKeySpec privateSpec = new PKCS8EncodedKeySpec(encodedKey);
if (RSA == keyType) {
- return RSA_KEY_CONVERTER.convert((RSAPrivateCrtKey) kf.generatePrivate(privSpec));
+ return RSA_KEY_CONVERTER.convert((RSAPrivateCrtKey) kf.generatePrivate(privateSpec));
} else {
- return EC_KEY_CONVERTER.convert((BCECPrivateKey) kf.generatePrivate(privSpec));
+ return EC_KEY_CONVERTER.convert((BCECPrivateKey) kf.generatePrivate(privateSpec));
}
} catch (final Exception e) {
throw new CryptoException("Failed to extract key from PEM", e);
@@ -159,7 +159,6 @@ private void validatePem(final String certificateContent) {
}
private String toPemString(final Object object) {
- //noinspection LocalCanBeFinal
try (StringWriter stringWriter = new StringWriter();
JcaPEMWriter pemWriter = new JcaPEMWriter(stringWriter)) {
if (object instanceof PrivateKey) {
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyVaultCertificateEntity.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyVaultCertificateEntity.java
index 903d43b0..1138c9c1 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyVaultCertificateEntity.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyVaultCertificateEntity.java
@@ -118,8 +118,8 @@ public KeyVaultCertificateEntity(@NonNull final String name,
* Constructor for certificate renewal.
*
* @param input The input parameters defining how the certificate should look like.
- * @param kid The Id of the key entity version we need to use.
- * @param id The Id of the new certificate entity.
+ * @param kid The ID of the key entity version we need to use.
+ * @param id The ID of the new certificate entity.
* @param vault The vault we are using.
*/
public KeyVaultCertificateEntity(@NonNull final ReadOnlyCertificatePolicy input,
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/common/BaseVaultEntity.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/common/BaseVaultEntity.java
index 01abb216..8d81da2d 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/common/BaseVaultEntity.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/common/BaseVaultEntity.java
@@ -11,7 +11,7 @@
/**
* Base interface of vault entities.
*
- * @param The type of the versioned Id identifying this entity.
+ * @param The type of the versioned ID identifying this entity.
*/
public interface BaseVaultEntity extends ReadOnlyDeletedEntity, TimeAware {
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/common/impl/KeyVaultLifecycleAwareEntity.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/common/impl/KeyVaultLifecycleAwareEntity.java
index d11ecf07..3259173a 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/common/impl/KeyVaultLifecycleAwareEntity.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/common/impl/KeyVaultLifecycleAwareEntity.java
@@ -1,6 +1,7 @@
package com.github.nagyesta.lowkeyvault.service.common.impl;
import lombok.Getter;
+import lombok.Setter;
import org.springframework.lang.NonNull;
import org.springframework.util.Assert;
@@ -15,6 +16,7 @@ public class KeyVaultLifecycleAwareEntity {
private Optional notBefore;
private Optional expiry;
private OffsetDateTime updated;
+ @Setter
private boolean enabled;
protected KeyVaultLifecycleAwareEntity() {
@@ -25,10 +27,6 @@ protected KeyVaultLifecycleAwareEntity() {
this.expiry = Optional.empty();
}
- public void setEnabled(final boolean enabled) {
- this.enabled = enabled;
- }
-
public void setNotBefore(final OffsetDateTime notBefore) {
this.notBefore = Optional.ofNullable(notBefore);
}
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/key/ReadOnlyDeletedEntity.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/key/ReadOnlyDeletedEntity.java
index ef8e0fde..1139e4aa 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/key/ReadOnlyDeletedEntity.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/key/ReadOnlyDeletedEntity.java
@@ -8,7 +8,7 @@
/**
* Base interface of deleted vault entities.
*
- * @param The type of the versioned Id identifying this entity.
+ * @param The type of the versioned ID identifying this entity.
*/
public interface ReadOnlyDeletedEntity {
diff --git a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/secret/impl/KeyVaultSecretEntity.java b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/secret/impl/KeyVaultSecretEntity.java
index 63e6bdc3..12b55ee3 100644
--- a/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/secret/impl/KeyVaultSecretEntity.java
+++ b/lowkey-vault-app/src/main/java/com/github/nagyesta/lowkeyvault/service/secret/impl/KeyVaultSecretEntity.java
@@ -5,11 +5,13 @@
import com.github.nagyesta.lowkeyvault.service.secret.id.VersionedSecretEntityId;
import com.github.nagyesta.lowkeyvault.service.vault.VaultFake;
import lombok.NonNull;
+import lombok.Setter;
import org.springframework.lang.Nullable;
import org.springframework.util.Assert;
public class KeyVaultSecretEntity extends KeyVaultBaseEntity implements ReadOnlyKeyVaultSecretEntity {
+ @Setter
private String value;
private final String contentType;
private final VersionedSecretEntityId id;
@@ -30,10 +32,6 @@ public String getValue() {
return value;
}
- public void setValue(final String value) {
- this.value = value;
- }
-
@Override
public String getContentType() {
return contentType;
diff --git a/lowkey-vault-app/src/main/resources/application.properties b/lowkey-vault-app/src/main/resources/application.properties
index cd9e5923..1f49d2d5 100644
--- a/lowkey-vault-app/src/main/resources/application.properties
+++ b/lowkey-vault-app/src/main/resources/application.properties
@@ -1,7 +1,7 @@
# suppress inspection "SpringBootApplicationProperties"
-application.version=${version}
+application.version=@version@
# suppress inspection "SpringBootApplicationProperties"
-application.formatted-version=\\ (v${version})
+application.formatted-version=\\ (v@version@)
# suppress inspection "SpringBootApplicationProperties"
application.title=Lowkey Vault
#
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/MissionOutlineDefinition.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/MissionOutlineDefinition.java
index 1e5dc2d8..1e5ba109 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/MissionOutlineDefinition.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/MissionOutlineDefinition.java
@@ -17,10 +17,9 @@
public class MissionOutlineDefinition extends MissionOutline {
private static Optional> annotationExtractor(final Object o) {
- if (!(o instanceof Class>)) {
+ if (!(o instanceof final Class> testClass)) {
return Optional.empty();
}
- final Class> testClass = (Class>) o;
return Optional.of(Arrays.stream(testClass.getAnnotations())
.map(annotation -> annotation.annotationType().getSimpleName()).collect(Collectors.toSet()));
}
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/ResourceUtils.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/ResourceUtils.java
index c05cce89..2feb56cb 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/ResourceUtils.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/ResourceUtils.java
@@ -16,7 +16,6 @@ private ResourceUtils() {
}
public static String loadResourceAsString(final String resource) {
- //noinspection LocalCanBeFinal
try (InputStream stream = ResourceUtils.class.getResourceAsStream(resource)) {
return StreamUtils.copyToString(stream, StandardCharsets.UTF_8);
} catch (final IOException e) {
@@ -33,7 +32,6 @@ public static String loadResourceAsBase64String(final String resource) {
}
public static byte[] loadResourceAsByteArray(final String resource) {
- //noinspection LocalCanBeFinal
try (InputStream stream = ResourceUtils.class.getResourceAsStream(resource)) {
return StreamUtils.copyToByteArray(stream);
} catch (final IOException e) {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/VaultManagementControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/VaultManagementControllerTest.java
index bd3829de..d5ef7b12 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/VaultManagementControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/VaultManagementControllerTest.java
@@ -26,8 +26,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.NUMBER_OF_SECONDS_IN_10_MINUTES;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.*;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class VaultManagementControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/common/ControllerRequestMappingTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/common/ControllerRequestMappingTest.java
index 11ae1266..fda91329 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/common/ControllerRequestMappingTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/common/ControllerRequestMappingTest.java
@@ -136,23 +136,22 @@ void testControllerEndpointShouldHaveBothMissingAndPresentTrailingSlashWhenAnnot
}
private static void assertEveryMappingHasBothVersions(final Map, Map>> results) {
- results.forEach((clazz, methodMap) -> {
- methodMap.forEach((method, pathMappings) -> {
- final String className = clazz.getName();
- final String methodName = method.getName();
- Assertions.assertFalse(pathMappings.isEmpty(),
- "Method " + methodName + " should have the default path mappings in " + className + ".\n"
- + "expected to have both: {\"\", \"/\"}");
- pathMappings.stream()
- .filter(path -> !path.endsWith("/"))
- .forEach(path -> {
- Assertions.assertTrue(pathMappings.contains(path + "/"),
- "Method " + methodName + " should have a pair with trailing slash in " + className + ".\n"
- + "expected to have both: {\"" + path + "\", \"" + path + "/\"}\n"
- + "in: " + pathMappings + "\n");
- });
- });
- });
+ results.forEach((clazz, methodMap) -> methodMap
+ .forEach((method, pathMappings) -> {
+ final String className = clazz.getName();
+ final String methodName = method.getName();
+ Assertions.assertFalse(pathMappings.isEmpty(),
+ "Method " + methodName + " should have the default path mappings in " + className + ".\n"
+ + "expected to have both: {\"\", \"/\"}");
+ pathMappings.stream()
+ .filter(path -> !path.endsWith("/"))
+ .forEach(path -> {
+ Assertions.assertTrue(pathMappings.contains(path + "/"),
+ "Method " + methodName + " should have a pair with trailing slash in " + className + ".\n"
+ + "expected to have both: {\"" + path + "\", \"" + path + "/\"}\n"
+ + "in: " + pathMappings + "\n");
+ });
+ }));
}
private Stream> streamAllControllerClasses() {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/common/MetadataControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/common/MetadataControllerTest.java
index 5e3f66db..cbc5ed2c 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/common/MetadataControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/common/MetadataControllerTest.java
@@ -96,7 +96,6 @@ private byte[] getResourceContent() throws IOException {
if (url == null) {
throw new IOException("Resource not found: " + KEY_STORE_RESOURCE);
}
- //noinspection LocalCanBeFinal
try (InputStream inputStream = url.openStream()) {
return inputStream.readAllBytes();
}
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/KeyControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/KeyControllerTest.java
index ca672d80..e8d57609 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/KeyControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/KeyControllerTest.java
@@ -53,8 +53,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/KeyCryptoControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/KeyCryptoControllerTest.java
index 6ec85b2c..18d2ea6a 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/KeyCryptoControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/KeyCryptoControllerTest.java
@@ -44,8 +44,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyCryptoControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/SecretControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/SecretControllerTest.java
index 99822580..020ac1fd 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/SecretControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_2/SecretControllerTest.java
@@ -45,8 +45,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsSecrets.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class SecretControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyControllerTest.java
index 157c7664..652ea663 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyControllerTest.java
@@ -54,8 +54,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyCryptoControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyCryptoControllerTest.java
index 62cd6b84..0747f410 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyCryptoControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyCryptoControllerTest.java
@@ -47,8 +47,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyCryptoControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyPolicyControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyPolicyControllerTest.java
index 6b2f1587..d86bacf5 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyPolicyControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/KeyPolicyControllerTest.java
@@ -28,8 +28,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.KEY_NAME_1;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyPolicyControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/SecretControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/SecretControllerTest.java
index 09d857d1..71ba4a08 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/SecretControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_3/SecretControllerTest.java
@@ -46,8 +46,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsSecrets.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class SecretControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyControllerTest.java
index 31db1d38..d2f25430 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyControllerTest.java
@@ -54,8 +54,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyCryptoControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyCryptoControllerTest.java
index 9d7db702..4b02c636 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyCryptoControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyCryptoControllerTest.java
@@ -47,8 +47,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyCryptoControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyPolicyControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyPolicyControllerTest.java
index de80e0af..fbd8c15d 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyPolicyControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/KeyPolicyControllerTest.java
@@ -28,8 +28,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.KEY_NAME_1;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyPolicyControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/SecretControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/SecretControllerTest.java
index 79f50ff8..28326baf 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/SecretControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_4/SecretControllerTest.java
@@ -46,8 +46,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsSecrets.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class SecretControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyControllerTest.java
index c0bd43e0..aaee881f 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyControllerTest.java
@@ -54,8 +54,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyCryptoControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyCryptoControllerTest.java
index 12e85cdf..96af4255 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyCryptoControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyCryptoControllerTest.java
@@ -47,8 +47,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyCryptoControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyPolicyControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyPolicyControllerTest.java
index 66074b4c..68f7d5ab 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyPolicyControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/KeyPolicyControllerTest.java
@@ -28,8 +28,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.KEY_NAME_1;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyPolicyControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/SecretControllerTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/SecretControllerTest.java
index f1649116..bcf2627b 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/SecretControllerTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/controller/v7_5/SecretControllerTest.java
@@ -46,8 +46,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsSecrets.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class SecretControllerTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/filter/CommonAuthHeaderFilterTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/filter/CommonAuthHeaderFilterTest.java
index 91dd9edb..f57d3fc6 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/filter/CommonAuthHeaderFilterTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/filter/CommonAuthHeaderFilterTest.java
@@ -25,7 +25,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.*;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
class CommonAuthHeaderFilterTest {
@@ -161,6 +160,7 @@ void testShouldNotFilterShouldReturnTrueWhenRequestBaseUriIsPing() {
verify(request, atLeastOnce()).getRequestURI();
}
+ @SuppressWarnings("DataFlowIssue")
@Test
void testConstructorShouldThrowExceptionWhenCalledWithNull() {
//given
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/filter/PortSeparationFilterTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/filter/PortSeparationFilterTest.java
index 3f6fcf72..5e65bd9e 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/filter/PortSeparationFilterTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/filter/PortSeparationFilterTest.java
@@ -8,7 +8,6 @@
import java.io.IOException;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class PortSeparationFilterTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_2/key/KeyEntityToV72PropertiesModelConverterTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_2/key/KeyEntityToV72PropertiesModelConverterTest.java
index 0883a750..7ab1527b 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_2/key/KeyEntityToV72PropertiesModelConverterTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_2/key/KeyEntityToV72PropertiesModelConverterTest.java
@@ -10,6 +10,7 @@
import com.github.nagyesta.lowkeyvault.service.key.impl.KeyCreationInput;
import com.github.nagyesta.lowkeyvault.service.key.impl.KeyVaultKeyEntity;
import com.github.nagyesta.lowkeyvault.service.vault.VaultFake;
+import lombok.Setter;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -113,6 +114,7 @@ void testConvertShouldConvertAllFieldsWhenTheyAreSet(
Assertions.assertEquals(input.getUpdated(), actual.getUpdatedOn());
}
+ @Setter
private final class DummyKeyVaultKeyEntity extends KeyVaultKeyEntity {
private Integer recoverableDays;
private RecoveryLevel recoveryLevel;
@@ -148,19 +150,11 @@ public Integer getRecoverableDays() {
return recoverableDays;
}
- public void setRecoverableDays(final Integer recoverableDays) {
- this.recoverableDays = recoverableDays;
- }
-
@Override
public RecoveryLevel getRecoveryLevel() {
return recoveryLevel;
}
- public void setRecoveryLevel(final RecoveryLevel recoveryLevel) {
- this.recoveryLevel = recoveryLevel;
- }
-
@Override
public byte[] signBytes(final byte[] clear, final SignatureAlgorithm encryptionAlgorithm) {
return new byte[0];
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_2/secret/SecretEntityToV72PropertiesModelConverterTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_2/secret/SecretEntityToV72PropertiesModelConverterTest.java
index 3fdb5412..32a0bed7 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_2/secret/SecretEntityToV72PropertiesModelConverterTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_2/secret/SecretEntityToV72PropertiesModelConverterTest.java
@@ -6,6 +6,7 @@
import com.github.nagyesta.lowkeyvault.service.secret.SecretVaultFake;
import com.github.nagyesta.lowkeyvault.service.secret.impl.KeyVaultSecretEntity;
import com.github.nagyesta.lowkeyvault.service.vault.VaultFake;
+import lombok.Setter;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
@@ -110,6 +111,7 @@ void testConvertShouldConvertAllFieldsWhenTheyAreSet(
Assertions.assertEquals(input.getUpdated(), actual.getUpdatedOn());
}
+ @Setter
private final class DummyKeyVaultSecretEntity extends KeyVaultSecretEntity {
private Integer recoverableDays;
private RecoveryLevel recoveryLevel;
@@ -123,17 +125,10 @@ public Integer getRecoverableDays() {
return recoverableDays;
}
- public void setRecoverableDays(final Integer recoverableDays) {
- this.recoverableDays = recoverableDays;
- }
-
@Override
public RecoveryLevel getRecoveryLevel() {
return recoveryLevel;
}
- public void setRecoveryLevel(final RecoveryLevel recoveryLevel) {
- this.recoveryLevel = recoveryLevel;
- }
}
}
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_3/certificate/CertificateEntityToV73CertificateItemModelConverterTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_3/certificate/CertificateEntityToV73CertificateItemModelConverterTest.java
index f0d10009..65281259 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_3/certificate/CertificateEntityToV73CertificateItemModelConverterTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/mapper/v7_3/certificate/CertificateEntityToV73CertificateItemModelConverterTest.java
@@ -13,8 +13,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstantsCertificates.CERT_NAME_1;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOWKEY_VAULT;
-import static org.mockito.ArgumentMatchers.eq;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class CertificateEntityToV73CertificateItemModelConverterTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/key/KeyEntityToV72BackupConverterTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/key/KeyEntityToV72BackupConverterTest.java
index 20732de0..bb11a389 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/key/KeyEntityToV72BackupConverterTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/key/KeyEntityToV72BackupConverterTest.java
@@ -30,7 +30,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.KEY_1;
import static com.github.nagyesta.lowkeyvault.TestConstants.VALUE_1;
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.VERSIONED_KEY_ENTITY_ID_1_VERSION_1;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
class KeyEntityToV72BackupConverterTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/key/constants/KeyTypeTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/key/constants/KeyTypeTest.java
index 42129de8..7ae43e60 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/key/constants/KeyTypeTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/key/constants/KeyTypeTest.java
@@ -15,7 +15,6 @@
import java.util.Optional;
import java.util.stream.Stream;
-import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.*;
class KeyTypeTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/secret/SecretEntityToV72BackupConverterTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/secret/SecretEntityToV72BackupConverterTest.java
index 5120dffd..45fa294a 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/secret/SecretEntityToV72BackupConverterTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/model/v7_2/secret/SecretEntityToV72BackupConverterTest.java
@@ -22,7 +22,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstants.*;
import static com.github.nagyesta.lowkeyvault.TestConstantsSecrets.VERSIONED_SECRET_ENTITY_ID_1_VERSION_1;
-import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
class SecretEntityToV72BackupConverterTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/VersionedKeyEntityIdTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/VersionedKeyEntityIdTest.java
index 9b9be459..f30e89c5 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/VersionedKeyEntityIdTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/VersionedKeyEntityIdTest.java
@@ -173,7 +173,7 @@ void testAsUriShouldThrowExceptionWhenCalledWithNullQueryString() {
final VersionedKeyEntityId underTest = new VersionedKeyEntityId(HTTPS_LOCALHOST, KEY_NAME_1, KEY_VERSION_1);
//when
- Assertions.assertThrows(IllegalArgumentException.class, () -> underTest.asUri(HTTPS_LOCALHOST_8443, (String) null));
+ Assertions.assertThrows(IllegalArgumentException.class, () -> underTest.asUri(HTTPS_LOCALHOST_8443, null));
//then + exception;
}
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertContentTypeTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertContentTypeTest.java
index fa8cb407..efbfa8f0 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertContentTypeTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertContentTypeTest.java
@@ -29,45 +29,53 @@
@SuppressWarnings("UnnecessaryLocalVariable")
class CertContentTypeTest {
- private static final String EC_CERT = "MIIBRDCB6aADAgECAgR3UZEbMAwGCCqGSM49BAMCBQAwFzEVMBMGA1UEAxMMZWMu"
- + "bG9jYWxob3N0MB4XDTIyMDkxMDE5MDA1NVoXDTIzMDkxMDE5MDA1NVowFzEVMBMG"
- + "A1UEAxMMZWMubG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9QeN"
- + "Y5gGwMQnCSUrFfJ1CQp8ngrTJn9ZzTusUY8Gh5JWennjFdzLIqJ4yhpSzGAl+/jn"
- + "Gv3n+fBjt7mUZu2I76MhMB8wHQYDVR0OBBYEFA2YDS/W2/Dv5qJrmtbE7w+HUtL0"
- + "MAwGCCqGSM49BAMCBQADSAAwRQIgMQAYrmTDkcxQgS33oHbw+H/7YEO43ZDqSOTr"
- + "tn7PQa8CIQCf8JCfvoC0W67JsBRFPDNJEKBuNHVMOWuKjwrXaqynuQ==";
- private static final String RSA_CERT = "MIIDUzCCAjugAwIBAgIQZ03r0foFSbuyMPZn6+/irDANBgkqhkiG9w0BAQsFADAU"
- + "MRIwEAYDVQQDEwlsb2NhbGhvc3QwIBcNMjIwODI4MTIzMDQzWhgPMjA1MjA4Mjgx"
- + "MjQwNDNaMBQxEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQAD"
- + "ggEPADCCAQoCggEBALXdCn8hSkdTXLfEGYdwDfvEfPRl+wipthTDtYVZ6AJGjG53"
- + "mu/nRuf1rFG4W5OXTFV/WL5pbDOsNvvV1PlUG/+VRBVO/r5D0AmHJjVyflozKIhB"
- + "RDx2GgM8pTgpoEVuzJG/pb8Up+kQiCEUjJ1TAf3gojl59lEFatQNsWbHnGvV3xmK"
- + "RpECzBQipRjMi+4U3/9ebgrY91UDj+/tkqK4SWqxeb9qE5H41CHEJXkpgnGJRZFw"
- + "1IDcJntoW+973msI69S5GZZ3ICzLpAeTm1CZyVj/Kn4xn/ag8tHzNAmfhA7gQDtO"
- + "2vVYuF4IKLF5YCI2jNcTeyk0ZPXljgJ9RD8486ECAwEAAaOBnjCBmzAOBgNVHQ8B"
- + "Af8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH"
- + "AwIwHwYDVR0RBBgwFoIJbG9jYWxob3N0ggkxMjcuMC4wLjEwHwYDVR0jBBgwFoAU"
- + "LnKkDUiyqtO+WmZSPeYyhcwSZHMwHQYDVR0OBBYEFC5ypA1IsqrTvlpmUj3mMoXM"
- + "EmRzMA0GCSqGSIb3DQEBCwUAA4IBAQCqTxssPDFRHW1GzA43gph52bY8ZLuSFOcb"
- + "2p98T9STkPzudq9Pqha4n5/N9AIIYpNU/BFGQMvgilmJK1e0r5BqACTZ+xw4Zm92"
- + "KLMVLeVS6mGLKYklJvwjFblfJtjN++l5j5coMGiWgVLQTJhyFwHtWSdh1J0DNbwE"
- + "/eGSDWHJ20KDyt98c7QJIjt87KIh3jd1WRzeRZ7YWWdRxigerYlupO2iFSr28seB"
- + "NjuCqPwdGwuYHGe/SskEqjVYxFoFknPhsn5Y64b1RuJe19qjewYl0NBmBjiEexY1"
- + "Tg/nnzqHPv4GAnWcp4e9IOAB00LfXwFj4D/lTOuGpdUFeIhjN0dx";
+ @SuppressWarnings("SpellCheckingInspection")
+ private static final String EC_CERT = """
+ MIIBRDCB6aADAgECAgR3UZEbMAwGCCqGSM49BAMCBQAwFzEVMBMGA1UEAxMMZWMu\
+ bG9jYWxob3N0MB4XDTIyMDkxMDE5MDA1NVoXDTIzMDkxMDE5MDA1NVowFzEVMBMG\
+ A1UEAxMMZWMubG9jYWxob3N0MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE9QeN\
+ Y5gGwMQnCSUrFfJ1CQp8ngrTJn9ZzTusUY8Gh5JWennjFdzLIqJ4yhpSzGAl+/jn\
+ Gv3n+fBjt7mUZu2I76MhMB8wHQYDVR0OBBYEFA2YDS/W2/Dv5qJrmtbE7w+HUtL0\
+ MAwGCCqGSM49BAMCBQADSAAwRQIgMQAYrmTDkcxQgS33oHbw+H/7YEO43ZDqSOTr\
+ tn7PQa8CIQCf8JCfvoC0W67JsBRFPDNJEKBuNHVMOWuKjwrXaqynuQ==""";
+ @SuppressWarnings("SpellCheckingInspection")
+ private static final String RSA_CERT = """
+ MIIDUzCCAjugAwIBAgIQZ03r0foFSbuyMPZn6+/irDANBgkqhkiG9w0BAQsFADAU\
+ MRIwEAYDVQQDEwlsb2NhbGhvc3QwIBcNMjIwODI4MTIzMDQzWhgPMjA1MjA4Mjgx\
+ MjQwNDNaMBQxEjAQBgNVBAMTCWxvY2FsaG9zdDCCASIwDQYJKoZIhvcNAQEBBQAD\
+ ggEPADCCAQoCggEBALXdCn8hSkdTXLfEGYdwDfvEfPRl+wipthTDtYVZ6AJGjG53\
+ mu/nRuf1rFG4W5OXTFV/WL5pbDOsNvvV1PlUG/+VRBVO/r5D0AmHJjVyflozKIhB\
+ RDx2GgM8pTgpoEVuzJG/pb8Up+kQiCEUjJ1TAf3gojl59lEFatQNsWbHnGvV3xmK\
+ RpECzBQipRjMi+4U3/9ebgrY91UDj+/tkqK4SWqxeb9qE5H41CHEJXkpgnGJRZFw\
+ 1IDcJntoW+973msI69S5GZZ3ICzLpAeTm1CZyVj/Kn4xn/ag8tHzNAmfhA7gQDtO\
+ 2vVYuF4IKLF5YCI2jNcTeyk0ZPXljgJ9RD8486ECAwEAAaOBnjCBmzAOBgNVHQ8B\
+ Af8EBAMCBaAwCQYDVR0TBAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUH\
+ AwIwHwYDVR0RBBgwFoIJbG9jYWxob3N0ggkxMjcuMC4wLjEwHwYDVR0jBBgwFoAU\
+ LnKkDUiyqtO+WmZSPeYyhcwSZHMwHQYDVR0OBBYEFC5ypA1IsqrTvlpmUj3mMoXM\
+ EmRzMA0GCSqGSIb3DQEBCwUAA4IBAQCqTxssPDFRHW1GzA43gph52bY8ZLuSFOcb\
+ 2p98T9STkPzudq9Pqha4n5/N9AIIYpNU/BFGQMvgilmJK1e0r5BqACTZ+xw4Zm92\
+ KLMVLeVS6mGLKYklJvwjFblfJtjN++l5j5coMGiWgVLQTJhyFwHtWSdh1J0DNbwE\
+ /eGSDWHJ20KDyt98c7QJIjt87KIh3jd1WRzeRZ7YWWdRxigerYlupO2iFSr28seB\
+ NjuCqPwdGwuYHGe/SskEqjVYxFoFknPhsn5Y64b1RuJe19qjewYl0NBmBjiEexY1\
+ Tg/nnzqHPv4GAnWcp4e9IOAB00LfXwFj4D/lTOuGpdUFeIhjN0dx""";
private static final int KEY_SIZE = 2048;
- private static final String MIME_BASE64 = "TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwg\r\n"
- + "c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu\r\n"
- + "YQphbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0\r\n"
- + "aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1\r\n"
- + "YXQuCkR1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2\r\n"
- + "ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl\r\n"
- + "dXIKc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1\r\n"
- + "aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgo=";
- private static final byte[] MIME_BYTES = ("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt "
- + "ut labore et dolore magna\naliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut "
- + "aliquip ex ea commodo consequat.\nDuis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore "
- + "eu fugiat nulla pariatur. Excepteur\nsint occaecat cupidatat non proident, sunt in culpa qui officia deserunt "
- + "mollit anim id est laborum.\n").getBytes(StandardCharsets.UTF_8);
+ @SuppressWarnings("SpellCheckingInspection")
+ private static final String MIME_BASE64 = """
+ TG9yZW0gaXBzdW0gZG9sb3Igc2l0IGFtZXQsIGNvbnNlY3RldHVyIGFkaXBpc2NpbmcgZWxpdCwg\r
+ c2VkIGRvIGVpdXNtb2QgdGVtcG9yIGluY2lkaWR1bnQgdXQgbGFib3JlIGV0IGRvbG9yZSBtYWdu\r
+ YQphbGlxdWEuIFV0IGVuaW0gYWQgbWluaW0gdmVuaWFtLCBxdWlzIG5vc3RydWQgZXhlcmNpdGF0\r
+ aW9uIHVsbGFtY28gbGFib3JpcyBuaXNpIHV0IGFsaXF1aXAgZXggZWEgY29tbW9kbyBjb25zZXF1\r
+ YXQuCkR1aXMgYXV0ZSBpcnVyZSBkb2xvciBpbiByZXByZWhlbmRlcml0IGluIHZvbHVwdGF0ZSB2\r
+ ZWxpdCBlc3NlIGNpbGx1bSBkb2xvcmUgZXUgZnVnaWF0IG51bGxhIHBhcmlhdHVyLiBFeGNlcHRl\r
+ dXIKc2ludCBvY2NhZWNhdCBjdXBpZGF0YXQgbm9uIHByb2lkZW50LCBzdW50IGluIGN1bHBhIHF1\r
+ aSBvZmZpY2lhIGRlc2VydW50IG1vbGxpdCBhbmltIGlkIGVzdCBsYWJvcnVtLgo=""";
+ @SuppressWarnings("SpellCheckingInspection")
+ private static final byte[] MIME_BYTES = ("""
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna
+ aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
+ Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur
+ sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
+ """).getBytes(StandardCharsets.UTF_8);
public static Stream instanceProvider() {
return Stream.builder()
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertificateImportInputTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertificateImportInputTest.java
index e4c296bf..cfb3fa9e 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertificateImportInputTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertificateImportInputTest.java
@@ -10,7 +10,6 @@
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;
-import java.security.cert.CertificateParsingException;
import java.util.Objects;
import java.util.Set;
import java.util.stream.Stream;
@@ -42,7 +41,7 @@ public static Stream nullProvider() {
@Test
- void testConstructorShouldUseValuesFromCertificateWhenCalledWithMinimalEcDataUsingPkcs12() throws CertificateParsingException {
+ void testConstructorShouldUseValuesFromCertificateWhenCalledWithMinimalEcDataUsingPkcs12() {
//given
final String certContent = Objects.requireNonNull(ResourceUtils.loadResourceAsBase64String("/cert/ec.p12"));
@@ -67,7 +66,7 @@ void testConstructorShouldUseValuesFromCertificateWhenCalledWithMinimalEcDataUsi
}
@Test
- void testConstructorShouldUseValuesFromCertificateWhenCalledWithMinimalEcDataUsingPem() throws CertificateParsingException {
+ void testConstructorShouldUseValuesFromCertificateWhenCalledWithMinimalEcDataUsingPem() {
//given
final String certContent = Objects.requireNonNull(ResourceUtils.loadResourceAsString("/cert/ec.pem"));
@@ -92,7 +91,7 @@ void testConstructorShouldUseValuesFromCertificateWhenCalledWithMinimalEcDataUsi
}
@Test
- void testConstructorShouldUseValuesFromParsedCertOnlyWhenCalledWithMixedEcDataUsingPem() throws CertificateParsingException {
+ void testConstructorShouldUseValuesFromParsedCertOnlyWhenCalledWithMixedEcDataUsingPem() {
//given
final String certContent = Objects.requireNonNull(ResourceUtils.loadResourceAsString("/cert/ec.pem"));
@@ -144,7 +143,7 @@ void testConstructorShouldUseValuesFromParsedCertOnlyWhenCalledWithMixedEcDataUs
}
@Test
- void testConstructorShouldUseValuesFromKeyWhenCalledWithMinimalEcDataUsingPkcs12() throws CertificateParsingException {
+ void testConstructorShouldUseValuesFromKeyWhenCalledWithMinimalEcDataUsingPkcs12() {
//given
final String certContent = Objects.requireNonNull(ResourceUtils.loadResourceAsBase64String("/cert/ec.p12"));
@@ -162,7 +161,7 @@ void testConstructorShouldUseValuesFromKeyWhenCalledWithMinimalEcDataUsingPkcs12
}
@Test
- void testConstructorShouldUseValuesFromKeyWhenCalledWithMinimalRsaDataUsingPkcs12() throws CertificateParsingException {
+ void testConstructorShouldUseValuesFromKeyWhenCalledWithMinimalRsaDataUsingPkcs12() {
//given
final String certContent = Objects.requireNonNull(ResourceUtils.loadResourceAsBase64String("/cert/rsa.p12"));
@@ -185,7 +184,7 @@ void testConstructorShouldUseValuesFromKeyWhenCalledWithMinimalRsaDataUsingPkcs1
}
@Test
- void testConstructorShouldUseValuesFromKeyWhenCalledWithMinimalRsaDataUsingPem() throws CertificateParsingException {
+ void testConstructorShouldUseValuesFromKeyWhenCalledWithMinimalRsaDataUsingPem() {
//given
final String certContent = Objects.requireNonNull(ResourceUtils.loadResourceAsString("/cert/rsa.pem"));
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertificateLifetimeActionPolicyTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertificateLifetimeActionPolicyTest.java
index 1b297bfc..12a46968 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertificateLifetimeActionPolicyTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/CertificateLifetimeActionPolicyTest.java
@@ -22,7 +22,6 @@
import static com.github.nagyesta.lowkeyvault.service.certificate.CertificateLifetimeActionTriggerType.DAYS_BEFORE_EXPIRY;
import static com.github.nagyesta.lowkeyvault.service.certificate.impl.CertificateCreationInput.DEFAULT_VALIDITY_MONTHS;
import static java.time.temporal.ChronoUnit.DAYS;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
class CertificateLifetimeActionPolicyTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyUsageEnumTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyUsageEnumTest.java
index 929c1a5f..1675f2e4 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyUsageEnumTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyUsageEnumTest.java
@@ -66,9 +66,8 @@ void testCombiningItemsShouldCreateSingleKeyUsageWhenCalledForValidSetOfUsages()
final KeyUsage actual = Stream.of(values).collect(KeyUsageEnum.toKeyUsage());
//then
- Stream.of(values).forEach(value -> {
- Assertions.assertTrue(actual.hasUsages(value.getCode()), "Usage must be present: " + value.getValue());
- });
+ Stream.of(values).forEach(value -> Assertions
+ .assertTrue(actual.hasUsages(value.getCode()), "Usage must be present: " + value.getValue()));
}
@ParameterizedTest
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyVaultCertificateEntityTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyVaultCertificateEntityTest.java
index 7e21b2e9..defcbc23 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyVaultCertificateEntityTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/certificate/impl/KeyVaultCertificateEntityTest.java
@@ -32,7 +32,6 @@
import static com.github.nagyesta.lowkeyvault.TestConstantsKeys.VERSIONED_KEY_ENTITY_ID_1_VERSION_1;
import static com.github.nagyesta.lowkeyvault.TestConstantsUri.HTTPS_LOCALHOST_8443;
import static com.github.nagyesta.lowkeyvault.service.certificate.impl.CertAuthorityType.UNKNOWN;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
class KeyVaultCertificateEntityTest {
diff --git a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/key/impl/KeyVaultFakeImplTest.java b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/key/impl/KeyVaultFakeImplTest.java
index 6efe29c7..e410a5db 100644
--- a/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/key/impl/KeyVaultFakeImplTest.java
+++ b/lowkey-vault-app/src/test/java/com/github/nagyesta/lowkeyvault/service/key/impl/KeyVaultFakeImplTest.java
@@ -976,7 +976,7 @@ void testCreateKeyVersionForCertificateShouldSetFieldsAndManagedFlagWhenCalledWi
@ParameterizedTest
@MethodSource("certificateNullProvider")
void testCreateKeyVersionForCertificateShouldThrowExceptionWhenCalledWithNulls(
- final String name, final KeyCreationInput extends Object> input,
+ final String name, final KeyCreationInput> input,
final OffsetDateTime notBefore, final OffsetDateTime expiry) {
//given
final KeyVaultFake underTest = createUnderTest();
diff --git a/lowkey-vault-client/build.gradle b/lowkey-vault-client/build.gradle
deleted file mode 100644
index 1cfb89bc..00000000
--- a/lowkey-vault-client/build.gradle
+++ /dev/null
@@ -1,88 +0,0 @@
-plugins {
- id 'java'
- alias(libs.plugins.lombok)
-}
-
-group = "${rootProject.group}"
-
-project.ext {
- artifactDisplayName = "Lowkey Vault - Client"
- artifactDescription = "HTTP Client provider for Lowkey Vault tests."
-}
-
-dependencies {
- implementation(libs.azure.security.keyvault.keys) {
- exclude(group: "io.netty")
- }
- implementation(libs.azure.security.keyvault.secrets) {
- exclude(group: "io.netty")
- }
- implementation(libs.azure.security.keyvault.certificates) {
- exclude(group: "io.netty")
- }
- implementation "com.fasterxml.jackson:jackson-bom:${libs.versions.jackson.get()}@pom"
- implementation libs.bundles.jackson
- implementation libs.httpclient
- implementation libs.commons.codec
- compileOnly libs.findbugs.jsr305
- annotationProcessor libs.lombok
- testImplementation libs.mockito.core
- testImplementation libs.jupiter
- testRuntimeOnly("org.junit.platform:junit-platform-launcher")
- testImplementation libs.logback.classic
-}
-
-java {
- sourceCompatibility = JavaVersion.VERSION_11
- toolchain {
- languageVersion = JavaLanguageVersion.of(11)
- }
- withJavadocJar()
- withSourcesJar()
-}
-
-test {
- useJUnitPlatform()
-}
-
-publishing {
- publications {
- mavenJava(MavenPublication) {
- from components.java
- artifactId = "${project.name}"
- pom {
- name = "${project.artifactDisplayName}"
- description = "${project.artifactDescription}"
- url = rootProject.ext.repoUrl
- packaging = "jar"
- licenses {
- license {
- name = rootProject.ext.licenseName
- url = rootProject.ext.licenseUrl
- }
- }
- developers {
- developer {
- id = rootProject.ext.maintainerId
- name = rootProject.ext.maintainerName
- url = rootProject.ext.maintainerUrl
- }
- }
- scm {
- connection = rootProject.ext.scmConnection
- developerConnection = rootProject.ext.scmConnection
- url = rootProject.ext.scmProjectUrl
- }
- withXml {
- asNode().dependencies.'*'.findAll() {
- it.scope.text() == 'runtime'
- }.each { it.scope*.value = 'compile' }
- }
- }
- }
- }
-}
-
-signing {
- sign publishing.publications.mavenJava
-}
diff --git a/lowkey-vault-client/build.gradle.kts b/lowkey-vault-client/build.gradle.kts
new file mode 100644
index 00000000..bbe9c183
--- /dev/null
+++ b/lowkey-vault-client/build.gradle.kts
@@ -0,0 +1,134 @@
+import groovy.util.Node
+import groovy.util.NodeList
+
+plugins {
+ id("java")
+ signing
+ `maven-publish`
+ alias(libs.plugins.lombok)
+ alias(libs.plugins.licensee.plugin)
+}
+
+group = rootProject.group
+
+extra.apply {
+ set("artifactDisplayName", "Lowkey Vault - Client")
+ set("artifactDescription", "HTTP Client provider for Lowkey Vault tests.")
+}
+
+dependencies {
+ implementation(libs.azure.security.keyvault.keys) {
+ exclude(group = "io.netty")
+ }
+ implementation(libs.azure.security.keyvault.secrets) {
+ exclude(group = "io.netty")
+ }
+ implementation(libs.azure.security.keyvault.certificates) {
+ exclude(group = "io.netty")
+ }
+ implementation(platform("com.fasterxml.jackson:jackson-bom:${libs.versions.jackson.get()}"))
+ implementation(libs.bundles.jackson)
+ implementation(libs.httpclient)
+ implementation(libs.commons.codec)
+ compileOnly(libs.findbugs.jsr305)
+ annotationProcessor(libs.lombok)
+ testImplementation(libs.mockito.core)
+ testImplementation(libs.jupiter)
+ testRuntimeOnly("org.junit.platform:junit-platform-launcher")
+ testImplementation(libs.logback.classic)
+}
+
+licensee {
+ allow("Apache-2.0")
+ allow("MIT")
+ allow("MIT-0")
+ allow("BSD-2-Clause")
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(11)
+ }
+ withJavadocJar()
+ withSourcesJar()
+}
+
+val copyLegalDocs = tasks.register("copyLegalDocs") {
+ from(file("${project.rootProject.projectDir}/LICENSE"))
+ from(layout.buildDirectory.file("reports/licensee/artifacts.json").get().asFile)
+ from(layout.buildDirectory.file("reports/bom.json").get().asFile)
+ into(layout.buildDirectory.dir("resources/main/META-INF").get().asFile)
+ rename("artifacts.json", "dependency-licenses.json")
+ rename("bom.json", "SBOM.json")
+}.get()
+copyLegalDocs.dependsOn(tasks.licensee)
+copyLegalDocs.dependsOn(tasks.cyclonedxBom)
+tasks.javadoc.get().dependsOn(copyLegalDocs)
+tasks.compileJava.get().dependsOn(copyLegalDocs)
+tasks.processResources.get().finalizedBy(copyLegalDocs)
+
+tasks.test {
+ useJUnitPlatform()
+ finalizedBy(tasks.getByName("jacocoTestReport"))
+}
+
+publishing {
+ repositories {
+ maven {
+ name = "GitHubPackages"
+ url = uri(rootProject.extra.get("githubMavenRepoUrl").toString())
+ credentials {
+ username = rootProject.extra.get("gitUser").toString()
+ password = rootProject.extra.get("gitToken").toString()
+ }
+ }
+ }
+ publications {
+ create("mavenJava") {
+ from(components["java"])
+ artifactId = project.name
+ pom {
+ name.set(project.extra.get("artifactDisplayName").toString())
+ description.set(project.extra.get("artifactDescription").toString())
+ url.set(rootProject.extra.get("repoUrl").toString())
+ packaging = "jar"
+ licenses {
+ license {
+ name.set(rootProject.extra.get("licenseName").toString())
+ url.set(rootProject.extra.get("licenseUrl").toString())
+ }
+ }
+ developers {
+ developer {
+ id.set(rootProject.extra.get("maintainerId").toString())
+ name.set(rootProject.extra.get("maintainerName").toString())
+ email.set(rootProject.extra.get("maintainerUrl").toString())
+ }
+ }
+ scm {
+ connection.set(rootProject.extra.get("scmConnection").toString())
+ developerConnection.set(rootProject.extra.get("scmConnection").toString())
+ url.set(rootProject.extra.get("scmProjectUrl").toString())
+ }
+ }
+ pom.withXml {
+ asNode().apply {
+ (get("dependencies") as NodeList).forEach { depsNode ->
+ ((depsNode as Node).get("dependency") as NodeList).forEach { depNode ->
+ ((depNode as Node).get("scope") as NodeList).forEach { scope ->
+ if (scope is Node && "runtime" == scope.text()) {
+ scope.setValue("compile")
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+signing {
+ sign(publishing.publications["mavenJava"])
+}
diff --git a/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/ApacheHttpClient.java b/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/ApacheHttpClient.java
index 50c7f7a0..b48f374b 100644
--- a/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/ApacheHttpClient.java
+++ b/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/ApacheHttpClient.java
@@ -19,7 +19,8 @@
import java.util.function.Function;
/**
- * Modified class based on https://github.com/Azure/azure-sdk-for-java/wiki/Custom-HTTP-Clients.
+ * Modified class based on
+ * https://github.com/Azure/azure-sdk-for-java/wiki/Custom-HTTP-Clients.
*/
public final class ApacheHttpClient implements HttpClient {
private final org.apache.http.client.HttpClient httpClient;
diff --git a/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/RecoveryLevel.java b/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/RecoveryLevel.java
index f49bb7f3..f0830c9c 100644
--- a/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/RecoveryLevel.java
+++ b/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/RecoveryLevel.java
@@ -5,41 +5,49 @@
import java.util.Arrays;
+@SuppressWarnings("checkstyle:LineLength")
public enum RecoveryLevel {
/**
* Purgeable and not recoverable, subscription not protected.
- * See: https://docs.microsoft.com/en-us/rest/api/keyvault/create-key/create-key#deletionrecoverylevel
+ * See:
+ * Deletion Recovery Key Level
*/
PURGEABLE("Purgeable"),
/**
* Purgeable and recoverable, subscription not protected.
- * See: https://docs.microsoft.com/en-us/rest/api/keyvault/create-key/create-key#deletionrecoverylevel
+ * See:
+ * Deletion Recovery Key Level
*/
RECOVERABLE_AND_PURGEABLE("Recoverable+Purgeable"),
/**
* Recoverable, not purgeable, subscription not protected.
- * See: https://docs.microsoft.com/en-us/rest/api/keyvault/create-key/create-key#deletionrecoverylevel
+ * See:
+ * Deletion Recovery Key Level
*/
RECOVERABLE("Recoverable"),
/**
* Recoverable, not purgeable, subscription protected.
- * See: https://docs.microsoft.com/en-us/rest/api/keyvault/create-key/create-key#deletionrecoverylevel
+ * See:
+ * Deletion Recovery Key Level
*/
RECOVERABLE_AND_PROTECTED_SUBSCRIPTION("Recoverable+ProtectedSubscription"),
/**
* Recoverable for a customized time, purgeable, subscription not protected.
- * See: https://docs.microsoft.com/en-us/rest/api/keyvault/create-key/create-key#deletionrecoverylevel
+ * See:
+ * Deletion Recovery Key Level
*/
CUSTOMIZED_RECOVERABLE_AND_PURGEABLE("CustomizedRecoverable+Purgeable"),
/**
* Recoverable for a customized time, not purgeable, subscription not protected.
- * See: https://docs.microsoft.com/en-us/rest/api/keyvault/create-key/create-key#deletionrecoverylevel
+ * See:
+ * Deletion Recovery Key Level
*/
CUSTOMIZED_RECOVERABLE("CustomizedRecoverable"),
/**
* Recoverable for a customized time, not purgeable, subscription protected.
- * See: https://docs.microsoft.com/en-us/rest/api/keyvault/create-key/create-key#deletionrecoverylevel
+ * See:
+ * Deletion Recovery Key Level
*/
CUSTOMIZED_RECOVERABLE_AND_PROTECTED_SUBSCRIPTION("CustomizedRecoverable+ProtectedSubscription");
diff --git a/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/impl/LowkeyVaultManagementClientImpl.java b/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/impl/LowkeyVaultManagementClientImpl.java
index ddd62a4d..48c9a816 100644
--- a/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/impl/LowkeyVaultManagementClientImpl.java
+++ b/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/impl/LowkeyVaultManagementClientImpl.java
@@ -160,7 +160,6 @@ public String exportActive() {
public String unpackBackup(final byte[] backup) throws IOException {
final byte[] nonNullBackup = Optional.ofNullable(backup)
.orElseThrow(() -> new IllegalArgumentException("Backup cannot be null"));
- //noinspection LocalCanBeFinal
try (ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(nonNullBackup);
GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream)) {
final String json = new String(gzipInputStream.readAllBytes());
@@ -170,7 +169,6 @@ public String unpackBackup(final byte[] backup) throws IOException {
@Override
public byte[] compressBackup(@NonNull final String backup) throws IOException {
- //noinspection LocalCanBeFinal
try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
gzipOutputStream.write(backup.getBytes(StandardCharsets.UTF_8));
@@ -223,7 +221,6 @@ private ResponseEntity doSend(final HttpRequest request) {
}
private ResponseEntity doSendNotNull(final HttpRequest request) {
- //noinspection LocalCanBeFinal
try (HttpResponse response = instance.send(request).block()) {
return new ResponseEntity(Objects.requireNonNull(response), objectReader);
} catch (final Exception e) {
diff --git a/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/impl/ResponseEntity.java b/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/impl/ResponseEntity.java
index 453de8df..4460822d 100644
--- a/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/impl/ResponseEntity.java
+++ b/lowkey-vault-client/src/main/java/com/github/nagyesta/lowkeyvault/http/management/impl/ResponseEntity.java
@@ -6,6 +6,7 @@
import com.fasterxml.jackson.databind.ObjectReader;
import com.github.nagyesta.lowkeyvault.http.management.LowkeyVaultException;
import com.github.nagyesta.lowkeyvault.http.management.VaultModel;
+import lombok.Getter;
import lombok.NonNull;
import org.apache.http.HttpStatus;
@@ -14,6 +15,7 @@
final class ResponseEntity {
public static final ListTypeReference VAULT_MODEL_LIST_TYPE_REF = new ListTypeReference();
+ @Getter
private final int responseCode;
private final String responseBody;
private final ObjectReader reader;
@@ -29,10 +31,6 @@ public boolean isSuccessful() {
return responseCode >= HttpStatus.SC_OK && responseCode < HttpStatus.SC_MULTIPLE_CHOICES;
}
- public int getResponseCode() {
- return responseCode;
- }
-
public T getResponseObject(final Class type) {
try {
return reader.forType(type).readValue(responseBody);
diff --git a/lowkey-vault-client/src/test/java/com/github/nagyesta/lowkeyvault/http/ContentLengthHeaderRemoverTest.java b/lowkey-vault-client/src/test/java/com/github/nagyesta/lowkeyvault/http/ContentLengthHeaderRemoverTest.java
index 56f8b707..7a5f2b16 100644
--- a/lowkey-vault-client/src/test/java/com/github/nagyesta/lowkeyvault/http/ContentLengthHeaderRemoverTest.java
+++ b/lowkey-vault-client/src/test/java/com/github/nagyesta/lowkeyvault/http/ContentLengthHeaderRemoverTest.java
@@ -1,20 +1,16 @@
package com.github.nagyesta.lowkeyvault.http;
-import org.apache.http.HttpException;
import org.apache.http.HttpRequest;
import org.apache.http.protocol.HTTP;
import org.apache.http.protocol.HttpContext;
import org.junit.jupiter.api.Test;
-import java.io.IOException;
-
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
class ContentLengthHeaderRemoverTest {
@Test
- void testProcessShouldRemoveContentLengthWhenCalled() throws HttpException, IOException {
+ void testProcessShouldRemoveContentLengthWhenCalled() {
//given
final ContentLengthHeaderRemover underTest = new ContentLengthHeaderRemover();
final HttpRequest request = mock(HttpRequest.class);
diff --git a/lowkey-vault-client/src/test/java/com/github/nagyesta/lowkeyvault/http/management/impl/ResponseEntityTest.java b/lowkey-vault-client/src/test/java/com/github/nagyesta/lowkeyvault/http/management/impl/ResponseEntityTest.java
index 8cf8b27e..65d6e04e 100644
--- a/lowkey-vault-client/src/test/java/com/github/nagyesta/lowkeyvault/http/management/impl/ResponseEntityTest.java
+++ b/lowkey-vault-client/src/test/java/com/github/nagyesta/lowkeyvault/http/management/impl/ResponseEntityTest.java
@@ -23,7 +23,6 @@
import java.util.stream.Stream;
import static com.github.nagyesta.lowkeyvault.http.management.impl.ResponseEntity.VAULT_MODEL_LIST_TYPE_REF;
-import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.*;
class ResponseEntityTest {
diff --git a/lowkey-vault-docker/README.md b/lowkey-vault-docker/README.md
index 3d23cb95..dc4aba1d 100644
--- a/lowkey-vault-docker/README.md
+++ b/lowkey-vault-docker/README.md
@@ -22,7 +22,7 @@ This is the root of the Docker image. Visit the [Readme](../README.md) in the re
## Startup parameters
In case you need to change any of the default parameters, you can use the ```LOWKEY_ARGS``` environment variable with
-all necessary arguments supported by [Lowkey Vault App](../lowkey-vault-app/README.md). [Gradle example](build.gradle#L63).
+all necessary arguments supported by [Lowkey Vault App](../lowkey-vault-app/README.md). [Gradle example](build.gradle.kts#L63).
Shell example:
diff --git a/lowkey-vault-docker/build.gradle b/lowkey-vault-docker/build.gradle
deleted file mode 100644
index f960f546..00000000
--- a/lowkey-vault-docker/build.gradle
+++ /dev/null
@@ -1,104 +0,0 @@
-plugins {
- id 'java'
- alias(libs.plugins.abort.mission)
- alias(libs.plugins.docker)
- alias(libs.plugins.docker.run)
-}
-
-version = rootProject.version
-//noinspection GroovyUnusedAssignment
-repositories {
- mavenCentral()
-}
-
-group = "${rootProject.group}"
-
-dependencies {
- testImplementation project(":lowkey-vault-client")
- testImplementation libs.bouncycastle.bcpkix
- testImplementation libs.httpclient
- testImplementation libs.commons.codec
- testImplementation(libs.azure.security.keyvault.keys) {
- exclude(group: "io.netty")
- }
- testImplementation(libs.azure.security.keyvault.secrets) {
- exclude(group: "io.netty")
- }
- testImplementation(libs.azure.security.keyvault.certificates) {
- exclude(group: "io.netty")
- }
- testImplementation libs.bundles.cucumber
- testImplementation libs.abort.mission.cucumber
- testImplementation libs.findbugs.jsr305
-}
-
-java {
- sourceCompatibility = JavaVersion.VERSION_17
- toolchain {
- languageVersion = JavaLanguageVersion.of(17)
- }
- withJavadocJar()
- withSourcesJar()
-}
-
-tasks.register('copyAppJar', Copy.class) {
- inputs.file(rootProject.project(":lowkey-vault-app").tasks.named("bootJar").get().outputs.files.singleFile)
- outputs.file(layout.buildDirectory.file("app/lowkey-vault.jar").get().getAsFile())
- from rootProject.project(":lowkey-vault-app").tasks.named("bootJar").get().outputs.files.singleFile
- into layout.buildDirectory.dir("app/").get().getAsFile()
- rename {
- 'lowkey-vault.jar'
- }
- dependsOn(":lowkey-vault-app:bootJar")
- dependsOn(":lowkey-vault-app:test")
-}
-
-docker {
- name "lowkey-vault:${rootProject.version}"
- tag 'dockerNagyesta', "nagyesta/lowkey-vault:${rootProject.version}"
- dockerfile file('src/docker/Dockerfile')
- files layout.buildDirectory.file("app/lowkey-vault.jar").get().getAsFile()
- pull true
- noCache true
-}
-tasks.dockerPrepare.inputs.file(layout.buildDirectory.file("app/lowkey-vault.jar").get().getAsFile())
-tasks.dockerPrepare.dependsOn copyAppJar
-clean.mustRunAfter dockerClean
-
-dockerRun {
- name "lowkey-vault"
- image "lowkey-vault:${rootProject.version}"
- ports "8444:8443"
- daemonize true
- arguments '--rm'
- env 'LOWKEY_ARGS': '--LOWKEY_DEBUG_REQUEST_LOG=false ' +
- '--LOWKEY_VAULT_NAMES=certs-generic,keys-generic,keys-delete,secrets-generic,secrets-delete ' +
- '--LOWKEY_VAULT_ALIASES=keys-delete.localhost=keys-alias-delete.localhost:,' +
- 'secrets-delete.localhost=secrets-alias-delete.localhost:'
-}
-tasks.dockerRun.dependsOn tasks.docker
-
-test {
- inputs.file(rootProject.project(":lowkey-vault-app").tasks.named("bootJar").get().outputs.files.singleFile)
- outputs.file(layout.buildDirectory.file("reports/abort-mission/abort-mission-report.json").get().getAsFile())
- outputs.dir(layout.buildDirectory.dir("reports/cucumber").get().getAsFile())
- systemProperty("cucumber.execution.parallel.enabled", System.getProperty("test.parallel"))
- systemProperty("cucumber.filter.tags", "not @ignore")
- useTestNG {
- systemProperty("abort-mission.report.directory", layout.buildDirectory.dir("reports/abort-mission/").get().getAsFile())
- systemProperty("abort-mission.force.abort.evaluators", rootProject.ext.dockerAbortGroups)
- systemProperty("abort-mission.suppress.abort.evaluators", rootProject.ext.dockerSuppressGroups)
- }
-}
-test.dependsOn tasks.cleanTest
-test.dependsOn tasks.dockerRun
-test.finalizedBy tasks.dockerStop
-
-abortMission {
- toolVersion libs.versions.abortMission.get()
-}
-
-tasks.register('publish') {
- dependsOn(build)
- dependsOn("dockerPushDockerNagyesta")
-}
diff --git a/lowkey-vault-docker/build.gradle.kts b/lowkey-vault-docker/build.gradle.kts
new file mode 100644
index 00000000..ed732427
--- /dev/null
+++ b/lowkey-vault-docker/build.gradle.kts
@@ -0,0 +1,102 @@
+plugins {
+ id("java")
+ alias(libs.plugins.abort.mission)
+ alias(libs.plugins.docker)
+ alias(libs.plugins.docker.run)
+}
+
+version = rootProject.version
+group = rootProject.group
+
+repositories {
+ mavenCentral()
+}
+
+dependencies {
+ testImplementation(project(":lowkey-vault-client"))
+ testImplementation(libs.bouncycastle.bcpkix)
+ testImplementation(libs.httpclient)
+ testImplementation(libs.commons.codec)
+ testImplementation(libs.azure.security.keyvault.keys) {
+ exclude(group = "io.netty")
+ }
+ testImplementation(libs.azure.security.keyvault.secrets) {
+ exclude(group = "io.netty")
+ }
+ testImplementation(libs.azure.security.keyvault.certificates) {
+ exclude(group = "io.netty")
+ }
+ testImplementation(libs.bundles.cucumber)
+ testImplementation(libs.abort.mission.cucumber)
+ testImplementation(libs.findbugs.jsr305)
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_17
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(17)
+ }
+ withJavadocJar()
+ withSourcesJar()
+}
+
+tasks.register("copyAppJar") {
+ inputs.file(rootProject.project(":lowkey-vault-app").tasks.named("bootJar").get().outputs.files.singleFile)
+ outputs.file(layout.buildDirectory.file("app/lowkey-vault.jar").get().asFile)
+ from(rootProject.project(":lowkey-vault-app").tasks.named("bootJar").get().outputs.files.singleFile)
+ into(layout.buildDirectory.dir("app/").get().asFile)
+ rename {
+ "lowkey-vault.jar"
+ }
+ dependsOn(":lowkey-vault-app:bootJar")
+ dependsOn(":lowkey-vault-app:test")
+}
+
+docker {
+ name = "lowkey-vault:${rootProject.version}"
+ tag("dockerNagyesta", "nagyesta/lowkey-vault:${rootProject.version}")
+ setDockerfile(file("src/docker/Dockerfile"))
+ files(layout.buildDirectory.file("app/lowkey-vault.jar").get().asFile)
+ pull(true)
+ noCache(true)
+}
+tasks.getByName("dockerPrepare").inputs.file(layout.buildDirectory.file("app/lowkey-vault.jar").get().asFile)
+tasks.getByName("dockerPrepare").dependsOn(tasks.getByName("copyAppJar"))
+tasks.getByName("clean").mustRunAfter(tasks.getByName("dockerClean"))
+
+dockerRun {
+ name = "lowkey-vault"
+ image = "lowkey-vault:${rootProject.version}"
+ ports("8444:8443")
+ daemonize = true
+ arguments("--rm")
+ env(mapOf("LOWKEY_ARGS" to "--LOWKEY_DEBUG_REQUEST_LOG=false " +
+ "--LOWKEY_VAULT_NAMES=certs-generic,keys-generic,keys-delete,secrets-generic,secrets-delete " +
+ "--LOWKEY_VAULT_ALIASES=keys-delete.localhost=keys-alias-delete.localhost:,secrets-delete.localhost=secrets-alias-delete.localhost:"))
+}
+tasks.getByName("dockerRun").dependsOn(tasks.getByName("docker"))
+
+tasks.test {
+ inputs.file(file("src/docker/Dockerfile"))
+ inputs.file(rootProject.project(":lowkey-vault-app").tasks.named("bootJar").get().outputs.files.singleFile)
+ outputs.file(layout.buildDirectory.file("reports/abort-mission/abort-mission-report.json").get().asFile)
+ outputs.dir(layout.buildDirectory.dir("reports/cucumber").get().asFile)
+ useTestNG {
+ systemProperty("cucumber.execution.parallel.enabled", System.getProperty("test.parallel"))
+ systemProperty("cucumber.filter.tags", "not @ignore")
+ systemProperty("abort-mission.report.directory", layout.buildDirectory.dir("reports/abort-mission/").get().asFile)
+ systemProperty("abort-mission.force.abort.evaluators", rootProject.extra.get("dockerAbortGroups") as String)
+ systemProperty("abort-mission.suppress.abort.evaluators", rootProject.extra.get("dockerSuppressGroups") as String)
+ }
+ dependsOn(tasks.getByName("dockerRun"))
+ finalizedBy(tasks.getByName("dockerStop"))
+}
+
+abortMission {
+ toolVersion = libs.versions.abortMission.get()
+}
+
+tasks.register("publish") {
+ dependsOn("build")
+ dependsOn("dockerPushDockerNagyesta")
+}
diff --git a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/context/CommonTestContext.java b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/context/CommonTestContext.java
index 5cb52aa9..5381a758 100644
--- a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/context/CommonTestContext.java
+++ b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/context/CommonTestContext.java
@@ -26,7 +26,7 @@ public abstract class CommonTestContext {
private List listedIds;
private List listedManagedIds;
private List deletedRecoveryIds;
- private Map backups = new HashMap();
+ private final Map backups = new HashMap<>();
public CommonTestContext(final ApacheHttpClientProvider provider) {
this.provider = provider;
diff --git a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/context/ManagementTestContext.java b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/context/ManagementTestContext.java
index 3a1874bc..2d8cf3ba 100644
--- a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/context/ManagementTestContext.java
+++ b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/context/ManagementTestContext.java
@@ -14,7 +14,7 @@ public class ManagementTestContext {
private final ObjectMapper objectMapper = new ObjectMapper();
private ApacheHttpClientProvider provider;
private LowkeyVaultManagementClient client;
- private Map> vaultLists = new TreeMap<>();
+ private final Map> vaultLists = new TreeMap<>();
public ManagementTestContext(final ApacheHttpClientProvider provider) {
this.provider = provider;
diff --git a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CertificateStepDefAssertion.java b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CertificateStepDefAssertion.java
index 0374a0e2..e4df043c 100644
--- a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CertificateStepDefAssertion.java
+++ b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CertificateStepDefAssertion.java
@@ -230,8 +230,8 @@ private static OffsetDateTime calculateExpiry(final int expiryMonths, final int
private PrivateKey getKeyFromPem(final byte[] content, final X509Certificate certificate) throws CryptoException {
try {
final KeyFactory kf = KeyFactory.getInstance(certificate.getPublicKey().getAlgorithm(), KeyGenUtil.BOUNCY_CASTLE_PROVIDER);
- final PKCS8EncodedKeySpec privSpec = new PKCS8EncodedKeySpec(content);
- return kf.generatePrivate(privSpec);
+ final PKCS8EncodedKeySpec privateSpec = new PKCS8EncodedKeySpec(content);
+ return kf.generatePrivate(privateSpec);
} catch (final Exception e) {
throw new CryptoException("Failed to acquire key, sue to exception: " + e.getMessage(), e);
}
diff --git a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CertificatesStepDefs.java b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CertificatesStepDefs.java
index 1bb15839..c07d3486 100644
--- a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CertificatesStepDefs.java
+++ b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CertificatesStepDefs.java
@@ -215,17 +215,15 @@ public void certificatesWithMultiImportPrefixAreDeleted(final int count, final S
@And("{int} certificates with {name} prefix are purged")
public void certificatesWithMultiImportPrefixArePurged(final int count, final String prefix) {
final CertificateClient client = context.getClient(context.getCertificateServiceVersion());
- IntStream.range(1, count + 1).forEach(i -> {
- client.purgeDeletedCertificate(prefix + i);
- });
+ IntStream.range(1, count + 1).forEach(i -> client
+ .purgeDeletedCertificate(prefix + i));
}
@And("{int} certificates with {name} prefix are recovered")
public void certificatesWithMultiImportPrefixAreRecovered(final int count, final String prefix) {
final CertificateClient client = context.getClient(context.getCertificateServiceVersion());
- IntStream.range(1, count + 1).forEach(i -> {
- client.beginRecoverDeletedCertificate(prefix + i).waitForCompletion();
- });
+ IntStream.range(1, count + 1).forEach(i -> client
+ .beginRecoverDeletedCertificate(prefix + i).waitForCompletion());
}
@When("the deleted certificates are listed")
diff --git a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CommonAssertions.java b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CommonAssertions.java
index 10e1b85b..ad2f7ba2 100644
--- a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CommonAssertions.java
+++ b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/CommonAssertions.java
@@ -65,7 +65,6 @@ protected void assertByteArrayLength(final int byteArrayLength, final byte[] byt
}
protected String readResourceContent(final String resource) throws IOException {
- //noinspection LocalCanBeFinal
try (InputStream stream = getClass().getResourceAsStream(resource);
InputStreamReader reader = new InputStreamReader(Objects.requireNonNull(stream));
BufferedReader bufferedReader = new BufferedReader(reader)) {
diff --git a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/KeysStepDefsAssertions.java b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/KeysStepDefsAssertions.java
index 4d8a8064..a8da1c66 100644
--- a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/KeysStepDefsAssertions.java
+++ b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/KeysStepDefsAssertions.java
@@ -202,7 +202,7 @@ public void theKeyNamedAutoRotateHasVersions(final int versions) {
final List keyVersions = context.getClient(context.getKeyServiceVersion())
.listPropertiesOfKeyVersions(context.getLastResult().getName())
.stream()
- .collect(Collectors.toList());
+ .toList();
assertEquals(versions, keyVersions.size());
}
diff --git a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/ListContainer.java b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/ListContainer.java
deleted file mode 100644
index 8f7b1e9f..00000000
--- a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/ListContainer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.github.nagyesta.lowkeyvault.steps;
-
-import java.util.List;
-import java.util.function.Consumer;
-
-public class ListContainer {
- private final List list;
-
- public ListContainer(final List list) {
- this.list = list;
- }
-
- public int size() {
- return this.list.size();
- }
-
- public void forEach(final Consumer consumer) {
- this.list.forEach(consumer);
- }
-
- public List getList() {
- return list;
- }
-}
diff --git a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/ParameterTypeDefs.java b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/ParameterTypeDefs.java
index b3a31cf9..fec9e39e 100644
--- a/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/ParameterTypeDefs.java
+++ b/lowkey-vault-docker/src/test/java/com/github/nagyesta/lowkeyvault/steps/ParameterTypeDefs.java
@@ -8,7 +8,6 @@
import io.cucumber.java.ParameterType;
import java.nio.charset.StandardCharsets;
-import java.text.ParseException;
import java.time.OffsetDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -74,7 +73,7 @@ public int rsaKeySize(final String size) {
}
@ParameterType("([0-9]{4}-[0-9]{2}-[0-9]{2})")
- public OffsetDateTime expiry(final String date) throws ParseException {
+ public OffsetDateTime expiry(final String date) {
return OffsetDateTime.parse(date + "T00:00:00+00:00", DateTimeFormatter.ISO_OFFSET_DATE_TIME);
}
diff --git a/lowkey-vault-testcontainers/build.gradle b/lowkey-vault-testcontainers/build.gradle
deleted file mode 100644
index 9a2c1fa5..00000000
--- a/lowkey-vault-testcontainers/build.gradle
+++ /dev/null
@@ -1,88 +0,0 @@
-plugins {
- id 'java'
-}
-
-group = "${rootProject.group}"
-
-project.ext {
- artifactDisplayName = "Lowkey Vault - Testcontainers"
- artifactDescription = "Support for using Lowkey Vault with Testcontainers."
-}
-
-dependencies {
- implementation platform("org.testcontainers:testcontainers-bom:${libs.versions.testcontainers.get()}") //import bom
- implementation libs.testcontainers
- testImplementation libs.testcontainers.jupiter
- testImplementation project(":lowkey-vault-client")
- testImplementation libs.bundles.jackson
- testImplementation libs.httpclient
- testImplementation libs.commons.codec
- testImplementation(libs.azure.security.keyvault.keys) {
- exclude(group: "io.netty")
- }
- testImplementation(libs.azure.security.keyvault.secrets) {
- exclude(group: "io.netty")
- }
- testImplementation libs.mockito.core
- testImplementation libs.jupiter
- testRuntimeOnly("org.junit.platform:junit-platform-launcher")
- testImplementation libs.logback.classic
-}
-
-java {
- sourceCompatibility = JavaVersion.VERSION_11
- toolchain {
- languageVersion = JavaLanguageVersion.of(11)
- }
- withJavadocJar()
- withSourcesJar()
-}
-
-test {
- useJUnitPlatform()
- systemProperty("imageVersion", project.version)
- mustRunAfter(":lowkey-vault-docker:build")
- mustRunAfter(":lowkey-vault-docker:test")
-}
-
-publishing {
- publications {
- mavenJava(MavenPublication) {
- from components.java
- artifactId = "${project.name}"
- pom {
- name = "${project.artifactDisplayName}"
- description = "${project.artifactDescription}"
- url = rootProject.ext.repoUrl
- packaging = "jar"
- licenses {
- license {
- name = rootProject.ext.licenseName
- url = rootProject.ext.licenseUrl
- }
- }
- developers {
- developer {
- id = rootProject.ext.maintainerId
- name = rootProject.ext.maintainerName
- url = rootProject.ext.maintainerUrl
- }
- }
- scm {
- connection = rootProject.ext.scmConnection
- developerConnection = rootProject.ext.scmConnection
- url = rootProject.ext.scmProjectUrl
- }
- withXml {
- asNode().dependencies.'*'.findAll() {
- it.scope.text() == 'runtime'
- }.each { it.scope*.value = 'compile' }
- }
- }
- }
- }
-}
-
-signing {
- sign publishing.publications.mavenJava
-}
diff --git a/lowkey-vault-testcontainers/build.gradle.kts b/lowkey-vault-testcontainers/build.gradle.kts
new file mode 100644
index 00000000..f46efb71
--- /dev/null
+++ b/lowkey-vault-testcontainers/build.gradle.kts
@@ -0,0 +1,134 @@
+import groovy.util.Node
+import groovy.util.NodeList
+
+plugins {
+ id("java")
+ signing
+ `maven-publish`
+ alias(libs.plugins.licensee.plugin)
+}
+
+group = rootProject.group
+
+project.ext {
+ set("artifactDisplayName", "Lowkey Vault - Testcontainers")
+ set("artifactDescription", "Support for using Lowkey Vault with Testcontainers.")
+}
+
+dependencies {
+ implementation(platform("org.testcontainers:testcontainers-bom:${libs.versions.testcontainers.get()}")) //import bom
+ implementation(libs.testcontainers)
+ testImplementation(libs.testcontainers.jupiter)
+ testImplementation(project(":lowkey-vault-client"))
+ testImplementation(libs.bundles.jackson)
+ testImplementation(libs.httpclient)
+ testImplementation(libs.commons.codec)
+ testImplementation(libs.azure.security.keyvault.keys) {
+ exclude(group = "io.netty")
+ }
+ testImplementation(libs.azure.security.keyvault.secrets) {
+ exclude(group = "io.netty")
+ }
+ testImplementation(libs.mockito.core)
+ testImplementation(libs.jupiter)
+ testRuntimeOnly("org.junit.platform:junit-platform-launcher")
+ testImplementation(libs.logback.classic)
+}
+
+licensee {
+ allow("Apache-2.0")
+ allow("MIT")
+ allow("EPL-1.0")
+ allow("BSD-2-Clause")
+}
+
+java {
+ sourceCompatibility = JavaVersion.VERSION_11
+ toolchain {
+ languageVersion = JavaLanguageVersion.of(11)
+ }
+ withJavadocJar()
+ withSourcesJar()
+}
+
+val copyLegalDocs = tasks.register("copyLegalDocs") {
+ from(file("${project.rootProject.projectDir}/LICENSE"))
+ from(layout.buildDirectory.file("reports/licensee/artifacts.json").get().asFile)
+ from(layout.buildDirectory.file("reports/bom.json").get().asFile)
+ into(layout.buildDirectory.dir("resources/main/META-INF").get().asFile)
+ rename("artifacts.json", "dependency-licenses.json")
+ rename("bom.json", "SBOM.json")
+}.get()
+copyLegalDocs.dependsOn(tasks.licensee)
+copyLegalDocs.dependsOn(tasks.cyclonedxBom)
+tasks.javadoc.get().dependsOn(copyLegalDocs)
+tasks.compileJava.get().dependsOn(copyLegalDocs)
+tasks.processResources.get().finalizedBy(copyLegalDocs)
+
+tasks.test {
+ useJUnitPlatform()
+ systemProperty("imageVersion", project.version)
+ mustRunAfter(":lowkey-vault-docker:build")
+ mustRunAfter(":lowkey-vault-docker:test")
+ finalizedBy(tasks.getByName("jacocoTestReport"))
+}
+
+publishing {
+ repositories {
+ maven {
+ name = "GitHubPackages"
+ url = uri(rootProject.extra.get("githubMavenRepoUrl").toString())
+ credentials {
+ username = rootProject.extra.get("gitUser").toString()
+ password = rootProject.extra.get("gitToken").toString()
+ }
+ }
+ }
+ publications {
+ create("mavenJava") {
+ from(components["java"])
+ artifactId = project.name
+ pom {
+ name.set(project.extra.get("artifactDisplayName").toString())
+ description.set(project.extra.get("artifactDescription").toString())
+ url.set(rootProject.extra.get("repoUrl").toString())
+ packaging = "jar"
+ licenses {
+ license {
+ name.set(rootProject.extra.get("licenseName").toString())
+ url.set(rootProject.extra.get("licenseUrl").toString())
+ }
+ }
+ developers {
+ developer {
+ id.set(rootProject.extra.get("maintainerId").toString())
+ name.set(rootProject.extra.get("maintainerName").toString())
+ email.set(rootProject.extra.get("maintainerUrl").toString())
+ }
+ }
+ scm {
+ connection.set(rootProject.extra.get("scmConnection").toString())
+ developerConnection.set(rootProject.extra.get("scmConnection").toString())
+ url.set(rootProject.extra.get("scmProjectUrl").toString())
+ }
+ }
+ pom.withXml {
+ asNode().apply {
+ (get("dependencies") as NodeList).forEach { depsNode ->
+ ((depsNode as Node).get("dependency") as NodeList).forEach { depNode ->
+ ((depNode as Node).get("scope") as NodeList).forEach { scope ->
+ if (scope is Node && "runtime" == scope.text()) {
+ scope.setValue("compile")
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+signing {
+ sign(publishing.publications["mavenJava"])
+}
diff --git a/lowkey-vault-testcontainers/src/main/java/com/github/nagyesta/lowkeyvault/testcontainers/LowkeyVaultContainer.java b/lowkey-vault-testcontainers/src/main/java/com/github/nagyesta/lowkeyvault/testcontainers/LowkeyVaultContainer.java
index 4dbe2963..d5917d76 100644
--- a/lowkey-vault-testcontainers/src/main/java/com/github/nagyesta/lowkeyvault/testcontainers/LowkeyVaultContainer.java
+++ b/lowkey-vault-testcontainers/src/main/java/com/github/nagyesta/lowkeyvault/testcontainers/LowkeyVaultContainer.java
@@ -259,7 +259,7 @@ protected void recommendMultiArchImageIfApplicable(
if (defaultImageUsed && hostArchIsNotAmd64 && imageIsNotMultiArch) {
logger.warn("An amd64 image is detected with non-amd64 ({}) host.", hostArch);
logger.warn("Please consider using a multi-arch image, like: {}-ubi9-minimal", versionPart);
- logger.warn(("See more information: https://github.com/nagyesta/lowkey-vault/tree/main/lowkey-vault-docker#arm-builds"));
+ logger.warn("See more information: https://github.com/nagyesta/lowkey-vault/tree/main/lowkey-vault-docker#arm-builds");
}
}
}
diff --git a/settings.gradle b/settings.gradle
deleted file mode 100644
index f8381404..00000000
--- a/settings.gradle
+++ /dev/null
@@ -1,5 +0,0 @@
-rootProject.name = 'lowkey-vault'
-include 'lowkey-vault-app'
-include 'lowkey-vault-client'
-include 'lowkey-vault-docker'
-include 'lowkey-vault-testcontainers'
diff --git a/settings.gradle.kts b/settings.gradle.kts
new file mode 100644
index 00000000..656ece9e
--- /dev/null
+++ b/settings.gradle.kts
@@ -0,0 +1,5 @@
+rootProject.name = "lowkey-vault"
+include("lowkey-vault-app")
+include("lowkey-vault-client")
+include("lowkey-vault-docker")
+include("lowkey-vault-testcontainers")