PageRenderTime 79ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/framework/src/play/src/main/scala/play/core/hidden/ObjectMappings.scala

http://github.com/playframework/Play20
Scala | 1984 lines | 1903 code | 4 blank | 77 comment | 0 complexity | a78ffe3bc8ae5d09b4d4059a13f2bfaf MD5 | raw file
Possible License(s): Apache-2.0
  1. /*
  2. * Copyright (C) 2009-2016 Lightbend Inc. <https://www.lightbend.com>
  3. */
  4. package play.api.data
  5. import format._
  6. import validation._
  7. /*
  8. DO NOT EDIT THE SCALA CODE IN THIS FILE, IT IS GENERATED.
  9. The script below will generate this file. Edit and run the script to edit the file.
  10. #!/bin/sh
  11. exec scala -savecompiled "$0" $0 $@
  12. !#
  13. def generate(times: Int) = {
  14. def g(format: String, sep: String) = (for (i <- 1 to times) yield format.replaceAll("%", i.toString).replaceAll("#", (i - 1).toString)).mkString(sep)
  15. def aParams = g("A%", ", ")
  16. s"""
  17. class ObjectMapping$times[R, $aParams](apply: Function$times[$aParams, R], unapply: Function1[R, Option[($aParams)]], ${g("f%: (String, Mapping[A%])", ", ")}, val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  18. ${g("val field% = f%._2.withPrefix(f%._1).withPrefix(key)", "\n\n ")}
  19. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  20. merge(${g("field%.bind(data)", ", ")}) match {
  21. case Left(errors) => Left(errors)
  22. case Right(values) => {
  23. applyConstraints(apply(
  24. ${g("values(#).asInstanceOf[A%]", ",\n ")}
  25. ))
  26. }
  27. }
  28. }
  29. def unbind(value: R): Map[String, String] = {
  30. unapply(value).map { fields =>
  31. val (${g("v%", ", ")}) = fields
  32. ${g("field%.unbind(v%)", " ++ ")}
  33. }.getOrElse(Map.empty)
  34. }
  35. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  36. unapply(value).map { fields =>
  37. val (${g("v%", ", ")}) = fields
  38. ${g("val a% = field%.unbindAndValidate(v%)", "\n ")}
  39. (${g("a%._1", " ++ ")}) ->
  40. (${g("a%._2", " ++ ")})
  41. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  42. }
  43. def withPrefix(prefix: String): ObjectMapping$times[R, $aParams] = addPrefix(prefix).map(newKey =>
  44. new ObjectMapping$times(apply, unapply, ${g("f%", ", ")}, newKey, constraints)
  45. ).getOrElse(this)
  46. def verifying(addConstraints: Constraint[R]*): ObjectMapping$times[R, $aParams] = {
  47. new ObjectMapping$times(apply, unapply, ${g("f%", ", ")}, key, constraints ++ addConstraints.toSeq)
  48. }
  49. val mappings = Seq(this) ++ ${g("field%.mappings", " ++ ")}
  50. }
  51. """
  52. }
  53. val scriptSource = scala.io.Source.fromFile(argv(0)).getLines.mkString("\n")
  54. println(s"""/*
  55. * Copyright (C) 2009-2016 Lightbend Inc. <https://www.lightbend.com>
  56. */
  57. package play.api.data
  58. import format._
  59. import validation._
  60. /*
  61. DO NOT EDIT THE SCALA CODE IN THIS FILE, IT IS GENERATED.
  62. The script below will generate this file. Edit and run the script to edit the file.
  63. $scriptSource
  64. */
  65. """)
  66. println((for (i <- 1 to 22) yield generate(i)).mkString(""))
  67. */
  68. class ObjectMapping1[R, A1](apply: Function1[A1, R], unapply: Function1[R, Option[(A1)]], f1: (String, Mapping[A1]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  69. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  70. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  71. merge(field1.bind(data)) match {
  72. case Left(errors) => Left(errors)
  73. case Right(values) => {
  74. applyConstraints(apply(
  75. values(0).asInstanceOf[A1]
  76. ))
  77. }
  78. }
  79. }
  80. def unbind(value: R): Map[String, String] = {
  81. unapply(value).map { fields =>
  82. val (v1) = fields
  83. field1.unbind(v1)
  84. }.getOrElse(Map.empty)
  85. }
  86. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  87. unapply(value).map { fields =>
  88. val (v1) = fields
  89. val a1 = field1.unbindAndValidate(v1)
  90. (a1._1) ->
  91. (a1._2)
  92. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  93. }
  94. def withPrefix(prefix: String): ObjectMapping1[R, A1] = addPrefix(prefix).map(newKey =>
  95. new ObjectMapping1(apply, unapply, f1, newKey, constraints)
  96. ).getOrElse(this)
  97. def verifying(addConstraints: Constraint[R]*): ObjectMapping1[R, A1] = {
  98. new ObjectMapping1(apply, unapply, f1, key, constraints ++ addConstraints.toSeq)
  99. }
  100. val mappings = Seq(this) ++ field1.mappings
  101. }
  102. class ObjectMapping2[R, A1, A2](apply: Function2[A1, A2, R], unapply: Function1[R, Option[(A1, A2)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  103. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  104. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  105. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  106. merge(field1.bind(data), field2.bind(data)) match {
  107. case Left(errors) => Left(errors)
  108. case Right(values) => {
  109. applyConstraints(apply(
  110. values(0).asInstanceOf[A1],
  111. values(1).asInstanceOf[A2]
  112. ))
  113. }
  114. }
  115. }
  116. def unbind(value: R): Map[String, String] = {
  117. unapply(value).map { fields =>
  118. val (v1, v2) = fields
  119. field1.unbind(v1) ++ field2.unbind(v2)
  120. }.getOrElse(Map.empty)
  121. }
  122. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  123. unapply(value).map { fields =>
  124. val (v1, v2) = fields
  125. val a1 = field1.unbindAndValidate(v1)
  126. val a2 = field2.unbindAndValidate(v2)
  127. (a1._1 ++ a2._1) ->
  128. (a1._2 ++ a2._2)
  129. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  130. }
  131. def withPrefix(prefix: String): ObjectMapping2[R, A1, A2] = addPrefix(prefix).map(newKey =>
  132. new ObjectMapping2(apply, unapply, f1, f2, newKey, constraints)
  133. ).getOrElse(this)
  134. def verifying(addConstraints: Constraint[R]*): ObjectMapping2[R, A1, A2] = {
  135. new ObjectMapping2(apply, unapply, f1, f2, key, constraints ++ addConstraints.toSeq)
  136. }
  137. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings
  138. }
  139. class ObjectMapping3[R, A1, A2, A3](apply: Function3[A1, A2, A3, R], unapply: Function1[R, Option[(A1, A2, A3)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  140. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  141. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  142. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  143. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  144. merge(field1.bind(data), field2.bind(data), field3.bind(data)) match {
  145. case Left(errors) => Left(errors)
  146. case Right(values) => {
  147. applyConstraints(apply(
  148. values(0).asInstanceOf[A1],
  149. values(1).asInstanceOf[A2],
  150. values(2).asInstanceOf[A3]
  151. ))
  152. }
  153. }
  154. }
  155. def unbind(value: R): Map[String, String] = {
  156. unapply(value).map { fields =>
  157. val (v1, v2, v3) = fields
  158. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3)
  159. }.getOrElse(Map.empty)
  160. }
  161. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  162. unapply(value).map { fields =>
  163. val (v1, v2, v3) = fields
  164. val a1 = field1.unbindAndValidate(v1)
  165. val a2 = field2.unbindAndValidate(v2)
  166. val a3 = field3.unbindAndValidate(v3)
  167. (a1._1 ++ a2._1 ++ a3._1) ->
  168. (a1._2 ++ a2._2 ++ a3._2)
  169. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  170. }
  171. def withPrefix(prefix: String): ObjectMapping3[R, A1, A2, A3] = addPrefix(prefix).map(newKey =>
  172. new ObjectMapping3(apply, unapply, f1, f2, f3, newKey, constraints)
  173. ).getOrElse(this)
  174. def verifying(addConstraints: Constraint[R]*): ObjectMapping3[R, A1, A2, A3] = {
  175. new ObjectMapping3(apply, unapply, f1, f2, f3, key, constraints ++ addConstraints.toSeq)
  176. }
  177. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings
  178. }
  179. class ObjectMapping4[R, A1, A2, A3, A4](apply: Function4[A1, A2, A3, A4, R], unapply: Function1[R, Option[(A1, A2, A3, A4)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  180. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  181. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  182. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  183. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  184. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  185. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data)) match {
  186. case Left(errors) => Left(errors)
  187. case Right(values) => {
  188. applyConstraints(apply(
  189. values(0).asInstanceOf[A1],
  190. values(1).asInstanceOf[A2],
  191. values(2).asInstanceOf[A3],
  192. values(3).asInstanceOf[A4]
  193. ))
  194. }
  195. }
  196. }
  197. def unbind(value: R): Map[String, String] = {
  198. unapply(value).map { fields =>
  199. val (v1, v2, v3, v4) = fields
  200. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4)
  201. }.getOrElse(Map.empty)
  202. }
  203. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  204. unapply(value).map { fields =>
  205. val (v1, v2, v3, v4) = fields
  206. val a1 = field1.unbindAndValidate(v1)
  207. val a2 = field2.unbindAndValidate(v2)
  208. val a3 = field3.unbindAndValidate(v3)
  209. val a4 = field4.unbindAndValidate(v4)
  210. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1) ->
  211. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2)
  212. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  213. }
  214. def withPrefix(prefix: String): ObjectMapping4[R, A1, A2, A3, A4] = addPrefix(prefix).map(newKey =>
  215. new ObjectMapping4(apply, unapply, f1, f2, f3, f4, newKey, constraints)
  216. ).getOrElse(this)
  217. def verifying(addConstraints: Constraint[R]*): ObjectMapping4[R, A1, A2, A3, A4] = {
  218. new ObjectMapping4(apply, unapply, f1, f2, f3, f4, key, constraints ++ addConstraints.toSeq)
  219. }
  220. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings
  221. }
  222. class ObjectMapping5[R, A1, A2, A3, A4, A5](apply: Function5[A1, A2, A3, A4, A5, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  223. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  224. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  225. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  226. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  227. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  228. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  229. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data)) match {
  230. case Left(errors) => Left(errors)
  231. case Right(values) => {
  232. applyConstraints(apply(
  233. values(0).asInstanceOf[A1],
  234. values(1).asInstanceOf[A2],
  235. values(2).asInstanceOf[A3],
  236. values(3).asInstanceOf[A4],
  237. values(4).asInstanceOf[A5]
  238. ))
  239. }
  240. }
  241. }
  242. def unbind(value: R): Map[String, String] = {
  243. unapply(value).map { fields =>
  244. val (v1, v2, v3, v4, v5) = fields
  245. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5)
  246. }.getOrElse(Map.empty)
  247. }
  248. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  249. unapply(value).map { fields =>
  250. val (v1, v2, v3, v4, v5) = fields
  251. val a1 = field1.unbindAndValidate(v1)
  252. val a2 = field2.unbindAndValidate(v2)
  253. val a3 = field3.unbindAndValidate(v3)
  254. val a4 = field4.unbindAndValidate(v4)
  255. val a5 = field5.unbindAndValidate(v5)
  256. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1) ->
  257. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2)
  258. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  259. }
  260. def withPrefix(prefix: String): ObjectMapping5[R, A1, A2, A3, A4, A5] = addPrefix(prefix).map(newKey =>
  261. new ObjectMapping5(apply, unapply, f1, f2, f3, f4, f5, newKey, constraints)
  262. ).getOrElse(this)
  263. def verifying(addConstraints: Constraint[R]*): ObjectMapping5[R, A1, A2, A3, A4, A5] = {
  264. new ObjectMapping5(apply, unapply, f1, f2, f3, f4, f5, key, constraints ++ addConstraints.toSeq)
  265. }
  266. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings
  267. }
  268. class ObjectMapping6[R, A1, A2, A3, A4, A5, A6](apply: Function6[A1, A2, A3, A4, A5, A6, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  269. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  270. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  271. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  272. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  273. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  274. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  275. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  276. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data)) match {
  277. case Left(errors) => Left(errors)
  278. case Right(values) => {
  279. applyConstraints(apply(
  280. values(0).asInstanceOf[A1],
  281. values(1).asInstanceOf[A2],
  282. values(2).asInstanceOf[A3],
  283. values(3).asInstanceOf[A4],
  284. values(4).asInstanceOf[A5],
  285. values(5).asInstanceOf[A6]
  286. ))
  287. }
  288. }
  289. }
  290. def unbind(value: R): Map[String, String] = {
  291. unapply(value).map { fields =>
  292. val (v1, v2, v3, v4, v5, v6) = fields
  293. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6)
  294. }.getOrElse(Map.empty)
  295. }
  296. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  297. unapply(value).map { fields =>
  298. val (v1, v2, v3, v4, v5, v6) = fields
  299. val a1 = field1.unbindAndValidate(v1)
  300. val a2 = field2.unbindAndValidate(v2)
  301. val a3 = field3.unbindAndValidate(v3)
  302. val a4 = field4.unbindAndValidate(v4)
  303. val a5 = field5.unbindAndValidate(v5)
  304. val a6 = field6.unbindAndValidate(v6)
  305. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1) ->
  306. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2)
  307. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  308. }
  309. def withPrefix(prefix: String): ObjectMapping6[R, A1, A2, A3, A4, A5, A6] = addPrefix(prefix).map(newKey =>
  310. new ObjectMapping6(apply, unapply, f1, f2, f3, f4, f5, f6, newKey, constraints)
  311. ).getOrElse(this)
  312. def verifying(addConstraints: Constraint[R]*): ObjectMapping6[R, A1, A2, A3, A4, A5, A6] = {
  313. new ObjectMapping6(apply, unapply, f1, f2, f3, f4, f5, f6, key, constraints ++ addConstraints.toSeq)
  314. }
  315. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings
  316. }
  317. class ObjectMapping7[R, A1, A2, A3, A4, A5, A6, A7](apply: Function7[A1, A2, A3, A4, A5, A6, A7, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  318. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  319. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  320. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  321. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  322. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  323. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  324. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  325. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  326. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data)) match {
  327. case Left(errors) => Left(errors)
  328. case Right(values) => {
  329. applyConstraints(apply(
  330. values(0).asInstanceOf[A1],
  331. values(1).asInstanceOf[A2],
  332. values(2).asInstanceOf[A3],
  333. values(3).asInstanceOf[A4],
  334. values(4).asInstanceOf[A5],
  335. values(5).asInstanceOf[A6],
  336. values(6).asInstanceOf[A7]
  337. ))
  338. }
  339. }
  340. }
  341. def unbind(value: R): Map[String, String] = {
  342. unapply(value).map { fields =>
  343. val (v1, v2, v3, v4, v5, v6, v7) = fields
  344. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7)
  345. }.getOrElse(Map.empty)
  346. }
  347. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  348. unapply(value).map { fields =>
  349. val (v1, v2, v3, v4, v5, v6, v7) = fields
  350. val a1 = field1.unbindAndValidate(v1)
  351. val a2 = field2.unbindAndValidate(v2)
  352. val a3 = field3.unbindAndValidate(v3)
  353. val a4 = field4.unbindAndValidate(v4)
  354. val a5 = field5.unbindAndValidate(v5)
  355. val a6 = field6.unbindAndValidate(v6)
  356. val a7 = field7.unbindAndValidate(v7)
  357. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1) ->
  358. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2)
  359. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  360. }
  361. def withPrefix(prefix: String): ObjectMapping7[R, A1, A2, A3, A4, A5, A6, A7] = addPrefix(prefix).map(newKey =>
  362. new ObjectMapping7(apply, unapply, f1, f2, f3, f4, f5, f6, f7, newKey, constraints)
  363. ).getOrElse(this)
  364. def verifying(addConstraints: Constraint[R]*): ObjectMapping7[R, A1, A2, A3, A4, A5, A6, A7] = {
  365. new ObjectMapping7(apply, unapply, f1, f2, f3, f4, f5, f6, f7, key, constraints ++ addConstraints.toSeq)
  366. }
  367. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings
  368. }
  369. class ObjectMapping8[R, A1, A2, A3, A4, A5, A6, A7, A8](apply: Function8[A1, A2, A3, A4, A5, A6, A7, A8, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  370. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  371. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  372. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  373. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  374. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  375. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  376. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  377. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  378. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  379. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data)) match {
  380. case Left(errors) => Left(errors)
  381. case Right(values) => {
  382. applyConstraints(apply(
  383. values(0).asInstanceOf[A1],
  384. values(1).asInstanceOf[A2],
  385. values(2).asInstanceOf[A3],
  386. values(3).asInstanceOf[A4],
  387. values(4).asInstanceOf[A5],
  388. values(5).asInstanceOf[A6],
  389. values(6).asInstanceOf[A7],
  390. values(7).asInstanceOf[A8]
  391. ))
  392. }
  393. }
  394. }
  395. def unbind(value: R): Map[String, String] = {
  396. unapply(value).map { fields =>
  397. val (v1, v2, v3, v4, v5, v6, v7, v8) = fields
  398. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8)
  399. }.getOrElse(Map.empty)
  400. }
  401. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  402. unapply(value).map { fields =>
  403. val (v1, v2, v3, v4, v5, v6, v7, v8) = fields
  404. val a1 = field1.unbindAndValidate(v1)
  405. val a2 = field2.unbindAndValidate(v2)
  406. val a3 = field3.unbindAndValidate(v3)
  407. val a4 = field4.unbindAndValidate(v4)
  408. val a5 = field5.unbindAndValidate(v5)
  409. val a6 = field6.unbindAndValidate(v6)
  410. val a7 = field7.unbindAndValidate(v7)
  411. val a8 = field8.unbindAndValidate(v8)
  412. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1) ->
  413. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2)
  414. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  415. }
  416. def withPrefix(prefix: String): ObjectMapping8[R, A1, A2, A3, A4, A5, A6, A7, A8] = addPrefix(prefix).map(newKey =>
  417. new ObjectMapping8(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, newKey, constraints)
  418. ).getOrElse(this)
  419. def verifying(addConstraints: Constraint[R]*): ObjectMapping8[R, A1, A2, A3, A4, A5, A6, A7, A8] = {
  420. new ObjectMapping8(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, key, constraints ++ addConstraints.toSeq)
  421. }
  422. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings
  423. }
  424. class ObjectMapping9[R, A1, A2, A3, A4, A5, A6, A7, A8, A9](apply: Function9[A1, A2, A3, A4, A5, A6, A7, A8, A9, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  425. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  426. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  427. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  428. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  429. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  430. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  431. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  432. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  433. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  434. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  435. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data)) match {
  436. case Left(errors) => Left(errors)
  437. case Right(values) => {
  438. applyConstraints(apply(
  439. values(0).asInstanceOf[A1],
  440. values(1).asInstanceOf[A2],
  441. values(2).asInstanceOf[A3],
  442. values(3).asInstanceOf[A4],
  443. values(4).asInstanceOf[A5],
  444. values(5).asInstanceOf[A6],
  445. values(6).asInstanceOf[A7],
  446. values(7).asInstanceOf[A8],
  447. values(8).asInstanceOf[A9]
  448. ))
  449. }
  450. }
  451. }
  452. def unbind(value: R): Map[String, String] = {
  453. unapply(value).map { fields =>
  454. val (v1, v2, v3, v4, v5, v6, v7, v8, v9) = fields
  455. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9)
  456. }.getOrElse(Map.empty)
  457. }
  458. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  459. unapply(value).map { fields =>
  460. val (v1, v2, v3, v4, v5, v6, v7, v8, v9) = fields
  461. val a1 = field1.unbindAndValidate(v1)
  462. val a2 = field2.unbindAndValidate(v2)
  463. val a3 = field3.unbindAndValidate(v3)
  464. val a4 = field4.unbindAndValidate(v4)
  465. val a5 = field5.unbindAndValidate(v5)
  466. val a6 = field6.unbindAndValidate(v6)
  467. val a7 = field7.unbindAndValidate(v7)
  468. val a8 = field8.unbindAndValidate(v8)
  469. val a9 = field9.unbindAndValidate(v9)
  470. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1) ->
  471. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2)
  472. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  473. }
  474. def withPrefix(prefix: String): ObjectMapping9[R, A1, A2, A3, A4, A5, A6, A7, A8, A9] = addPrefix(prefix).map(newKey =>
  475. new ObjectMapping9(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, newKey, constraints)
  476. ).getOrElse(this)
  477. def verifying(addConstraints: Constraint[R]*): ObjectMapping9[R, A1, A2, A3, A4, A5, A6, A7, A8, A9] = {
  478. new ObjectMapping9(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, key, constraints ++ addConstraints.toSeq)
  479. }
  480. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings
  481. }
  482. class ObjectMapping10[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10](apply: Function10[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  483. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  484. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  485. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  486. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  487. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  488. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  489. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  490. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  491. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  492. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  493. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  494. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data)) match {
  495. case Left(errors) => Left(errors)
  496. case Right(values) => {
  497. applyConstraints(apply(
  498. values(0).asInstanceOf[A1],
  499. values(1).asInstanceOf[A2],
  500. values(2).asInstanceOf[A3],
  501. values(3).asInstanceOf[A4],
  502. values(4).asInstanceOf[A5],
  503. values(5).asInstanceOf[A6],
  504. values(6).asInstanceOf[A7],
  505. values(7).asInstanceOf[A8],
  506. values(8).asInstanceOf[A9],
  507. values(9).asInstanceOf[A10]
  508. ))
  509. }
  510. }
  511. }
  512. def unbind(value: R): Map[String, String] = {
  513. unapply(value).map { fields =>
  514. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) = fields
  515. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10)
  516. }.getOrElse(Map.empty)
  517. }
  518. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  519. unapply(value).map { fields =>
  520. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10) = fields
  521. val a1 = field1.unbindAndValidate(v1)
  522. val a2 = field2.unbindAndValidate(v2)
  523. val a3 = field3.unbindAndValidate(v3)
  524. val a4 = field4.unbindAndValidate(v4)
  525. val a5 = field5.unbindAndValidate(v5)
  526. val a6 = field6.unbindAndValidate(v6)
  527. val a7 = field7.unbindAndValidate(v7)
  528. val a8 = field8.unbindAndValidate(v8)
  529. val a9 = field9.unbindAndValidate(v9)
  530. val a10 = field10.unbindAndValidate(v10)
  531. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1) ->
  532. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2)
  533. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  534. }
  535. def withPrefix(prefix: String): ObjectMapping10[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10] = addPrefix(prefix).map(newKey =>
  536. new ObjectMapping10(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, newKey, constraints)
  537. ).getOrElse(this)
  538. def verifying(addConstraints: Constraint[R]*): ObjectMapping10[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10] = {
  539. new ObjectMapping10(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, key, constraints ++ addConstraints.toSeq)
  540. }
  541. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings
  542. }
  543. class ObjectMapping11[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11](apply: Function11[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  544. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  545. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  546. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  547. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  548. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  549. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  550. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  551. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  552. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  553. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  554. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  555. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  556. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data)) match {
  557. case Left(errors) => Left(errors)
  558. case Right(values) => {
  559. applyConstraints(apply(
  560. values(0).asInstanceOf[A1],
  561. values(1).asInstanceOf[A2],
  562. values(2).asInstanceOf[A3],
  563. values(3).asInstanceOf[A4],
  564. values(4).asInstanceOf[A5],
  565. values(5).asInstanceOf[A6],
  566. values(6).asInstanceOf[A7],
  567. values(7).asInstanceOf[A8],
  568. values(8).asInstanceOf[A9],
  569. values(9).asInstanceOf[A10],
  570. values(10).asInstanceOf[A11]
  571. ))
  572. }
  573. }
  574. }
  575. def unbind(value: R): Map[String, String] = {
  576. unapply(value).map { fields =>
  577. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) = fields
  578. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11)
  579. }.getOrElse(Map.empty)
  580. }
  581. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  582. unapply(value).map { fields =>
  583. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11) = fields
  584. val a1 = field1.unbindAndValidate(v1)
  585. val a2 = field2.unbindAndValidate(v2)
  586. val a3 = field3.unbindAndValidate(v3)
  587. val a4 = field4.unbindAndValidate(v4)
  588. val a5 = field5.unbindAndValidate(v5)
  589. val a6 = field6.unbindAndValidate(v6)
  590. val a7 = field7.unbindAndValidate(v7)
  591. val a8 = field8.unbindAndValidate(v8)
  592. val a9 = field9.unbindAndValidate(v9)
  593. val a10 = field10.unbindAndValidate(v10)
  594. val a11 = field11.unbindAndValidate(v11)
  595. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1) ->
  596. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2)
  597. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  598. }
  599. def withPrefix(prefix: String): ObjectMapping11[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11] = addPrefix(prefix).map(newKey =>
  600. new ObjectMapping11(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, newKey, constraints)
  601. ).getOrElse(this)
  602. def verifying(addConstraints: Constraint[R]*): ObjectMapping11[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11] = {
  603. new ObjectMapping11(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, key, constraints ++ addConstraints.toSeq)
  604. }
  605. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings
  606. }
  607. class ObjectMapping12[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12](apply: Function12[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  608. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  609. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  610. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  611. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  612. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  613. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  614. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  615. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  616. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  617. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  618. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  619. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  620. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  621. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data)) match {
  622. case Left(errors) => Left(errors)
  623. case Right(values) => {
  624. applyConstraints(apply(
  625. values(0).asInstanceOf[A1],
  626. values(1).asInstanceOf[A2],
  627. values(2).asInstanceOf[A3],
  628. values(3).asInstanceOf[A4],
  629. values(4).asInstanceOf[A5],
  630. values(5).asInstanceOf[A6],
  631. values(6).asInstanceOf[A7],
  632. values(7).asInstanceOf[A8],
  633. values(8).asInstanceOf[A9],
  634. values(9).asInstanceOf[A10],
  635. values(10).asInstanceOf[A11],
  636. values(11).asInstanceOf[A12]
  637. ))
  638. }
  639. }
  640. }
  641. def unbind(value: R): Map[String, String] = {
  642. unapply(value).map { fields =>
  643. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) = fields
  644. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12)
  645. }.getOrElse(Map.empty)
  646. }
  647. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  648. unapply(value).map { fields =>
  649. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12) = fields
  650. val a1 = field1.unbindAndValidate(v1)
  651. val a2 = field2.unbindAndValidate(v2)
  652. val a3 = field3.unbindAndValidate(v3)
  653. val a4 = field4.unbindAndValidate(v4)
  654. val a5 = field5.unbindAndValidate(v5)
  655. val a6 = field6.unbindAndValidate(v6)
  656. val a7 = field7.unbindAndValidate(v7)
  657. val a8 = field8.unbindAndValidate(v8)
  658. val a9 = field9.unbindAndValidate(v9)
  659. val a10 = field10.unbindAndValidate(v10)
  660. val a11 = field11.unbindAndValidate(v11)
  661. val a12 = field12.unbindAndValidate(v12)
  662. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1) ->
  663. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2)
  664. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  665. }
  666. def withPrefix(prefix: String): ObjectMapping12[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12] = addPrefix(prefix).map(newKey =>
  667. new ObjectMapping12(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, newKey, constraints)
  668. ).getOrElse(this)
  669. def verifying(addConstraints: Constraint[R]*): ObjectMapping12[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12] = {
  670. new ObjectMapping12(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, key, constraints ++ addConstraints.toSeq)
  671. }
  672. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings
  673. }
  674. class ObjectMapping13[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13](apply: Function13[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  675. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  676. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  677. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  678. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  679. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  680. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  681. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  682. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  683. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  684. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  685. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  686. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  687. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  688. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  689. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data)) match {
  690. case Left(errors) => Left(errors)
  691. case Right(values) => {
  692. applyConstraints(apply(
  693. values(0).asInstanceOf[A1],
  694. values(1).asInstanceOf[A2],
  695. values(2).asInstanceOf[A3],
  696. values(3).asInstanceOf[A4],
  697. values(4).asInstanceOf[A5],
  698. values(5).asInstanceOf[A6],
  699. values(6).asInstanceOf[A7],
  700. values(7).asInstanceOf[A8],
  701. values(8).asInstanceOf[A9],
  702. values(9).asInstanceOf[A10],
  703. values(10).asInstanceOf[A11],
  704. values(11).asInstanceOf[A12],
  705. values(12).asInstanceOf[A13]
  706. ))
  707. }
  708. }
  709. }
  710. def unbind(value: R): Map[String, String] = {
  711. unapply(value).map { fields =>
  712. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) = fields
  713. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13)
  714. }.getOrElse(Map.empty)
  715. }
  716. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  717. unapply(value).map { fields =>
  718. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13) = fields
  719. val a1 = field1.unbindAndValidate(v1)
  720. val a2 = field2.unbindAndValidate(v2)
  721. val a3 = field3.unbindAndValidate(v3)
  722. val a4 = field4.unbindAndValidate(v4)
  723. val a5 = field5.unbindAndValidate(v5)
  724. val a6 = field6.unbindAndValidate(v6)
  725. val a7 = field7.unbindAndValidate(v7)
  726. val a8 = field8.unbindAndValidate(v8)
  727. val a9 = field9.unbindAndValidate(v9)
  728. val a10 = field10.unbindAndValidate(v10)
  729. val a11 = field11.unbindAndValidate(v11)
  730. val a12 = field12.unbindAndValidate(v12)
  731. val a13 = field13.unbindAndValidate(v13)
  732. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1) ->
  733. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2)
  734. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  735. }
  736. def withPrefix(prefix: String): ObjectMapping13[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13] = addPrefix(prefix).map(newKey =>
  737. new ObjectMapping13(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, newKey, constraints)
  738. ).getOrElse(this)
  739. def verifying(addConstraints: Constraint[R]*): ObjectMapping13[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13] = {
  740. new ObjectMapping13(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, key, constraints ++ addConstraints.toSeq)
  741. }
  742. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings
  743. }
  744. class ObjectMapping14[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14](apply: Function14[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  745. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  746. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  747. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  748. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  749. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  750. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  751. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  752. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  753. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  754. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  755. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  756. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  757. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  758. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  759. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  760. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data)) match {
  761. case Left(errors) => Left(errors)
  762. case Right(values) => {
  763. applyConstraints(apply(
  764. values(0).asInstanceOf[A1],
  765. values(1).asInstanceOf[A2],
  766. values(2).asInstanceOf[A3],
  767. values(3).asInstanceOf[A4],
  768. values(4).asInstanceOf[A5],
  769. values(5).asInstanceOf[A6],
  770. values(6).asInstanceOf[A7],
  771. values(7).asInstanceOf[A8],
  772. values(8).asInstanceOf[A9],
  773. values(9).asInstanceOf[A10],
  774. values(10).asInstanceOf[A11],
  775. values(11).asInstanceOf[A12],
  776. values(12).asInstanceOf[A13],
  777. values(13).asInstanceOf[A14]
  778. ))
  779. }
  780. }
  781. }
  782. def unbind(value: R): Map[String, String] = {
  783. unapply(value).map { fields =>
  784. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) = fields
  785. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14)
  786. }.getOrElse(Map.empty)
  787. }
  788. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  789. unapply(value).map { fields =>
  790. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14) = fields
  791. val a1 = field1.unbindAndValidate(v1)
  792. val a2 = field2.unbindAndValidate(v2)
  793. val a3 = field3.unbindAndValidate(v3)
  794. val a4 = field4.unbindAndValidate(v4)
  795. val a5 = field5.unbindAndValidate(v5)
  796. val a6 = field6.unbindAndValidate(v6)
  797. val a7 = field7.unbindAndValidate(v7)
  798. val a8 = field8.unbindAndValidate(v8)
  799. val a9 = field9.unbindAndValidate(v9)
  800. val a10 = field10.unbindAndValidate(v10)
  801. val a11 = field11.unbindAndValidate(v11)
  802. val a12 = field12.unbindAndValidate(v12)
  803. val a13 = field13.unbindAndValidate(v13)
  804. val a14 = field14.unbindAndValidate(v14)
  805. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1) ->
  806. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2)
  807. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  808. }
  809. def withPrefix(prefix: String): ObjectMapping14[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14] = addPrefix(prefix).map(newKey =>
  810. new ObjectMapping14(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, newKey, constraints)
  811. ).getOrElse(this)
  812. def verifying(addConstraints: Constraint[R]*): ObjectMapping14[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14] = {
  813. new ObjectMapping14(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, key, constraints ++ addConstraints.toSeq)
  814. }
  815. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings
  816. }
  817. class ObjectMapping15[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15](apply: Function15[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  818. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  819. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  820. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  821. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  822. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  823. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  824. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  825. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  826. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  827. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  828. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  829. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  830. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  831. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  832. val field15 = f15._2.withPrefix(f15._1).withPrefix(key)
  833. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  834. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data)) match {
  835. case Left(errors) => Left(errors)
  836. case Right(values) => {
  837. applyConstraints(apply(
  838. values(0).asInstanceOf[A1],
  839. values(1).asInstanceOf[A2],
  840. values(2).asInstanceOf[A3],
  841. values(3).asInstanceOf[A4],
  842. values(4).asInstanceOf[A5],
  843. values(5).asInstanceOf[A6],
  844. values(6).asInstanceOf[A7],
  845. values(7).asInstanceOf[A8],
  846. values(8).asInstanceOf[A9],
  847. values(9).asInstanceOf[A10],
  848. values(10).asInstanceOf[A11],
  849. values(11).asInstanceOf[A12],
  850. values(12).asInstanceOf[A13],
  851. values(13).asInstanceOf[A14],
  852. values(14).asInstanceOf[A15]
  853. ))
  854. }
  855. }
  856. }
  857. def unbind(value: R): Map[String, String] = {
  858. unapply(value).map { fields =>
  859. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) = fields
  860. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15)
  861. }.getOrElse(Map.empty)
  862. }
  863. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  864. unapply(value).map { fields =>
  865. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15) = fields
  866. val a1 = field1.unbindAndValidate(v1)
  867. val a2 = field2.unbindAndValidate(v2)
  868. val a3 = field3.unbindAndValidate(v3)
  869. val a4 = field4.unbindAndValidate(v4)
  870. val a5 = field5.unbindAndValidate(v5)
  871. val a6 = field6.unbindAndValidate(v6)
  872. val a7 = field7.unbindAndValidate(v7)
  873. val a8 = field8.unbindAndValidate(v8)
  874. val a9 = field9.unbindAndValidate(v9)
  875. val a10 = field10.unbindAndValidate(v10)
  876. val a11 = field11.unbindAndValidate(v11)
  877. val a12 = field12.unbindAndValidate(v12)
  878. val a13 = field13.unbindAndValidate(v13)
  879. val a14 = field14.unbindAndValidate(v14)
  880. val a15 = field15.unbindAndValidate(v15)
  881. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1) ->
  882. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2)
  883. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  884. }
  885. def withPrefix(prefix: String): ObjectMapping15[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15] = addPrefix(prefix).map(newKey =>
  886. new ObjectMapping15(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, newKey, constraints)
  887. ).getOrElse(this)
  888. def verifying(addConstraints: Constraint[R]*): ObjectMapping15[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15] = {
  889. new ObjectMapping15(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, key, constraints ++ addConstraints.toSeq)
  890. }
  891. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings
  892. }
  893. class ObjectMapping16[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16](apply: Function16[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  894. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  895. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  896. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  897. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  898. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  899. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  900. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  901. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  902. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  903. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  904. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  905. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  906. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  907. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  908. val field15 = f15._2.withPrefix(f15._1).withPrefix(key)
  909. val field16 = f16._2.withPrefix(f16._1).withPrefix(key)
  910. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  911. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data)) match {
  912. case Left(errors) => Left(errors)
  913. case Right(values) => {
  914. applyConstraints(apply(
  915. values(0).asInstanceOf[A1],
  916. values(1).asInstanceOf[A2],
  917. values(2).asInstanceOf[A3],
  918. values(3).asInstanceOf[A4],
  919. values(4).asInstanceOf[A5],
  920. values(5).asInstanceOf[A6],
  921. values(6).asInstanceOf[A7],
  922. values(7).asInstanceOf[A8],
  923. values(8).asInstanceOf[A9],
  924. values(9).asInstanceOf[A10],
  925. values(10).asInstanceOf[A11],
  926. values(11).asInstanceOf[A12],
  927. values(12).asInstanceOf[A13],
  928. values(13).asInstanceOf[A14],
  929. values(14).asInstanceOf[A15],
  930. values(15).asInstanceOf[A16]
  931. ))
  932. }
  933. }
  934. }
  935. def unbind(value: R): Map[String, String] = {
  936. unapply(value).map { fields =>
  937. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) = fields
  938. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16)
  939. }.getOrElse(Map.empty)
  940. }
  941. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  942. unapply(value).map { fields =>
  943. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16) = fields
  944. val a1 = field1.unbindAndValidate(v1)
  945. val a2 = field2.unbindAndValidate(v2)
  946. val a3 = field3.unbindAndValidate(v3)
  947. val a4 = field4.unbindAndValidate(v4)
  948. val a5 = field5.unbindAndValidate(v5)
  949. val a6 = field6.unbindAndValidate(v6)
  950. val a7 = field7.unbindAndValidate(v7)
  951. val a8 = field8.unbindAndValidate(v8)
  952. val a9 = field9.unbindAndValidate(v9)
  953. val a10 = field10.unbindAndValidate(v10)
  954. val a11 = field11.unbindAndValidate(v11)
  955. val a12 = field12.unbindAndValidate(v12)
  956. val a13 = field13.unbindAndValidate(v13)
  957. val a14 = field14.unbindAndValidate(v14)
  958. val a15 = field15.unbindAndValidate(v15)
  959. val a16 = field16.unbindAndValidate(v16)
  960. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1) ->
  961. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2)
  962. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  963. }
  964. def withPrefix(prefix: String): ObjectMapping16[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16] = addPrefix(prefix).map(newKey =>
  965. new ObjectMapping16(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, newKey, constraints)
  966. ).getOrElse(this)
  967. def verifying(addConstraints: Constraint[R]*): ObjectMapping16[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16] = {
  968. new ObjectMapping16(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, key, constraints ++ addConstraints.toSeq)
  969. }
  970. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings
  971. }
  972. class ObjectMapping17[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17](apply: Function17[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), f17: (String, Mapping[A17]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  973. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  974. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  975. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  976. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  977. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  978. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  979. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  980. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  981. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  982. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  983. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  984. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  985. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  986. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  987. val field15 = f15._2.withPrefix(f15._1).withPrefix(key)
  988. val field16 = f16._2.withPrefix(f16._1).withPrefix(key)
  989. val field17 = f17._2.withPrefix(f17._1).withPrefix(key)
  990. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  991. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data), field17.bind(data)) match {
  992. case Left(errors) => Left(errors)
  993. case Right(values) => {
  994. applyConstraints(apply(
  995. values(0).asInstanceOf[A1],
  996. values(1).asInstanceOf[A2],
  997. values(2).asInstanceOf[A3],
  998. values(3).asInstanceOf[A4],
  999. values(4).asInstanceOf[A5],
  1000. values(5).asInstanceOf[A6],
  1001. values(6).asInstanceOf[A7],
  1002. values(7).asInstanceOf[A8],
  1003. values(8).asInstanceOf[A9],
  1004. values(9).asInstanceOf[A10],
  1005. values(10).asInstanceOf[A11],
  1006. values(11).asInstanceOf[A12],
  1007. values(12).asInstanceOf[A13],
  1008. values(13).asInstanceOf[A14],
  1009. values(14).asInstanceOf[A15],
  1010. values(15).asInstanceOf[A16],
  1011. values(16).asInstanceOf[A17]
  1012. ))
  1013. }
  1014. }
  1015. }
  1016. def unbind(value: R): Map[String, String] = {
  1017. unapply(value).map { fields =>
  1018. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) = fields
  1019. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) ++ field17.unbind(v17)
  1020. }.getOrElse(Map.empty)
  1021. }
  1022. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  1023. unapply(value).map { fields =>
  1024. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17) = fields
  1025. val a1 = field1.unbindAndValidate(v1)
  1026. val a2 = field2.unbindAndValidate(v2)
  1027. val a3 = field3.unbindAndValidate(v3)
  1028. val a4 = field4.unbindAndValidate(v4)
  1029. val a5 = field5.unbindAndValidate(v5)
  1030. val a6 = field6.unbindAndValidate(v6)
  1031. val a7 = field7.unbindAndValidate(v7)
  1032. val a8 = field8.unbindAndValidate(v8)
  1033. val a9 = field9.unbindAndValidate(v9)
  1034. val a10 = field10.unbindAndValidate(v10)
  1035. val a11 = field11.unbindAndValidate(v11)
  1036. val a12 = field12.unbindAndValidate(v12)
  1037. val a13 = field13.unbindAndValidate(v13)
  1038. val a14 = field14.unbindAndValidate(v14)
  1039. val a15 = field15.unbindAndValidate(v15)
  1040. val a16 = field16.unbindAndValidate(v16)
  1041. val a17 = field17.unbindAndValidate(v17)
  1042. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1 ++ a17._1) ->
  1043. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2 ++ a17._2)
  1044. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  1045. }
  1046. def withPrefix(prefix: String): ObjectMapping17[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17] = addPrefix(prefix).map(newKey =>
  1047. new ObjectMapping17(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, newKey, constraints)
  1048. ).getOrElse(this)
  1049. def verifying(addConstraints: Constraint[R]*): ObjectMapping17[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17] = {
  1050. new ObjectMapping17(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, key, constraints ++ addConstraints.toSeq)
  1051. }
  1052. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings ++ field17.mappings
  1053. }
  1054. class ObjectMapping18[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18](apply: Function18[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), f17: (String, Mapping[A17]), f18: (String, Mapping[A18]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  1055. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  1056. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  1057. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  1058. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  1059. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  1060. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  1061. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  1062. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  1063. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  1064. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  1065. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  1066. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  1067. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  1068. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  1069. val field15 = f15._2.withPrefix(f15._1).withPrefix(key)
  1070. val field16 = f16._2.withPrefix(f16._1).withPrefix(key)
  1071. val field17 = f17._2.withPrefix(f17._1).withPrefix(key)
  1072. val field18 = f18._2.withPrefix(f18._1).withPrefix(key)
  1073. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  1074. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data), field17.bind(data), field18.bind(data)) match {
  1075. case Left(errors) => Left(errors)
  1076. case Right(values) => {
  1077. applyConstraints(apply(
  1078. values(0).asInstanceOf[A1],
  1079. values(1).asInstanceOf[A2],
  1080. values(2).asInstanceOf[A3],
  1081. values(3).asInstanceOf[A4],
  1082. values(4).asInstanceOf[A5],
  1083. values(5).asInstanceOf[A6],
  1084. values(6).asInstanceOf[A7],
  1085. values(7).asInstanceOf[A8],
  1086. values(8).asInstanceOf[A9],
  1087. values(9).asInstanceOf[A10],
  1088. values(10).asInstanceOf[A11],
  1089. values(11).asInstanceOf[A12],
  1090. values(12).asInstanceOf[A13],
  1091. values(13).asInstanceOf[A14],
  1092. values(14).asInstanceOf[A15],
  1093. values(15).asInstanceOf[A16],
  1094. values(16).asInstanceOf[A17],
  1095. values(17).asInstanceOf[A18]
  1096. ))
  1097. }
  1098. }
  1099. }
  1100. def unbind(value: R): Map[String, String] = {
  1101. unapply(value).map { fields =>
  1102. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) = fields
  1103. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) ++ field17.unbind(v17) ++ field18.unbind(v18)
  1104. }.getOrElse(Map.empty)
  1105. }
  1106. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  1107. unapply(value).map { fields =>
  1108. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18) = fields
  1109. val a1 = field1.unbindAndValidate(v1)
  1110. val a2 = field2.unbindAndValidate(v2)
  1111. val a3 = field3.unbindAndValidate(v3)
  1112. val a4 = field4.unbindAndValidate(v4)
  1113. val a5 = field5.unbindAndValidate(v5)
  1114. val a6 = field6.unbindAndValidate(v6)
  1115. val a7 = field7.unbindAndValidate(v7)
  1116. val a8 = field8.unbindAndValidate(v8)
  1117. val a9 = field9.unbindAndValidate(v9)
  1118. val a10 = field10.unbindAndValidate(v10)
  1119. val a11 = field11.unbindAndValidate(v11)
  1120. val a12 = field12.unbindAndValidate(v12)
  1121. val a13 = field13.unbindAndValidate(v13)
  1122. val a14 = field14.unbindAndValidate(v14)
  1123. val a15 = field15.unbindAndValidate(v15)
  1124. val a16 = field16.unbindAndValidate(v16)
  1125. val a17 = field17.unbindAndValidate(v17)
  1126. val a18 = field18.unbindAndValidate(v18)
  1127. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1 ++ a17._1 ++ a18._1) ->
  1128. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2 ++ a17._2 ++ a18._2)
  1129. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  1130. }
  1131. def withPrefix(prefix: String): ObjectMapping18[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18] = addPrefix(prefix).map(newKey =>
  1132. new ObjectMapping18(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, newKey, constraints)
  1133. ).getOrElse(this)
  1134. def verifying(addConstraints: Constraint[R]*): ObjectMapping18[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18] = {
  1135. new ObjectMapping18(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, key, constraints ++ addConstraints.toSeq)
  1136. }
  1137. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings ++ field17.mappings ++ field18.mappings
  1138. }
  1139. class ObjectMapping19[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19](apply: Function19[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), f17: (String, Mapping[A17]), f18: (String, Mapping[A18]), f19: (String, Mapping[A19]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  1140. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  1141. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  1142. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  1143. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  1144. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  1145. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  1146. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  1147. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  1148. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  1149. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  1150. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  1151. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  1152. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  1153. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  1154. val field15 = f15._2.withPrefix(f15._1).withPrefix(key)
  1155. val field16 = f16._2.withPrefix(f16._1).withPrefix(key)
  1156. val field17 = f17._2.withPrefix(f17._1).withPrefix(key)
  1157. val field18 = f18._2.withPrefix(f18._1).withPrefix(key)
  1158. val field19 = f19._2.withPrefix(f19._1).withPrefix(key)
  1159. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  1160. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data), field17.bind(data), field18.bind(data), field19.bind(data)) match {
  1161. case Left(errors) => Left(errors)
  1162. case Right(values) => {
  1163. applyConstraints(apply(
  1164. values(0).asInstanceOf[A1],
  1165. values(1).asInstanceOf[A2],
  1166. values(2).asInstanceOf[A3],
  1167. values(3).asInstanceOf[A4],
  1168. values(4).asInstanceOf[A5],
  1169. values(5).asInstanceOf[A6],
  1170. values(6).asInstanceOf[A7],
  1171. values(7).asInstanceOf[A8],
  1172. values(8).asInstanceOf[A9],
  1173. values(9).asInstanceOf[A10],
  1174. values(10).asInstanceOf[A11],
  1175. values(11).asInstanceOf[A12],
  1176. values(12).asInstanceOf[A13],
  1177. values(13).asInstanceOf[A14],
  1178. values(14).asInstanceOf[A15],
  1179. values(15).asInstanceOf[A16],
  1180. values(16).asInstanceOf[A17],
  1181. values(17).asInstanceOf[A18],
  1182. values(18).asInstanceOf[A19]
  1183. ))
  1184. }
  1185. }
  1186. }
  1187. def unbind(value: R): Map[String, String] = {
  1188. unapply(value).map { fields =>
  1189. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) = fields
  1190. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) ++ field17.unbind(v17) ++ field18.unbind(v18) ++ field19.unbind(v19)
  1191. }.getOrElse(Map.empty)
  1192. }
  1193. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  1194. unapply(value).map { fields =>
  1195. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19) = fields
  1196. val a1 = field1.unbindAndValidate(v1)
  1197. val a2 = field2.unbindAndValidate(v2)
  1198. val a3 = field3.unbindAndValidate(v3)
  1199. val a4 = field4.unbindAndValidate(v4)
  1200. val a5 = field5.unbindAndValidate(v5)
  1201. val a6 = field6.unbindAndValidate(v6)
  1202. val a7 = field7.unbindAndValidate(v7)
  1203. val a8 = field8.unbindAndValidate(v8)
  1204. val a9 = field9.unbindAndValidate(v9)
  1205. val a10 = field10.unbindAndValidate(v10)
  1206. val a11 = field11.unbindAndValidate(v11)
  1207. val a12 = field12.unbindAndValidate(v12)
  1208. val a13 = field13.unbindAndValidate(v13)
  1209. val a14 = field14.unbindAndValidate(v14)
  1210. val a15 = field15.unbindAndValidate(v15)
  1211. val a16 = field16.unbindAndValidate(v16)
  1212. val a17 = field17.unbindAndValidate(v17)
  1213. val a18 = field18.unbindAndValidate(v18)
  1214. val a19 = field19.unbindAndValidate(v19)
  1215. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1 ++ a17._1 ++ a18._1 ++ a19._1) ->
  1216. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2 ++ a17._2 ++ a18._2 ++ a19._2)
  1217. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  1218. }
  1219. def withPrefix(prefix: String): ObjectMapping19[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19] = addPrefix(prefix).map(newKey =>
  1220. new ObjectMapping19(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, newKey, constraints)
  1221. ).getOrElse(this)
  1222. def verifying(addConstraints: Constraint[R]*): ObjectMapping19[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19] = {
  1223. new ObjectMapping19(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, key, constraints ++ addConstraints.toSeq)
  1224. }
  1225. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings ++ field17.mappings ++ field18.mappings ++ field19.mappings
  1226. }
  1227. class ObjectMapping20[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20](apply: Function20[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), f17: (String, Mapping[A17]), f18: (String, Mapping[A18]), f19: (String, Mapping[A19]), f20: (String, Mapping[A20]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  1228. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  1229. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  1230. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  1231. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  1232. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  1233. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  1234. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  1235. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  1236. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  1237. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  1238. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  1239. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  1240. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  1241. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  1242. val field15 = f15._2.withPrefix(f15._1).withPrefix(key)
  1243. val field16 = f16._2.withPrefix(f16._1).withPrefix(key)
  1244. val field17 = f17._2.withPrefix(f17._1).withPrefix(key)
  1245. val field18 = f18._2.withPrefix(f18._1).withPrefix(key)
  1246. val field19 = f19._2.withPrefix(f19._1).withPrefix(key)
  1247. val field20 = f20._2.withPrefix(f20._1).withPrefix(key)
  1248. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  1249. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data), field17.bind(data), field18.bind(data), field19.bind(data), field20.bind(data)) match {
  1250. case Left(errors) => Left(errors)
  1251. case Right(values) => {
  1252. applyConstraints(apply(
  1253. values(0).asInstanceOf[A1],
  1254. values(1).asInstanceOf[A2],
  1255. values(2).asInstanceOf[A3],
  1256. values(3).asInstanceOf[A4],
  1257. values(4).asInstanceOf[A5],
  1258. values(5).asInstanceOf[A6],
  1259. values(6).asInstanceOf[A7],
  1260. values(7).asInstanceOf[A8],
  1261. values(8).asInstanceOf[A9],
  1262. values(9).asInstanceOf[A10],
  1263. values(10).asInstanceOf[A11],
  1264. values(11).asInstanceOf[A12],
  1265. values(12).asInstanceOf[A13],
  1266. values(13).asInstanceOf[A14],
  1267. values(14).asInstanceOf[A15],
  1268. values(15).asInstanceOf[A16],
  1269. values(16).asInstanceOf[A17],
  1270. values(17).asInstanceOf[A18],
  1271. values(18).asInstanceOf[A19],
  1272. values(19).asInstanceOf[A20]
  1273. ))
  1274. }
  1275. }
  1276. }
  1277. def unbind(value: R): Map[String, String] = {
  1278. unapply(value).map { fields =>
  1279. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) = fields
  1280. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) ++ field17.unbind(v17) ++ field18.unbind(v18) ++ field19.unbind(v19) ++ field20.unbind(v20)
  1281. }.getOrElse(Map.empty)
  1282. }
  1283. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  1284. unapply(value).map { fields =>
  1285. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20) = fields
  1286. val a1 = field1.unbindAndValidate(v1)
  1287. val a2 = field2.unbindAndValidate(v2)
  1288. val a3 = field3.unbindAndValidate(v3)
  1289. val a4 = field4.unbindAndValidate(v4)
  1290. val a5 = field5.unbindAndValidate(v5)
  1291. val a6 = field6.unbindAndValidate(v6)
  1292. val a7 = field7.unbindAndValidate(v7)
  1293. val a8 = field8.unbindAndValidate(v8)
  1294. val a9 = field9.unbindAndValidate(v9)
  1295. val a10 = field10.unbindAndValidate(v10)
  1296. val a11 = field11.unbindAndValidate(v11)
  1297. val a12 = field12.unbindAndValidate(v12)
  1298. val a13 = field13.unbindAndValidate(v13)
  1299. val a14 = field14.unbindAndValidate(v14)
  1300. val a15 = field15.unbindAndValidate(v15)
  1301. val a16 = field16.unbindAndValidate(v16)
  1302. val a17 = field17.unbindAndValidate(v17)
  1303. val a18 = field18.unbindAndValidate(v18)
  1304. val a19 = field19.unbindAndValidate(v19)
  1305. val a20 = field20.unbindAndValidate(v20)
  1306. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1 ++ a17._1 ++ a18._1 ++ a19._1 ++ a20._1) ->
  1307. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2 ++ a17._2 ++ a18._2 ++ a19._2 ++ a20._2)
  1308. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  1309. }
  1310. def withPrefix(prefix: String): ObjectMapping20[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20] = addPrefix(prefix).map(newKey =>
  1311. new ObjectMapping20(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, newKey, constraints)
  1312. ).getOrElse(this)
  1313. def verifying(addConstraints: Constraint[R]*): ObjectMapping20[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20] = {
  1314. new ObjectMapping20(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, key, constraints ++ addConstraints.toSeq)
  1315. }
  1316. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings ++ field17.mappings ++ field18.mappings ++ field19.mappings ++ field20.mappings
  1317. }
  1318. class ObjectMapping21[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21](apply: Function21[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), f17: (String, Mapping[A17]), f18: (String, Mapping[A18]), f19: (String, Mapping[A19]), f20: (String, Mapping[A20]), f21: (String, Mapping[A21]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  1319. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  1320. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  1321. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  1322. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  1323. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  1324. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  1325. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  1326. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  1327. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  1328. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  1329. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  1330. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  1331. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  1332. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  1333. val field15 = f15._2.withPrefix(f15._1).withPrefix(key)
  1334. val field16 = f16._2.withPrefix(f16._1).withPrefix(key)
  1335. val field17 = f17._2.withPrefix(f17._1).withPrefix(key)
  1336. val field18 = f18._2.withPrefix(f18._1).withPrefix(key)
  1337. val field19 = f19._2.withPrefix(f19._1).withPrefix(key)
  1338. val field20 = f20._2.withPrefix(f20._1).withPrefix(key)
  1339. val field21 = f21._2.withPrefix(f21._1).withPrefix(key)
  1340. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  1341. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data), field17.bind(data), field18.bind(data), field19.bind(data), field20.bind(data), field21.bind(data)) match {
  1342. case Left(errors) => Left(errors)
  1343. case Right(values) => {
  1344. applyConstraints(apply(
  1345. values(0).asInstanceOf[A1],
  1346. values(1).asInstanceOf[A2],
  1347. values(2).asInstanceOf[A3],
  1348. values(3).asInstanceOf[A4],
  1349. values(4).asInstanceOf[A5],
  1350. values(5).asInstanceOf[A6],
  1351. values(6).asInstanceOf[A7],
  1352. values(7).asInstanceOf[A8],
  1353. values(8).asInstanceOf[A9],
  1354. values(9).asInstanceOf[A10],
  1355. values(10).asInstanceOf[A11],
  1356. values(11).asInstanceOf[A12],
  1357. values(12).asInstanceOf[A13],
  1358. values(13).asInstanceOf[A14],
  1359. values(14).asInstanceOf[A15],
  1360. values(15).asInstanceOf[A16],
  1361. values(16).asInstanceOf[A17],
  1362. values(17).asInstanceOf[A18],
  1363. values(18).asInstanceOf[A19],
  1364. values(19).asInstanceOf[A20],
  1365. values(20).asInstanceOf[A21]
  1366. ))
  1367. }
  1368. }
  1369. }
  1370. def unbind(value: R): Map[String, String] = {
  1371. unapply(value).map { fields =>
  1372. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) = fields
  1373. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) ++ field17.unbind(v17) ++ field18.unbind(v18) ++ field19.unbind(v19) ++ field20.unbind(v20) ++ field21.unbind(v21)
  1374. }.getOrElse(Map.empty)
  1375. }
  1376. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  1377. unapply(value).map { fields =>
  1378. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21) = fields
  1379. val a1 = field1.unbindAndValidate(v1)
  1380. val a2 = field2.unbindAndValidate(v2)
  1381. val a3 = field3.unbindAndValidate(v3)
  1382. val a4 = field4.unbindAndValidate(v4)
  1383. val a5 = field5.unbindAndValidate(v5)
  1384. val a6 = field6.unbindAndValidate(v6)
  1385. val a7 = field7.unbindAndValidate(v7)
  1386. val a8 = field8.unbindAndValidate(v8)
  1387. val a9 = field9.unbindAndValidate(v9)
  1388. val a10 = field10.unbindAndValidate(v10)
  1389. val a11 = field11.unbindAndValidate(v11)
  1390. val a12 = field12.unbindAndValidate(v12)
  1391. val a13 = field13.unbindAndValidate(v13)
  1392. val a14 = field14.unbindAndValidate(v14)
  1393. val a15 = field15.unbindAndValidate(v15)
  1394. val a16 = field16.unbindAndValidate(v16)
  1395. val a17 = field17.unbindAndValidate(v17)
  1396. val a18 = field18.unbindAndValidate(v18)
  1397. val a19 = field19.unbindAndValidate(v19)
  1398. val a20 = field20.unbindAndValidate(v20)
  1399. val a21 = field21.unbindAndValidate(v21)
  1400. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1 ++ a17._1 ++ a18._1 ++ a19._1 ++ a20._1 ++ a21._1) ->
  1401. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2 ++ a17._2 ++ a18._2 ++ a19._2 ++ a20._2 ++ a21._2)
  1402. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  1403. }
  1404. def withPrefix(prefix: String): ObjectMapping21[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21] = addPrefix(prefix).map(newKey =>
  1405. new ObjectMapping21(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, newKey, constraints)
  1406. ).getOrElse(this)
  1407. def verifying(addConstraints: Constraint[R]*): ObjectMapping21[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21] = {
  1408. new ObjectMapping21(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, key, constraints ++ addConstraints.toSeq)
  1409. }
  1410. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings ++ field17.mappings ++ field18.mappings ++ field19.mappings ++ field20.mappings ++ field21.mappings
  1411. }
  1412. class ObjectMapping22[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22](apply: Function22[A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22, R], unapply: Function1[R, Option[(A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22)]], f1: (String, Mapping[A1]), f2: (String, Mapping[A2]), f3: (String, Mapping[A3]), f4: (String, Mapping[A4]), f5: (String, Mapping[A5]), f6: (String, Mapping[A6]), f7: (String, Mapping[A7]), f8: (String, Mapping[A8]), f9: (String, Mapping[A9]), f10: (String, Mapping[A10]), f11: (String, Mapping[A11]), f12: (String, Mapping[A12]), f13: (String, Mapping[A13]), f14: (String, Mapping[A14]), f15: (String, Mapping[A15]), f16: (String, Mapping[A16]), f17: (String, Mapping[A17]), f18: (String, Mapping[A18]), f19: (String, Mapping[A19]), f20: (String, Mapping[A20]), f21: (String, Mapping[A21]), f22: (String, Mapping[A22]), val key: String = "", val constraints: Seq[Constraint[R]] = Nil) extends Mapping[R] with ObjectMapping {
  1413. val field1 = f1._2.withPrefix(f1._1).withPrefix(key)
  1414. val field2 = f2._2.withPrefix(f2._1).withPrefix(key)
  1415. val field3 = f3._2.withPrefix(f3._1).withPrefix(key)
  1416. val field4 = f4._2.withPrefix(f4._1).withPrefix(key)
  1417. val field5 = f5._2.withPrefix(f5._1).withPrefix(key)
  1418. val field6 = f6._2.withPrefix(f6._1).withPrefix(key)
  1419. val field7 = f7._2.withPrefix(f7._1).withPrefix(key)
  1420. val field8 = f8._2.withPrefix(f8._1).withPrefix(key)
  1421. val field9 = f9._2.withPrefix(f9._1).withPrefix(key)
  1422. val field10 = f10._2.withPrefix(f10._1).withPrefix(key)
  1423. val field11 = f11._2.withPrefix(f11._1).withPrefix(key)
  1424. val field12 = f12._2.withPrefix(f12._1).withPrefix(key)
  1425. val field13 = f13._2.withPrefix(f13._1).withPrefix(key)
  1426. val field14 = f14._2.withPrefix(f14._1).withPrefix(key)
  1427. val field15 = f15._2.withPrefix(f15._1).withPrefix(key)
  1428. val field16 = f16._2.withPrefix(f16._1).withPrefix(key)
  1429. val field17 = f17._2.withPrefix(f17._1).withPrefix(key)
  1430. val field18 = f18._2.withPrefix(f18._1).withPrefix(key)
  1431. val field19 = f19._2.withPrefix(f19._1).withPrefix(key)
  1432. val field20 = f20._2.withPrefix(f20._1).withPrefix(key)
  1433. val field21 = f21._2.withPrefix(f21._1).withPrefix(key)
  1434. val field22 = f22._2.withPrefix(f22._1).withPrefix(key)
  1435. def bind(data: Map[String, String]): Either[Seq[FormError], R] = {
  1436. merge(field1.bind(data), field2.bind(data), field3.bind(data), field4.bind(data), field5.bind(data), field6.bind(data), field7.bind(data), field8.bind(data), field9.bind(data), field10.bind(data), field11.bind(data), field12.bind(data), field13.bind(data), field14.bind(data), field15.bind(data), field16.bind(data), field17.bind(data), field18.bind(data), field19.bind(data), field20.bind(data), field21.bind(data), field22.bind(data)) match {
  1437. case Left(errors) => Left(errors)
  1438. case Right(values) => {
  1439. applyConstraints(apply(
  1440. values(0).asInstanceOf[A1],
  1441. values(1).asInstanceOf[A2],
  1442. values(2).asInstanceOf[A3],
  1443. values(3).asInstanceOf[A4],
  1444. values(4).asInstanceOf[A5],
  1445. values(5).asInstanceOf[A6],
  1446. values(6).asInstanceOf[A7],
  1447. values(7).asInstanceOf[A8],
  1448. values(8).asInstanceOf[A9],
  1449. values(9).asInstanceOf[A10],
  1450. values(10).asInstanceOf[A11],
  1451. values(11).asInstanceOf[A12],
  1452. values(12).asInstanceOf[A13],
  1453. values(13).asInstanceOf[A14],
  1454. values(14).asInstanceOf[A15],
  1455. values(15).asInstanceOf[A16],
  1456. values(16).asInstanceOf[A17],
  1457. values(17).asInstanceOf[A18],
  1458. values(18).asInstanceOf[A19],
  1459. values(19).asInstanceOf[A20],
  1460. values(20).asInstanceOf[A21],
  1461. values(21).asInstanceOf[A22]
  1462. ))
  1463. }
  1464. }
  1465. }
  1466. def unbind(value: R): Map[String, String] = {
  1467. unapply(value).map { fields =>
  1468. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) = fields
  1469. field1.unbind(v1) ++ field2.unbind(v2) ++ field3.unbind(v3) ++ field4.unbind(v4) ++ field5.unbind(v5) ++ field6.unbind(v6) ++ field7.unbind(v7) ++ field8.unbind(v8) ++ field9.unbind(v9) ++ field10.unbind(v10) ++ field11.unbind(v11) ++ field12.unbind(v12) ++ field13.unbind(v13) ++ field14.unbind(v14) ++ field15.unbind(v15) ++ field16.unbind(v16) ++ field17.unbind(v17) ++ field18.unbind(v18) ++ field19.unbind(v19) ++ field20.unbind(v20) ++ field21.unbind(v21) ++ field22.unbind(v22)
  1470. }.getOrElse(Map.empty)
  1471. }
  1472. def unbindAndValidate(value: R): (Map[String, String], Seq[FormError]) = {
  1473. unapply(value).map { fields =>
  1474. val (v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, v11, v12, v13, v14, v15, v16, v17, v18, v19, v20, v21, v22) = fields
  1475. val a1 = field1.unbindAndValidate(v1)
  1476. val a2 = field2.unbindAndValidate(v2)
  1477. val a3 = field3.unbindAndValidate(v3)
  1478. val a4 = field4.unbindAndValidate(v4)
  1479. val a5 = field5.unbindAndValidate(v5)
  1480. val a6 = field6.unbindAndValidate(v6)
  1481. val a7 = field7.unbindAndValidate(v7)
  1482. val a8 = field8.unbindAndValidate(v8)
  1483. val a9 = field9.unbindAndValidate(v9)
  1484. val a10 = field10.unbindAndValidate(v10)
  1485. val a11 = field11.unbindAndValidate(v11)
  1486. val a12 = field12.unbindAndValidate(v12)
  1487. val a13 = field13.unbindAndValidate(v13)
  1488. val a14 = field14.unbindAndValidate(v14)
  1489. val a15 = field15.unbindAndValidate(v15)
  1490. val a16 = field16.unbindAndValidate(v16)
  1491. val a17 = field17.unbindAndValidate(v17)
  1492. val a18 = field18.unbindAndValidate(v18)
  1493. val a19 = field19.unbindAndValidate(v19)
  1494. val a20 = field20.unbindAndValidate(v20)
  1495. val a21 = field21.unbindAndValidate(v21)
  1496. val a22 = field22.unbindAndValidate(v22)
  1497. (a1._1 ++ a2._1 ++ a3._1 ++ a4._1 ++ a5._1 ++ a6._1 ++ a7._1 ++ a8._1 ++ a9._1 ++ a10._1 ++ a11._1 ++ a12._1 ++ a13._1 ++ a14._1 ++ a15._1 ++ a16._1 ++ a17._1 ++ a18._1 ++ a19._1 ++ a20._1 ++ a21._1 ++ a22._1) ->
  1498. (a1._2 ++ a2._2 ++ a3._2 ++ a4._2 ++ a5._2 ++ a6._2 ++ a7._2 ++ a8._2 ++ a9._2 ++ a10._2 ++ a11._2 ++ a12._2 ++ a13._2 ++ a14._2 ++ a15._2 ++ a16._2 ++ a17._2 ++ a18._2 ++ a19._2 ++ a20._2 ++ a21._2 ++ a22._2)
  1499. }.getOrElse(Map.empty[String, String] -> Seq(FormError(key, "unbind.failed")))
  1500. }
  1501. def withPrefix(prefix: String): ObjectMapping22[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22] = addPrefix(prefix).map(newKey =>
  1502. new ObjectMapping22(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, newKey, constraints)
  1503. ).getOrElse(this)
  1504. def verifying(addConstraints: Constraint[R]*): ObjectMapping22[R, A1, A2, A3, A4, A5, A6, A7, A8, A9, A10, A11, A12, A13, A14, A15, A16, A17, A18, A19, A20, A21, A22] = {
  1505. new ObjectMapping22(apply, unapply, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15, f16, f17, f18, f19, f20, f21, f22, key, constraints ++ addConstraints.toSeq)
  1506. }
  1507. val mappings = Seq(this) ++ field1.mappings ++ field2.mappings ++ field3.mappings ++ field4.mappings ++ field5.mappings ++ field6.mappings ++ field7.mappings ++ field8.mappings ++ field9.mappings ++ field10.mappings ++ field11.mappings ++ field12.mappings ++ field13.mappings ++ field14.mappings ++ field15.mappings ++ field16.mappings ++ field17.mappings ++ field18.mappings ++ field19.mappings ++ field20.mappings ++ field21.mappings ++ field22.mappings
  1508. }