package Ġno . nav . sy fo . hel se person ell Ċ Ċ import Ġno . nav . sy fo . datatype Factory Ċ import Ġno . nav . sy fo . hel se person ell . redis . J edis Be handler Model Ċ import Ġno . nav . sy fo . log Ċ import Ġno . nav . sy fo . ws . create Port Ċ import Ġno . nh n . schemas . reg . h prv 2 . IH PR 2 Service Ċ import Ġno . nh n . schemas . reg . h prv 2 . IH PR 2 Service H ent Person Generic Fault Fault Fault Message Ċ import Ġno . nh n . schemas . reg . h prv 2 . IH PR 2 Service H ent Person Med Person nummer Generic Fault Fault Fault Message Ċ import Ġno . nh n . schemas . reg . h prv 2 . Person Ċ import Ġorg . apache . c xf . binding . soap . Soap Message Ċ import Ġorg . apache . c xf . binding . soap . interceptor . Abstract Soap Interceptor Ċ import Ġorg . apache . c xf . message . Message Ċ import Ġorg . apache . c xf . phase . Phase Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Offset DateTime Ċ import Ġjava . time . Zone Offset Ċ import Ġjava . util . G regorian Calendar Ċ import Ġjavax . xml . ws . soap . SOAP Fault Exception Ċ Ċ class ĠH else person ell Service ( ĊĠĠĠ Ġprivate Ġval Ġhel se person ell V 1 : ĠI H PR 2 Service , ĊĠĠĠ Ġprivate Ġval Ġhel se person ell Redis : ĠH else person ell Redis Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠCACHE _ TIME _ HOUR S Ġ= Ġ 1 L ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval ĠPER SON NR _ IK KE _ FUN NET Ġ= Ġ" ArgumentException : ĠPerson nummer Ġik ke Ġfun net " ĊĠĠĠ Ġprivate Ġval ĠH PR _ NR _ IK KE _ FUN NET Ġ= Ġ" ArgumentException : ĠH PR - nummer Ġik ke Ġfun net " ĊĠĠĠ Ġprivate Ġval ĠH PR _ NR _ IK KE _ OP PG IT T Ġ= Ġ" ArgumentException : ĠH PR - nummer ĠmÃ¥ Ġopp gis " ĊĊĠĠĠ Ġfun Ġfin n Be handler ( be handlers Person nummer : ĠString ): ĠBe handler ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfrom Redis Ġ= Ġhel se person ell Redis . get From Fn r ( be handlers Person nummer ) ĊĠĠĠĠĠĠĠ Ġif Ġ( from Redis Ġ!= Ġnull Ġ&& Ġshould Use Redis Model ( from Redis )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfrom Redis . be handler ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhel se person ell V 1 . h ent Person Med Person nummer ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe handlers Person nummer , Ġdatatype Factory . new XML G regorian Calendar ( G regorian Calendar ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). let Ġ{ Ġws 2 Be handler ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" H ent et Ġbe handler ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhel se person ell Redis . save ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠI H PR 2 Service H ent Person Med Person nummer Generic Fault Fault Fault Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( e . message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPER SON NR _ IK KE _ FUN NET Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Hel sen ett Ġgir Ġfe il meld ing : Ġ{}", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Hel sen ett Ġgir Ġfe il meld ing : Ġ{}", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn J edis OrThrow ( from Redis , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSOAP Fault Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Hel sen ett Ġgir Ġfe il meld ing : Ġ{}", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreturn J edis OrThrow ( from Redis , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġfin n Be handler F ra H pr Num mer ( h pr Num mer : ĠString ): ĠBe handler ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfrom Redis Ġ= Ġhel se person ell Redis . get From H pr ( h pr Num mer ) ĊĠĠĠĠĠĠĠ Ġif Ġ( from Redis Ġ!= Ġnull Ġ&& Ġshould Use Redis Model ( from Redis )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfrom Redis . be handler ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġhel se person ell V 1 . h ent Person ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . valueOf ( h pr Num mer ), Ġdatatype Factory . new XML G regorian Calendar ( G regorian Calendar ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). let Ġ{ Ġws 2 Be handler ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . info (" H ent et Ġbe handler Ġfor ĠH PR - nummer ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhel se person ell Redis . save ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠI H PR 2 Service H ent Person Generic Fault Fault Fault Message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbe handler NotFound ( e . message ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . warn (" Hel sen ett Ġgir Ġfe il meld ing Ġ( H PR - nummer ): Ġ{}", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Hel sen ett Ġgir Ġfe il meld ing Ġ( H PR - nummer ): Ġ{}", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn J edis OrThrow ( from Redis , Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠSOAP Fault Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlog . error (" Hel sen ett Ġgir Ġfe il meld ing Ġ( H PR - nummer ): Ġ{}", Ġe . message ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreturn J edis OrThrow ( from Redis , Ġe ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġreturn J edis OrThrow ( ĊĠĠĠĠĠĠĠ Ġfrom Redis : ĠJ edis Be handler Model ?, ĊĠĠĠĠĠĠĠ Ġe : ĠException ĊĠĠĠ Ġ) Ġ= Ġfrom Redis ?. be handler . let Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . info (" Return ing Ġbe handler Ġfound Ġin ĠRED IS ") ĊĠĠĠĠĠĠĠ Ġit ĊĠĠĠ Ġ} Ġ?: Ġthrow ĠH else person ell Exception ( message Ġ= Ġe . message , Ġcause Ġ= Ġe . cause ) ĊĊĠĠĠ Ġprivate Ġfun Ġshould Use Redis Model ( redis Be handler Model : ĠJ edis Be handler Model ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġredis Be handler Model . timestamp . is After ( Offset DateTime . now ( Zone Offset . UTC ). minus Hours ( CACHE _ TIME _ HOUR S )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbe handler NotFound ( message : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( message ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH PR _ NR _ IK KE _ FUN NET Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ ĠH PR _ NR _ IK KE _ OP PG IT T Ġ-> Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġws 2 Be handler ( person : ĠPerson ): ĠBe handler Ġ= ĊĠĠĠ ĠBe handler ( ĊĠĠĠĠĠĠĠ Ġgod k jen ning er Ġ= Ġperson . god k jen ning er . god k jen ning . map Ġ{ Ġws 2 God k jen ning ( it ) Ġ}, ĊĠĠĠĠĠĠĠ Ġfn r Ġ= Ġperson . nin , ĊĠĠĠĠĠĠĠ Ġh pr Num mer Ġ= Ġperson . h pr Num mer , ĊĠĠĠĠĠĠĠ Ġfor nav n Ġ= Ġperson . for nav n , ĊĠĠĠĠĠĠĠ Ġmel lom nav n Ġ= Ġperson . mel lom nav n , ĊĠĠĠĠĠĠĠ Ġet tern av n Ġ= Ġperson . et tern av n ĊĠĠĠ Ġ) Ċ Ċ fun Ġws 2 God k jen ning ( god k jen ning : Ġno . nh n . schemas . reg . h prv 2 . God k jen ning ): ĠGod k jen ning Ġ= ĊĠĠĠ ĠGod k jen ning ( ĊĠĠĠĠĠĠĠ Ġhel se person ell kategori Ġ= Ġws 2 K ode ( god k jen ning . hel se person ell kategori ), ĊĠĠĠĠĠĠĠ Ġautor is as jon Ġ= Ġws 2 K ode ( god k jen ning . autor is as jon ), ĊĠĠĠĠĠĠĠ Ġtil leg sk omp et an se Ġ= Ġwhen Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgod k jen ning . til leg g sk omp et an ser Ġ!= Ġnull Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgod k jen ning . til leg g sk omp et an ser . til leg g sk omp et an se . isNotEmpty () ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue Ġ-> Ġgod k jen ning . til leg g sk omp et an ser . til leg g sk omp et an se . map Ġ{ Ġws 2 Til leg g sk omp et an se ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) Ċ Ċ fun Ġws 2 K ode ( kode : Ġno . nh n . schemas . reg . common . no . K ode ): ĠK ode Ġ= ĊĠĠĠ ĠK ode ( ĊĠĠĠĠĠĠĠ Ġaktiv Ġ= Ġk ode . is A ktiv , ĊĠĠĠĠĠĠĠ Ġoid Ġ= Ġk ode . oid , ĊĠĠĠĠĠĠĠ Ġver di Ġ= Ġk ode . ver di ĊĠĠĠ Ġ) Ċ Ċ fun Ġws 2 Til leg g sk omp et an se ( til leg sk omp et an se : Ġno . nh n . schemas . reg . h prv 2 . Til leg g sk omp et an se ): ĠT il leg g sk omp et an se Ġ= ĊĠĠĠ ĠT il leg g sk omp et an se ( ĊĠĠĠĠĠĠĠ Ġav sl utt et Status Ġ= Ġtil leg sk omp et an se . av sl utt et Status ?. let Ġ{ Ġws 2 K ode ( til leg sk omp et an se . av sl utt et Status ) Ġ}, ĊĠĠĠĠĠĠĠ Ġe Tag Ġ= Ġtil leg sk omp et an se . e Tag , ĊĠĠĠĠĠĠĠ Ġgy ld ig Ġ= Ġtil leg sk omp et an se . gy ld ig ?. let Ġ{ Ġws 2 Per i ode ( til leg sk omp et an se . gy ld ig ) Ġ}, ĊĠĠĠĠĠĠĠ Ġid Ġ= Ġtil leg sk omp et an se . id , ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġtil leg sk omp et an se . type ?. let Ġ{ Ġws 2 K ode ( til leg sk omp et an se . type ) Ġ} ĊĠĠĠ Ġ) Ċ Ċ fun Ġws 2 Per i ode ( peri ode : Ġno . nh n . schemas . reg . common . no . Per i ode ): ĠPer i ode Ġ= ĊĠĠĠ ĠPer i ode ( ĊĠĠĠĠĠĠĠ Ġf ra Ġ= Ġper i ode . f ra ?. to G regorian Calendar ()?. to Z onedDateTime ()?. with Zone Same Instant ( Zone Offset . UTC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . to LocalDateTime (), ĊĠĠĠĠĠĠĠ Ġtil Ġ= Ġper i ode . til ?. to G regorian Calendar ()?. to Z onedDateTime ()?. with Zone Same Instant ( Zone Offset . UTC ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ? . to LocalDateTime () ĊĠĠĠ Ġ) Ċ Ċ data Ġclass ĠBe handler ( ĊĠĠĠ Ġval Ġgod k jen ning er : ĠList < God k jen ning >, ĊĠĠĠ Ġval Ġfn r : ĠString ?, ĊĠĠĠ Ġval Ġh pr Num mer : ĠInt ?, ĊĠĠĠ Ġval Ġfor nav n : ĠString ?, ĊĠĠĠ Ġval Ġmel lom nav n : ĠString ?, ĊĠĠĠ Ġval Ġet tern av n : ĠString ? Ċ ) Ċ Ċ data Ġclass ĠGod k jen ning ( ĊĠĠĠ Ġval Ġhel se person ell kategori : ĠK ode ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġautor is as jon : ĠK ode ? Ġ= Ġnull , ĊĠĠĠ Ġval Ġtil leg sk omp et an se : ĠList < Til leg g sk omp et an se >? Ġ= Ġnull Ċ ) Ċ Ċ data Ġclass ĠK ode ( ĊĠĠĠ Ġval Ġaktiv : ĠBoolean , ĊĠĠĠ Ġval Ġoid : ĠInt , ĊĠĠĠ Ġval Ġver di : ĠString ? Ċ ) Ċ Ċ data Ġclass ĠT il leg g sk omp et an se ( ĊĠĠĠ Ġval Ġav sl utt et Status : ĠK ode ?, ĊĠĠĠ Ġval Ġe Tag : ĠString ?, ĊĠĠĠ Ġval Ġgy ld ig : ĠPer i ode ?, ĊĠĠĠ Ġval Ġid : ĠInt ?, ĊĠĠĠ Ġval Ġtype : ĠK ode ? Ċ ) Ċ Ċ data Ġclass ĠPer i ode ( ĊĠĠĠ Ġval Ġf ra : ĠLocalDateTime ?, ĊĠĠĠ Ġval Ġtil : ĠLocalDateTime ? Ċ ) Ċ Ċ fun Ġhel se person ell V 1 ( ĊĠĠĠ Ġendpoint Url : ĠString , ĊĠĠĠ Ġservice user Username : ĠString , ĊĠĠĠ Ġservice user Password : ĠString , ĊĠĠĠ Ġsecurity Token Service Url : ĠString Ċ ) Ġ= Ġcreate Port < IH PR 2 Service >( endpoint Url ) Ġ{ ĊĠĠĠ Ġproxy Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠContact Ġsomeone Ġabout Ġthis Ġhack y Ġworkaround ĊĠĠĠĠĠĠĠ Ġ// Ġtalk Ġto ĠH DIR Ġabout ĠH PR Ġabout Ġthey Ġclaim Ġto Ġsend Ġa ĠISO - 8 8 5 9 - 1 Ġbut Ġits Ġreally ĠUTF - 8 Ġpayload ĊĠĠĠĠĠĠĠ Ġval Ġinterceptor Ġ= Ġobject Ġ: ĠAbstract Soap Interceptor ( Phase . RECEIVE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġhandle Message ( message : ĠSo ap Message ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( message Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage [ Message . ENCODING ] Ġ= Ġ" utf - 8 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġin Intercept ors . add ( interceptor ) ĊĠĠĠĠĠĠĠ Ġin Fault Intercept ors . add ( interceptor ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġport Ġ{ Ġwith STS ( service user Username , Ġservice user Password , Ġsecurity Token Service Url ) Ġ} Ċ } Ċ