11package br.com.felipezorzo.zpa.cli.config
22
3+ import com.fasterxml.jackson.annotation.JsonIgnoreProperties
4+ import com.fasterxml.jackson.annotation.JsonProperty
35import com.fasterxml.jackson.core.JsonGenerator
46import com.fasterxml.jackson.core.JsonParser
57import com.fasterxml.jackson.databind.*
68import com.fasterxml.jackson.databind.annotation.JsonDeserialize
79import com.fasterxml.jackson.databind.annotation.JsonSerialize
810import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
911
12+ @JsonIgnoreProperties(value = [" \$ schema" ])
1013data class ConfigFile (
1114 val rules : Map <String , RuleConfiguration >
1215)
@@ -17,11 +20,25 @@ class RuleConfiguration {
1720 var options: RuleOptions = RuleOptions ()
1821}
1922
23+ enum class RuleLevel {
24+ @JsonProperty(" on" )
25+ ON ,
26+ @JsonProperty(" off" )
27+ OFF ,
28+ @JsonProperty(" blocker" )
29+ BLOCKER ,
30+ @JsonProperty(" critical" )
31+ CRITICAL ,
32+ @JsonProperty(" major" )
33+ MAJOR ,
34+ @JsonProperty(" minor" )
35+ MINOR ,
36+ @JsonProperty(" info" )
37+ INFO
38+ }
39+
2040class RuleOptions {
21- var level: String? = null
22- set(value) {
23- field = value?.lowercase()
24- }
41+ lateinit var level: RuleLevel
2542 var parameters: Map <String , String > = emptyMap()
2643}
2744
@@ -32,7 +49,7 @@ class RuleCategoryDeserializer : JsonDeserializer<RuleConfiguration>() {
3249 val mapper = jacksonObjectMapper()
3350
3451 if (node.isTextual) {
35- ruleConfiguration.options.level = node.asText().uppercase()
52+ ruleConfiguration.options.level = RuleLevel .valueOf( node.asText().uppercase() )
3653 } else if (node.isObject) {
3754 ruleConfiguration.options = mapper.treeToValue(node, RuleOptions ::class .java)
3855 }
0 commit comments