@@ -14,6 +14,7 @@ import com.lithic.api.core.BaseSerializer
1414import com.lithic.api.core.JsonValue
1515import com.lithic.api.core.NoAutoDetect
1616import com.lithic.api.core.Params
17+ import com.lithic.api.core.checkRequired
1718import com.lithic.api.core.getOrThrow
1819import com.lithic.api.core.http.Headers
1920import com.lithic.api.core.http.QueryParams
@@ -31,31 +32,27 @@ import java.util.Optional
3132 */
3233class AccountHolderCreateParams
3334private constructor (
34- private val body: AccountHolderCreateBody ,
35+ private val body: Body ,
3536 private val additionalHeaders: Headers ,
3637 private val additionalQueryParams: QueryParams ,
3738) : Params {
3839
39- fun kyb (): Optional <Kyb > = body.kyb()
40-
41- fun kyc (): Optional <Kyc > = body.kyc()
42-
43- fun kycExempt (): Optional <KycExempt > = body.kycExempt()
40+ fun body (): Body = body
4441
4542 fun _additionalHeaders (): Headers = additionalHeaders
4643
4744 fun _additionalQueryParams (): QueryParams = additionalQueryParams
4845
49- @JvmSynthetic internal fun _body (): AccountHolderCreateBody = body
46+ @JvmSynthetic internal fun _body (): Body = body
5047
5148 override fun _headers (): Headers = additionalHeaders
5249
5350 override fun _queryParams (): QueryParams = additionalQueryParams
5451
55- @JsonDeserialize(using = AccountHolderCreateBody .Deserializer ::class )
56- @JsonSerialize(using = AccountHolderCreateBody .Serializer ::class )
57- class AccountHolderCreateBody
58- internal constructor (
52+ @JsonDeserialize(using = Body .Deserializer ::class )
53+ @JsonSerialize(using = Body .Serializer ::class )
54+ class Body
55+ private constructor (
5956 private val kyb: Kyb ? = null ,
6057 private val kyc: Kyc ? = null ,
6158 private val kycExempt: KycExempt ? = null ,
@@ -91,39 +88,60 @@ private constructor(
9188 }
9289 }
9390
91+ private var validated: Boolean = false
92+
93+ fun validate (): Body = apply {
94+ if (validated) {
95+ return @apply
96+ }
97+
98+ accept(
99+ object : Visitor <Unit > {
100+ override fun visitKyb (kyb : Kyb ) {
101+ kyb.validate()
102+ }
103+
104+ override fun visitKyc (kyc : Kyc ) {
105+ kyc.validate()
106+ }
107+
108+ override fun visitKycExempt (kycExempt : KycExempt ) {
109+ kycExempt.validate()
110+ }
111+ }
112+ )
113+ validated = true
114+ }
115+
94116 override fun equals (other : Any? ): Boolean {
95117 if (this == = other) {
96118 return true
97119 }
98120
99- return /* spotless:off */ other is AccountHolderCreateBody && kyb == other.kyb && kyc == other.kyc && kycExempt == other.kycExempt /* spotless:on */
121+ return /* spotless:off */ other is Body && kyb == other.kyb && kyc == other.kyc && kycExempt == other.kycExempt /* spotless:on */
100122 }
101123
102124 override fun hashCode (): Int = /* spotless:off */ Objects .hash(kyb, kyc, kycExempt) /* spotless:on */
103125
104126 override fun toString (): String =
105127 when {
106- kyb != null -> " AccountHolderCreateBody {kyb=$kyb }"
107- kyc != null -> " AccountHolderCreateBody {kyc=$kyc }"
108- kycExempt != null -> " AccountHolderCreateBody {kycExempt=$kycExempt }"
109- _json != null -> " AccountHolderCreateBody {_unknown=$_json }"
110- else -> throw IllegalStateException (" Invalid AccountHolderCreateBody " )
128+ kyb != null -> " Body {kyb=$kyb }"
129+ kyc != null -> " Body {kyc=$kyc }"
130+ kycExempt != null -> " Body {kycExempt=$kycExempt }"
131+ _json != null -> " Body {_unknown=$_json }"
132+ else -> throw IllegalStateException (" Invalid Body " )
111133 }
112134
113135 companion object {
114136
115- @JvmStatic fun ofKyb (kyb : Kyb ) = AccountHolderCreateBody (kyb = kyb)
137+ @JvmStatic fun ofKyb (kyb : Kyb ) = Body (kyb = kyb)
116138
117- @JvmStatic fun ofKyc (kyc : Kyc ) = AccountHolderCreateBody (kyc = kyc)
139+ @JvmStatic fun ofKyc (kyc : Kyc ) = Body (kyc = kyc)
118140
119- @JvmStatic
120- fun ofKycExempt (kycExempt : KycExempt ) = AccountHolderCreateBody (kycExempt = kycExempt)
141+ @JvmStatic fun ofKycExempt (kycExempt : KycExempt ) = Body (kycExempt = kycExempt)
121142 }
122143
123- /* *
124- * An interface that defines how to map each variant of [AccountHolderCreateBody] to a value
125- * of type [T].
126- */
144+ /* * An interface that defines how to map each variant of [Body] to a value of type [T]. */
127145 interface Visitor <out T > {
128146
129147 fun visitKyb (kyb : Kyb ): T
@@ -133,45 +151,45 @@ private constructor(
133151 fun visitKycExempt (kycExempt : KycExempt ): T
134152
135153 /* *
136- * Maps an unknown variant of [AccountHolderCreateBody ] to a value of type [T].
154+ * Maps an unknown variant of [Body ] to a value of type [T].
137155 *
138- * An instance of [AccountHolderCreateBody] can contain an unknown variant if it was
139- * deserialized from data that doesn't match any known variant. For example, if the SDK
140- * is on an older version than the API, then the API may respond with new variants that
141- * the SDK is unaware of.
156+ * An instance of [Body] can contain an unknown variant if it was deserialized from data
157+ * that doesn't match any known variant. For example, if the SDK is on an older version
158+ * than the API, then the API may respond with new variants that the SDK is unaware of.
142159 *
143160 * @throws LithicInvalidDataException in the default implementation.
144161 */
145162 fun unknown (json : JsonValue ? ): T {
146- throw LithicInvalidDataException (" Unknown AccountHolderCreateBody : $json " )
163+ throw LithicInvalidDataException (" Unknown Body : $json " )
147164 }
148165 }
149166
150- internal class Deserializer :
151- BaseDeserializer <AccountHolderCreateBody >(AccountHolderCreateBody ::class ) {
167+ internal class Deserializer : BaseDeserializer <Body >(Body : :class) {
152168
153- override fun ObjectCodec.deserialize (node : JsonNode ): AccountHolderCreateBody {
169+ override fun ObjectCodec.deserialize (node : JsonNode ): Body {
154170 val json = JsonValue .fromJsonNode(node)
155171
156- tryDeserialize(node, jacksonTypeRef<Kyb >())?.let {
157- return AccountHolderCreateBody (kyb = it, _json = json)
158- }
159- tryDeserialize(node, jacksonTypeRef<Kyc >())?.let {
160- return AccountHolderCreateBody (kyc = it, _json = json)
161- }
162- tryDeserialize(node, jacksonTypeRef<KycExempt >())?.let {
163- return AccountHolderCreateBody (kycExempt = it, _json = json)
164- }
165-
166- return AccountHolderCreateBody (_json = json)
172+ tryDeserialize(node, jacksonTypeRef<Kyb >()) { it.validate() }
173+ ?.let {
174+ return Body (kyb = it, _json = json)
175+ }
176+ tryDeserialize(node, jacksonTypeRef<Kyc >()) { it.validate() }
177+ ?.let {
178+ return Body (kyc = it, _json = json)
179+ }
180+ tryDeserialize(node, jacksonTypeRef<KycExempt >()) { it.validate() }
181+ ?.let {
182+ return Body (kycExempt = it, _json = json)
183+ }
184+
185+ return Body (_json = json)
167186 }
168187 }
169188
170- internal class Serializer :
171- BaseSerializer <AccountHolderCreateBody >(AccountHolderCreateBody ::class ) {
189+ internal class Serializer : BaseSerializer <Body >(Body : :class) {
172190
173191 override fun serialize (
174- value : AccountHolderCreateBody ,
192+ value : Body ,
175193 generator : JsonGenerator ,
176194 provider : SerializerProvider ,
177195 ) {
@@ -180,7 +198,7 @@ private constructor(
180198 value.kyc != null -> generator.writeObject(value.kyc)
181199 value.kycExempt != null -> generator.writeObject(value.kycExempt)
182200 value._json != null -> generator.writeObject(value._json )
183- else -> throw IllegalStateException (" Invalid AccountHolderCreateBody " )
201+ else -> throw IllegalStateException (" Invalid Body " )
184202 }
185203 }
186204 }
@@ -197,7 +215,7 @@ private constructor(
197215 @NoAutoDetect
198216 class Builder internal constructor() {
199217
200- private var body: AccountHolderCreateBody ? = null
218+ private var body: Body ? = null
201219 private var additionalHeaders: Headers .Builder = Headers .builder()
202220 private var additionalQueryParams: QueryParams .Builder = QueryParams .builder()
203221
@@ -208,13 +226,13 @@ private constructor(
208226 additionalQueryParams = accountHolderCreateParams.additionalQueryParams.toBuilder()
209227 }
210228
211- fun forKyb ( kyb : Kyb ) = apply { body = AccountHolderCreateBody .ofKyb(kyb) }
229+ fun body ( body : Body ) = apply { this . body = body }
212230
213- fun forKyc ( kyc : Kyc ) = apply { body = AccountHolderCreateBody .ofKyc(kyc) }
231+ fun body ( kyb : Kyb ) = body( Body .ofKyb(kyb))
214232
215- fun forKycExempt ( kycExempt : KycExempt ) = apply {
216- body = AccountHolderCreateBody .ofKycExempt(kycExempt)
217- }
233+ fun body ( kyc : Kyc ) = body( Body .ofKyc(kyc))
234+
235+ fun body ( kycExempt : KycExempt ) = body( Body .ofKycExempt(kycExempt))
218236
219237 fun additionalHeaders (additionalHeaders : Headers ) = apply {
220238 this .additionalHeaders.clear()
@@ -316,7 +334,7 @@ private constructor(
316334
317335 fun build (): AccountHolderCreateParams =
318336 AccountHolderCreateParams (
319- body ? : AccountHolderCreateBody ( ),
337+ checkRequired( " body" , body ),
320338 additionalHeaders.build(),
321339 additionalQueryParams.build(),
322340 )
0 commit comments