@@ -15,49 +15,57 @@ enum class RuleLogic {
15
15
* Matching rule
16
16
*/
17
17
interface MatchingRule {
18
+ @Deprecated(" Use version that takes a spec version" )
18
19
fun toMap (): Map <String , Any ?>
20
+ fun toMap (spec : PactSpecVersion ): Map <String , Any ?>
19
21
}
20
22
21
23
/* *
22
24
* Matching Rule for dates
23
25
*/
24
26
data class DateMatcher @JvmOverloads constructor(val format : String = " yyyy-MM-dd" ) : MatchingRule {
25
27
override fun toMap () = mapOf (" match" to " date" , " date" to format)
28
+ override fun toMap (spec : PactSpecVersion ) = toMap()
26
29
}
27
30
28
31
/* *
29
32
* Matching rule for equality
30
33
*/
31
34
object EqualsMatcher : MatchingRule {
32
35
override fun toMap () = mapOf (" match" to " equality" )
36
+ override fun toMap (spec : PactSpecVersion ) = toMap()
33
37
}
34
38
35
39
/* *
36
40
* Matcher for a substring in a string
37
41
*/
38
42
data class IncludeMatcher (val value : String ) : MatchingRule {
39
43
override fun toMap () = mapOf (" match" to " include" , " value" to value)
44
+ override fun toMap (spec : PactSpecVersion ) = toMap()
40
45
}
41
46
42
47
/* *
43
48
* Type matching with a maximum size
44
49
*/
45
50
data class MaxTypeMatcher (val max : Int ) : MatchingRule {
46
51
override fun toMap () = mapOf (" match" to " type" , " max" to max)
52
+ override fun toMap (spec : PactSpecVersion ) = toMap()
47
53
}
48
54
49
55
/* *
50
56
* Type matcher with a minimum size and maximum size
51
57
*/
52
58
data class MinMaxTypeMatcher (val min : Int , val max : Int ) : MatchingRule {
53
59
override fun toMap () = mapOf (" match" to " type" , " min" to min, " max" to max)
60
+ override fun toMap (spec : PactSpecVersion ) = toMap()
54
61
}
55
62
56
63
/* *
57
64
* Type matcher with a minimum size
58
65
*/
59
66
data class MinTypeMatcher (val min : Int ) : MatchingRule {
60
67
override fun toMap () = mapOf (" match" to " type" , " min" to min)
68
+ override fun toMap (spec : PactSpecVersion ) = toMap()
61
69
}
62
70
63
71
/* *
@@ -70,49 +78,60 @@ data class NumberTypeMatcher(val numberType: NumberType) : MatchingRule {
70
78
DECIMAL
71
79
}
72
80
73
- override fun toMap () = mapOf (" match" to numberType.name.toLowerCase())
81
+ override fun toMap () = toMap(PactSpecVersion .V3 )
82
+ override fun toMap (spec : PactSpecVersion ) = if (spec >= PactSpecVersion .V3 ) {
83
+ mapOf (" match" to numberType.name.toLowerCase())
84
+ } else {
85
+ TypeMatcher .toMap(spec)
86
+ }
74
87
}
75
88
76
89
/* *
77
90
* Regular Expression Matcher
78
91
*/
79
92
data class RegexMatcher @JvmOverloads constructor (val regex : String , val example : String? = null ) : MatchingRule {
80
93
override fun toMap () = mapOf (" match" to " regex" , " regex" to regex)
94
+ override fun toMap (spec : PactSpecVersion ) = toMap()
81
95
}
82
96
83
97
/* *
84
98
* Matcher for time values
85
99
*/
86
100
data class TimeMatcher @JvmOverloads constructor(val format : String = " HH:mm:ss" ) : MatchingRule {
87
101
override fun toMap () = mapOf (" match" to " time" , " time" to format)
102
+ override fun toMap (spec : PactSpecVersion ) = toMap()
88
103
}
89
104
90
105
/* *
91
106
* Matcher for time values
92
107
*/
93
108
data class TimestampMatcher @JvmOverloads constructor(val format : String = " yyyy-MM-dd HH:mm:ssZZZ" ) : MatchingRule {
94
109
override fun toMap () = mapOf (" match" to " timestamp" , " timestamp" to format)
110
+ override fun toMap (spec : PactSpecVersion ) = toMap()
95
111
}
96
112
97
113
/* *
98
114
* Matcher for types
99
115
*/
100
116
object TypeMatcher : MatchingRule {
101
117
override fun toMap () = mapOf (" match" to " type" )
118
+ override fun toMap (spec : PactSpecVersion ) = toMap()
102
119
}
103
120
104
121
/* *
105
122
* Matcher for null values
106
123
*/
107
124
object NullMatcher : MatchingRule {
108
125
override fun toMap () = mapOf (" match" to " null" )
126
+ override fun toMap (spec : PactSpecVersion ) = toMap()
109
127
}
110
128
111
129
/* *
112
130
* Matcher for values in a map, ignoring the keys
113
131
*/
114
132
object ValuesMatcher : MatchingRule {
115
133
override fun toMap () = mapOf (" match" to " values" )
134
+ override fun toMap (spec : PactSpecVersion ) = toMap()
116
135
}
117
136
118
137
data class MatchingRuleGroup @JvmOverloads constructor(
@@ -121,7 +140,7 @@ data class MatchingRuleGroup @JvmOverloads constructor(
121
140
) {
122
141
fun toMap (pactSpecVersion : PactSpecVersion ): Map <String , Any ?> {
123
142
return if (pactSpecVersion < PactSpecVersion .V3 ) {
124
- rules.first().toMap()
143
+ rules.first().toMap(pactSpecVersion )
125
144
} else {
126
145
mapOf (" matchers" to rules.map { it.toMap() }, " combine" to ruleLogic.name)
127
146
}
0 commit comments