Skip to content

Commit 1eb8c58

Browse files
authored
[swift6] Add typed throws to Validation functions (#20903)
1 parent 02307db commit 1eb8c58

File tree

15 files changed

+105
-120
lines changed

15 files changed

+105
-120
lines changed

modules/openapi-generator/src/main/resources/swift6/Validation.mustache

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ extension NumericRule: Sendable where T: Sendable {}
4848
/// - Parameter string: The String you wish to validate.
4949
/// - Parameter rule: The StringRule you wish to use for validation.
5050
/// - Returns: A validated string.
51-
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule,
52-
/// `NSError` if the rule.pattern is invalid.
53-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate(_ string: String, against rule: StringRule) throws -> String {
51+
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule or if the rule.pattern is invalid.
52+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate(_ string: String, against rule: StringRule) throws(ValidationError<StringValidationErrorKind>) -> String {
5453
var error = ValidationError<StringValidationErrorKind>(kinds: [])
5554
if let minLength = rule.minLength, !(minLength <= string.count) {
5655
error.kinds.insert(.minLength)
@@ -59,9 +58,9 @@ extension NumericRule: Sendable where T: Sendable {}
5958
error.kinds.insert(.maxLength)
6059
}
6160
if let pattern = rule.pattern {
62-
let matches = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
61+
let matches = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)
6362
.matches(in: string, range: .init(location: 0, length: string.utf16.count))
64-
if matches.isEmpty {
63+
if matches?.isEmpty != false {
6564
error.kinds.insert(.pattern)
6665
}
6766
}
@@ -76,7 +75,7 @@ extension NumericRule: Sendable where T: Sendable {}
7675
/// - Parameter rule: The NumericRule you wish to use for validation.
7776
/// - Returns: A validated integer.
7877
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
79-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
78+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
8079
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
8180
if let minimum = rule.minimum {
8281
if !rule.exclusiveMinimum, minimum > numeric {
@@ -108,7 +107,7 @@ extension NumericRule: Sendable where T: Sendable {}
108107
/// - Parameter rule: The NumericRule you wish to use for validation.
109108
/// - Returns: A validated fractional number.
110109
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
111-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
110+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
112111
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
113112
if let minimum = rule.minimum {
114113
if !rule.exclusiveMinimum, minimum > numeric {
@@ -140,7 +139,7 @@ extension NumericRule: Sendable where T: Sendable {}
140139
/// - Parameter rule: The ArrayRule you wish to use for validation.
141140
/// - Returns: A validated array.
142141
/// - Throws: `ValidationError<ArrayValidationErrorKind>` if the string is invalid against the rule.
143-
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws -> Array<AnyHashable> {
142+
{{#nonPublicApi}}internal{{/nonPublicApi}}{{^nonPublicApi}}public{{/nonPublicApi}} static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws(ValidationError<ArrayValidationErrorKind>) -> Array<AnyHashable> {
144143
var error = ValidationError<ArrayValidationErrorKind>(kinds: [])
145144
if let minItems = rule.minItems, !(minItems <= array.count) {
146145
error.kinds.insert(.minItems)

samples/client/petstore/swift6/alamofireLibrary/Sources/PetstoreClient/Infrastructure/Validation.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ public struct Validator {
4848
/// - Parameter string: The String you wish to validate.
4949
/// - Parameter rule: The StringRule you wish to use for validation.
5050
/// - Returns: A validated string.
51-
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule,
52-
/// `NSError` if the rule.pattern is invalid.
53-
public static func validate(_ string: String, against rule: StringRule) throws -> String {
51+
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule or if the rule.pattern is invalid.
52+
public static func validate(_ string: String, against rule: StringRule) throws(ValidationError<StringValidationErrorKind>) -> String {
5453
var error = ValidationError<StringValidationErrorKind>(kinds: [])
5554
if let minLength = rule.minLength, !(minLength <= string.count) {
5655
error.kinds.insert(.minLength)
@@ -59,9 +58,9 @@ public struct Validator {
5958
error.kinds.insert(.maxLength)
6059
}
6160
if let pattern = rule.pattern {
62-
let matches = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
61+
let matches = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)
6362
.matches(in: string, range: .init(location: 0, length: string.utf16.count))
64-
if matches.isEmpty {
63+
if matches?.isEmpty != false {
6564
error.kinds.insert(.pattern)
6665
}
6766
}
@@ -76,7 +75,7 @@ public struct Validator {
7675
/// - Parameter rule: The NumericRule you wish to use for validation.
7776
/// - Returns: A validated integer.
7877
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
79-
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
78+
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
8079
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
8180
if let minimum = rule.minimum {
8281
if !rule.exclusiveMinimum, minimum > numeric {
@@ -108,7 +107,7 @@ public struct Validator {
108107
/// - Parameter rule: The NumericRule you wish to use for validation.
109108
/// - Returns: A validated fractional number.
110109
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
111-
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
110+
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
112111
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
113112
if let minimum = rule.minimum {
114113
if !rule.exclusiveMinimum, minimum > numeric {
@@ -140,7 +139,7 @@ public struct Validator {
140139
/// - Parameter rule: The ArrayRule you wish to use for validation.
141140
/// - Returns: A validated array.
142141
/// - Throws: `ValidationError<ArrayValidationErrorKind>` if the string is invalid against the rule.
143-
public static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws -> Array<AnyHashable> {
142+
public static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws(ValidationError<ArrayValidationErrorKind>) -> Array<AnyHashable> {
144143
var error = ValidationError<ArrayValidationErrorKind>(kinds: [])
145144
if let minItems = rule.minItems, !(minItems <= array.count) {
146145
error.kinds.insert(.minItems)

samples/client/petstore/swift6/apiNonStaticMethod/Sources/PetstoreClient/Infrastructure/Validation.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ public struct Validator {
4848
/// - Parameter string: The String you wish to validate.
4949
/// - Parameter rule: The StringRule you wish to use for validation.
5050
/// - Returns: A validated string.
51-
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule,
52-
/// `NSError` if the rule.pattern is invalid.
53-
public static func validate(_ string: String, against rule: StringRule) throws -> String {
51+
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule or if the rule.pattern is invalid.
52+
public static func validate(_ string: String, against rule: StringRule) throws(ValidationError<StringValidationErrorKind>) -> String {
5453
var error = ValidationError<StringValidationErrorKind>(kinds: [])
5554
if let minLength = rule.minLength, !(minLength <= string.count) {
5655
error.kinds.insert(.minLength)
@@ -59,9 +58,9 @@ public struct Validator {
5958
error.kinds.insert(.maxLength)
6059
}
6160
if let pattern = rule.pattern {
62-
let matches = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
61+
let matches = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)
6362
.matches(in: string, range: .init(location: 0, length: string.utf16.count))
64-
if matches.isEmpty {
63+
if matches?.isEmpty != false {
6564
error.kinds.insert(.pattern)
6665
}
6766
}
@@ -76,7 +75,7 @@ public struct Validator {
7675
/// - Parameter rule: The NumericRule you wish to use for validation.
7776
/// - Returns: A validated integer.
7877
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
79-
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
78+
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
8079
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
8180
if let minimum = rule.minimum {
8281
if !rule.exclusiveMinimum, minimum > numeric {
@@ -108,7 +107,7 @@ public struct Validator {
108107
/// - Parameter rule: The NumericRule you wish to use for validation.
109108
/// - Returns: A validated fractional number.
110109
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
111-
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
110+
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
112111
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
113112
if let minimum = rule.minimum {
114113
if !rule.exclusiveMinimum, minimum > numeric {
@@ -140,7 +139,7 @@ public struct Validator {
140139
/// - Parameter rule: The ArrayRule you wish to use for validation.
141140
/// - Returns: A validated array.
142141
/// - Throws: `ValidationError<ArrayValidationErrorKind>` if the string is invalid against the rule.
143-
public static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws -> Array<AnyHashable> {
142+
public static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws(ValidationError<ArrayValidationErrorKind>) -> Array<AnyHashable> {
144143
var error = ValidationError<ArrayValidationErrorKind>(kinds: [])
145144
if let minItems = rule.minItems, !(minItems <= array.count) {
146145
error.kinds.insert(.minItems)

samples/client/petstore/swift6/asyncAwaitLibrary/Sources/PetstoreClient/Infrastructure/Validation.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ public struct Validator {
4848
/// - Parameter string: The String you wish to validate.
4949
/// - Parameter rule: The StringRule you wish to use for validation.
5050
/// - Returns: A validated string.
51-
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule,
52-
/// `NSError` if the rule.pattern is invalid.
53-
public static func validate(_ string: String, against rule: StringRule) throws -> String {
51+
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule or if the rule.pattern is invalid.
52+
public static func validate(_ string: String, against rule: StringRule) throws(ValidationError<StringValidationErrorKind>) -> String {
5453
var error = ValidationError<StringValidationErrorKind>(kinds: [])
5554
if let minLength = rule.minLength, !(minLength <= string.count) {
5655
error.kinds.insert(.minLength)
@@ -59,9 +58,9 @@ public struct Validator {
5958
error.kinds.insert(.maxLength)
6059
}
6160
if let pattern = rule.pattern {
62-
let matches = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
61+
let matches = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)
6362
.matches(in: string, range: .init(location: 0, length: string.utf16.count))
64-
if matches.isEmpty {
63+
if matches?.isEmpty != false {
6564
error.kinds.insert(.pattern)
6665
}
6766
}
@@ -76,7 +75,7 @@ public struct Validator {
7675
/// - Parameter rule: The NumericRule you wish to use for validation.
7776
/// - Returns: A validated integer.
7877
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
79-
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
78+
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
8079
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
8180
if let minimum = rule.minimum {
8281
if !rule.exclusiveMinimum, minimum > numeric {
@@ -108,7 +107,7 @@ public struct Validator {
108107
/// - Parameter rule: The NumericRule you wish to use for validation.
109108
/// - Returns: A validated fractional number.
110109
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
111-
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
110+
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
112111
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
113112
if let minimum = rule.minimum {
114113
if !rule.exclusiveMinimum, minimum > numeric {
@@ -140,7 +139,7 @@ public struct Validator {
140139
/// - Parameter rule: The ArrayRule you wish to use for validation.
141140
/// - Returns: A validated array.
142141
/// - Throws: `ValidationError<ArrayValidationErrorKind>` if the string is invalid against the rule.
143-
public static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws -> Array<AnyHashable> {
142+
public static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws(ValidationError<ArrayValidationErrorKind>) -> Array<AnyHashable> {
144143
var error = ValidationError<ArrayValidationErrorKind>(kinds: [])
145144
if let minItems = rule.minItems, !(minItems <= array.count) {
146145
error.kinds.insert(.minItems)

samples/client/petstore/swift6/combineDeferredLibrary/PetstoreClient/Classes/OpenAPIs/Infrastructure/Validation.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,8 @@ public struct Validator {
4848
/// - Parameter string: The String you wish to validate.
4949
/// - Parameter rule: The StringRule you wish to use for validation.
5050
/// - Returns: A validated string.
51-
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule,
52-
/// `NSError` if the rule.pattern is invalid.
53-
public static func validate(_ string: String, against rule: StringRule) throws -> String {
51+
/// - Throws: `ValidationError<StringValidationErrorKind>` if the string is invalid against the rule or if the rule.pattern is invalid.
52+
public static func validate(_ string: String, against rule: StringRule) throws(ValidationError<StringValidationErrorKind>) -> String {
5453
var error = ValidationError<StringValidationErrorKind>(kinds: [])
5554
if let minLength = rule.minLength, !(minLength <= string.count) {
5655
error.kinds.insert(.minLength)
@@ -59,9 +58,9 @@ public struct Validator {
5958
error.kinds.insert(.maxLength)
6059
}
6160
if let pattern = rule.pattern {
62-
let matches = try NSRegularExpression(pattern: pattern, options: .caseInsensitive)
61+
let matches = try? NSRegularExpression(pattern: pattern, options: .caseInsensitive)
6362
.matches(in: string, range: .init(location: 0, length: string.utf16.count))
64-
if matches.isEmpty {
63+
if matches?.isEmpty != false {
6564
error.kinds.insert(.pattern)
6665
}
6766
}
@@ -76,7 +75,7 @@ public struct Validator {
7675
/// - Parameter rule: The NumericRule you wish to use for validation.
7776
/// - Returns: A validated integer.
7877
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
79-
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
78+
public static func validate<T: Comparable & BinaryInteger>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
8079
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
8180
if let minimum = rule.minimum {
8281
if !rule.exclusiveMinimum, minimum > numeric {
@@ -108,7 +107,7 @@ public struct Validator {
108107
/// - Parameter rule: The NumericRule you wish to use for validation.
109108
/// - Returns: A validated fractional number.
110109
/// - Throws: `ValidationError<NumericValidationErrorKind>` if the numeric is invalid against the rule.
111-
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws -> T {
110+
public static func validate<T: Comparable & FloatingPoint>(_ numeric: T, against rule: NumericRule<T>) throws(ValidationError<NumericValidationErrorKind>) -> T {
112111
var error = ValidationError<NumericValidationErrorKind>(kinds: [])
113112
if let minimum = rule.minimum {
114113
if !rule.exclusiveMinimum, minimum > numeric {
@@ -140,7 +139,7 @@ public struct Validator {
140139
/// - Parameter rule: The ArrayRule you wish to use for validation.
141140
/// - Returns: A validated array.
142141
/// - Throws: `ValidationError<ArrayValidationErrorKind>` if the string is invalid against the rule.
143-
public static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws -> Array<AnyHashable> {
142+
public static func validate(_ array: Array<AnyHashable>, against rule: ArrayRule) throws(ValidationError<ArrayValidationErrorKind>) -> Array<AnyHashable> {
144143
var error = ValidationError<ArrayValidationErrorKind>(kinds: [])
145144
if let minItems = rule.minItems, !(minItems <= array.count) {
146145
error.kinds.insert(.minItems)

0 commit comments

Comments
 (0)