/** Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠRo yal ĠBank Ġof ĠS co tl and Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġio . blue bank . bra id . cord a . swagger . v 3 Ċ Ċ import Ġcom . fasterxml . jackson . databind . Java Type Ċ import Ġio . blue bank . bra id . cord a . rest . docs . B raid Swagger Error Ċ import Ġio . netty . buffer . Byte Buf Ċ import Ġio . swagger . v 3 . core . converter . Annotated Type Ċ import Ġio . swagger . v 3 . core . converter . Model Converter Ċ import Ġio . swagger . v 3 . core . util . Json Ċ import Ġio . swagger . v 3 . o as . models . media .* Ċ import Ġio . vertx . core . buffer . Buffer Ċ import Ġnet . cord a . core . contracts . Amount Ċ import Ġnet . cord a . core . contracts . Iss ued Ċ import Ġnet . cord a . core . contracts . Party And Reference Ċ import Ġnet . cord a . core . crypto . Secure Hash Ċ import Ġnet . cord a . core . identity . C ord a X 5 0 0 Name Ċ import Ġnet . cord a . core . utilities . logger For Ċ import Ġjava . lang . reflect . Type Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . security . PublicKey Ċ import Ġjava . security . cert . Cert Path Ċ import Ġjava . security . cert . X 5 0 9 Certificate Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠFrom Ġhttps :// github . com / swagger - api / swagger - core / issues / 1 1 6 7 Ċ Ġ* Ċ Ġ* Ġto Ġbe Ġused Ġwhen Ġcalling ĠB raid C ord a Jack son Init . init () Ċ Ġ* Ċ Ġ*/ Ċ class ĠCustom Model Converter V 3 Ġ: ĠModel Converter Ġ{ ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġval Ġlog Ġ= Ġlogger For < Custom Model Converter V 3 >() ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġresolve ( ĊĠĠĠ Ġtype : ĠAnnot ated Type , ĊĠĠĠ Ġcontext : Ġio . swagger . v 3 . core . converter . Model Converter Context , ĊĠĠĠ Ġchain : ĠMutable Iterator < Model Converter >? ĊĠ Ġ): ĠSchema < *> ? Ġ{ ĊĠĠĠ Ġval Ġjson Type Ġ= ĠJson . mapper (). construct Type ( type . type ) ĊĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠ Ġwhen Ġ( json Type ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnull Ġ-> Ġchain ?. next ()?. resolve ( type , Ġcontext , Ġchain ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġclazz Ġ= Ġjson Type . raw Class ĊĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclazz . is Binary () Ġ-> ĠBinary Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPublicKey :: class . java . isAssignableFrom ( clazz ) Ġ-> ĠpublicKey Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠClass :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġclass Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSecure Hash :: class . java . isAssignableFrom ( clazz ) Ġ|| ĠSecure Hash . SHA 2 5 6 :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġsecure Hash Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠC ord a X 5 0 0 Name :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġc ord a X 5 0 0 Name Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠX 5 0 9 Certificate :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġx 5 0 9 Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCert Path :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġcert Path Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠCurrency :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġcurrency Schema () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAmount :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġge Amount Schema ( json Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIss ued :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġget Iss ued Schema ( context , Ġjson Type ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠThrowable :: class . java . isAssignableFrom ( clazz ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . type Ġ= ĠB raid Swagger Error :: class . java ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchain ?. next ()?. resolve ( type , Ġcontext , Ġchain ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġchain ?. next ()?. resolve ( type , Ġcontext , Ġchain ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠ Ġlog . error (" failed Ġto Ġparse Ġor Ġresolve Ġtype : Ġ${ type . type }") ĊĠĠĠĠĠ Ġthrow Ġe ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠType . is Binary (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠ ĠBuffer :: class . java , ĊĠĠĠĠĠ ĠByteArray :: class . java , ĊĠĠĠĠĠ ĠByteBuffer :: class . java , ĊĠĠĠĠĠ ĠByte Buf :: class . java Ġ-> Ġtrue ĊĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġge Amount Schema ( json Type : ĠJava Type ): ĠSchema < *> Ġ{ ĊĠĠĠ Ġ// ĠString Ġand ĠCurrency Ġget Ġcreated Ġas Ġtheir Ġown Ġtypes ĊĠĠĠ Ġval Ġbound Type Ġ= Ġjson Type . bindings . get Bound Type ( 0 ) ĊĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠ Ġbound Type ?. raw Class Ġ== ĠCurrency :: class . java Ġ-> Ġamount Currency Schema () ĊĠĠĠĠĠ Ġelse Ġ-> Ġgeneral Amount Schema () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Iss ued Schema ( ĊĠĠĠ Ġcontext : Ġio . swagger . v 3 . core . converter . Model Converter Context , ĊĠĠĠ Ġjson Type : ĠJava Type ĊĠ Ġ): ĠSchema < *> Ġ{ ĊĠĠĠ Ġval Ġbound Type Ġ= Ġjson Type . bindings . get Bound Type ( 0 ) ĊĠĠĠ Ġreturn Ġif Ġ( bound Type Ġ!= Ġnull Ġ&& Ġ( bound Type . raw Class Ġ== ĠCurrency :: class . java Ġ|| Ġbound Type . raw Class Ġ== ĠString :: class . java )) Ġ{ ĊĠĠĠĠĠ ĠObject Schema () ĊĠĠĠĠĠĠĠ Ġ. name (" Iss ued Currency ") ĊĠĠĠĠĠĠĠ Ġ. add Properties (" issuer ", Ġcontext . resolve ( Annotated Type ( Party And Reference :: class . java ))) ĊĠĠĠĠĠĠĠ Ġ. add Properties (" product ", Ġcontext . resolve ( Annotated Type ( bound Type ))) ĊĠĠĠĠĠĠĠ Ġ. add Required Item (" issuer ") ĊĠĠĠĠĠĠĠ Ġ. add Required Item (" product ") ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠObject Schema () ĊĠĠĠĠĠĠĠ Ġ. name (" Iss ued ") ĊĠĠĠĠĠĠĠ Ġ. add Properties (" issuer ", Ġcontext . resolve ( Annotated Type ( Party And Reference :: class . java ))) ĊĠĠĠĠĠĠĠ Ġ. add Properties (" product ", Ġcontext . resolve ( Annotated Type ( bound Type ))) ĊĠĠĠĠĠĠĠ Ġ. add Properties ("_ product Type ", ĠString Schema (). example (" java . util . Currency ")) ĊĠĠĠĠĠĠĠ Ġ. add Required Item (" issuer ") ĊĠĠĠĠĠĠĠ Ġ. add Required Item (" product ") ĊĠĠĠĠĠĠĠ Ġ. add Required Item ("_ product Type ") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠpublicKey Schema () Ġ= ĠString Schema () ĊĠĠĠ Ġ. example (" Gf Hq 2 t T Vk 9 z 4 e X gy Uu of m R 1 6 H 6 j 7 sr Xt 8 BC y id K dr ZL 5 JE w Fq Hg DS ui in b TE ") ĊĠĠĠ Ġ. description (" Base Ġ 5 8 ĠEn coded ĠPublic ĠKey ") ĊĊĠ Ġprivate Ġfun Ġclass Schema () Ġ= ĠString Schema () ĊĠĠĠ Ġ. example (" java . lang . Object ") ĊĠĠĠ Ġ. description (" Java Ġclass Ġname ") ĊĊĠ Ġprivate Ġfun Ġsecure Hash Schema () Ġ= ĠString Schema () ĊĠĠĠ Ġ. example (" Gf Hq 2 t T Vk 9 z 4 e X gy Uu of m R 1 6 H 6 j 7 sr Xt 8 BC y id K dr ZL 5 JE w Fq Hg DS ui in b TE ") ĊĠĠĠ Ġ. description (" Base Ġ 5 8 ĠEn coded ĠSecure ĠHash ") ĊĊĠ Ġprivate Ġfun Ġc ord a X 5 0 0 Name Schema () Ġ= ĠString Schema () ĊĠĠĠ Ġ. example (" O = Bank ĠA , ĠL = L ondon , ĠC = GB ") ĊĠĠĠ Ġ. description (" C ord a X 5 0 0 Name Ġencoded ĠParty ") ĊĊĠ Ġprivate Ġfun Ġx 5 0 9 Schema () Ġ= ĠByteArray Schema () ĊĠĠĠ Ġ. description (" X 5 0 9 Ġencoded Ġcertificate ") ĊĊĠ Ġprivate Ġfun Ġcert Path Schema () Ġ= ĠByteArray Schema () ĊĠĠĠ Ġ. description (" X 5 0 9 Ġencoded Ġcertificate ĠPK I Ġpath ") ĊĊĠ Ġprivate Ġfun Ġopaque Bytes Schema () Ġ= ĠString Schema () ĊĠĠĠ Ġ. example (" 7 3 6 F 6 D 6 5 4 2 7 9 7 4 6 5 7 3 ") ĊĠĠĠ Ġ. description (" Hex Ġencoded ĠByte ĠArray ") ĊĊĠ Ġprivate Ġfun Ġcurrency Schema () Ġ= ĠString Schema () ĊĠĠĠ Ġ. example (" GBP ") ĊĠĠĠ Ġ. description (" 3 Ġdigit ĠISO Ġ 4 2 1 7 Ġcode Ġof Ġthe Ġcurrency ") ĊĊĠ Ġprivate Ġfun Ġamount Currency Schema () Ġ= ĠObject Schema () ĊĠĠĠ Ġ. name (" Amount Currency ") ĊĠĠĠ Ġ. add Properties ( ĊĠĠĠĠĠ Ġ" quantity ", ĠInteger Schema () ĊĠĠĠĠĠ Ġ. example ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. description (" total Ġamount Ġin Ġminor Ġunits ") ĊĠĠĠ Ġ) ĊĠĠĠ Ġ. add Properties (" display Token Size ", ĠNumber Schema (). example (" 0 . 0 1 ")) ĊĠĠĠ Ġ. add Properties (" token ", ĠString Schema (). example (" GBP ")) ĊĠĠĠ Ġ. add Required Item (" quantity ") ĊĠĠĠ Ġ. add Required Item (" display Token Size ") ĊĠĠĠ Ġ. add Required Item (" token ") ĊĊĠ Ġprivate Ġfun Ġgeneral Amount Schema () Ġ= ĠObject Schema () ĊĠĠĠ Ġ. name (" Amount ") ĊĠĠĠ Ġ. add Properties ( ĊĠĠĠĠĠ Ġ" quantity ", ĠInteger Schema () ĊĠĠĠĠĠ Ġ. example ( 1 0 0 ) ĊĠĠĠĠĠ Ġ. description (" total Ġamount Ġin Ġminor Ġunits ") ĊĠĠĠ Ġ) ĊĠĠĠ Ġ. add Properties (" display Token Size ", ĠNumber Schema (). example (" 0 . 0 1 ")) ĊĠĠĠ Ġ. add Properties (" token ", ĠString Schema (). example (" GBP ")) ĊĠĠĠ Ġ. add Required Item (" quantity ") ĊĠĠĠ Ġ. add Required Item (" display Token Size ") ĊĠĠĠ Ġ. add Required Item (" token ") ĊĠĠĠ Ġ. add Properties ( ĊĠĠĠĠĠ Ġ"_ token Type ", ĠString Schema () ĊĠĠĠĠĠ Ġ. example (" net . cord a . core . contracts . Iss ued ") ĊĠĠĠ Ġ) Ċ Ċ }