Skip to content

Commit 6b71eb2

Browse files
committed
add validator for discriminator value property
1 parent 6029e93 commit 6b71eb2

File tree

3 files changed

+99
-36
lines changed

3 files changed

+99
-36
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package com.commercetools.rmf.validators
2+
3+
import io.vrap.rmf.raml.model.types.BuiltinType
4+
import io.vrap.rmf.raml.model.types.ObjectType
5+
import org.eclipse.emf.common.util.Diagnostic
6+
import java.util.*
7+
8+
@ValidatorSet
9+
class DiscriminatorValueRule(severity: RuleSeverity, options: List<RuleOption>? = null) : TypesRule(severity, options) {
10+
11+
private val exclude: List<String> =
12+
(options?.filter { ruleOption -> ruleOption.type.lowercase(Locale.getDefault()) == RuleOptionType.EXCLUDE.toString() }?.map { ruleOption -> ruleOption.value }?.plus("") ?: defaultExcludes)
13+
14+
override fun caseObjectType(type: ObjectType): List<Diagnostic> {
15+
val validationResults: MutableList<Diagnostic> = ArrayList()
16+
17+
if (type.discriminator != null && type.discriminatorValue != null && !type.isInlineType && exclude.contains(type.name).not()) {
18+
validationResults.add(create(type, "Discriminator and DiscriminatorValue property defined in the same type: {0}", type.name))
19+
}
20+
21+
return validationResults
22+
}
23+
24+
companion object : ValidatorFactory<DiscriminatorValueRule> {
25+
private val defaultExcludes by lazy { listOf("") }
26+
27+
@JvmStatic
28+
override fun create(options: List<RuleOption>?): DiscriminatorValueRule {
29+
return DiscriminatorValueRule(RuleSeverity.ERROR, options)
30+
}
31+
32+
@JvmStatic
33+
override fun create(severity: RuleSeverity, options: List<RuleOption>?): DiscriminatorValueRule {
34+
return DiscriminatorValueRule(severity, options)
35+
} }
36+
}

0 commit comments

Comments
 (0)