/* Ċ Ġ* ĠCopyright Ġ 2 0 2 2 ĠExp edia , ĠInc Ċ Ġ* Ċ Ġ* Ġ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 Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// 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 Ġcom . exp edi ag roup . graphql . server . spring . subscriptions Ċ Ċ import Ġcom . exp edi ag roup . graphql . generator . execution . GraphQL Context Ċ import Ġorg . springframework . web . reactive . socket . WebSocket Session Ċ Ċ /** Ċ Ġ* ĠImplementation Ġof ĠApollo ĠSubscription ĠServer ĠLifecycle ĠEvents Ċ Ġ* Ġhttps :// www . ap ol log raph ql . com / docs / graphql - subscriptions / lifecycle - events / Ċ Ġ*/ Ċ interface ĠApollo Subscription Hooks Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllows Ġvalidation Ġof Ġconnection Params Ġprior Ġto Ġstarting Ġthe Ġconnection . ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġreject Ġthe Ġconnection Ġby Ġthrowing Ġan Ġexception . ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġneed Ġto Ġforward Ġstate Ġto Ġexecution , Ġupdate Ġand Ġreturn Ġthe Ġ[ GraphQL Context ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated ( message Ġ= Ġ" The Ġgeneric Ġcontext Ġobject Ġis Ġdeprecated Ġin Ġfavor Ġof Ġthe Ġcontext Ġmap ", ĠReplace With (" on Connect WithContext ")) ĊĠĠĠ Ġfun Ġon Connect ( ĊĠĠĠĠĠĠĠ Ġconnection Params : ĠMap < String , ĠString >, ĊĠĠĠĠĠĠĠ Ġsession : ĠWebSocket Session , ĊĠĠĠĠĠĠĠ Ġgraph QL Context : ĠGraphQL Context ? ĊĠĠĠ Ġ): ĠGraphQL Context ? Ġ= Ġgraph QL Context ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAllows Ġvalidation Ġof Ġconnection Params Ġprior Ġto Ġstarting Ġthe Ġconnection . ĊĠĠĠĠ Ġ* ĠYou Ġcan Ġreject Ġthe Ġconnection Ġby Ġthrowing Ġan Ġexception . ĊĠĠĠĠ Ġ* ĠIf Ġyou Ġneed Ġto Ġforward Ġstate Ġto Ġexecution , Ġupdate Ġand Ġreturn Ġthe Ġcontext Ġmap . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Connect WithContext ( ĊĠĠĠĠĠĠĠ Ġconnection Params : ĠMap < String , ĠString >, ĊĠĠĠĠĠĠĠ Ġsession : ĠWebSocket Session , ĊĠĠĠĠĠĠĠ Ġgraph QL Context : ĠMap < *, ĠAny > ĊĠĠĠ Ġ): ĠMap < *, ĠAny > Ġ= Ġgraph QL Context ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġclient Ġexecutes Ġa ĠGraphQL Ġoperation . ĊĠĠĠĠ Ġ* ĠThe Ġcontext Ġcan Ġnot Ġbe Ġupdated Ġhere , Ġit Ġis Ġread Ġonly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Deprecated (" The Ġgeneric Ġcontext Ġobject Ġis Ġdeprecated Ġin Ġfavor Ġof Ġthe Ġcontext Ġmap ", Ġreplace With Ġ= ĠReplace With (" on Operation WithContext ")) ĊĠĠĠ Ġfun Ġon Operation ( ĊĠĠĠĠĠĠĠ Ġoperation Message : ĠSubscription Operation Message , ĊĠĠĠĠĠĠĠ Ġsession : ĠWebSocket Session , ĊĠĠĠĠĠĠĠ Ġgraph QL Context : ĠGraphQL Context ? ĊĠĠĠ Ġ): ĠUnit Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġclient Ġexecutes Ġa ĠGraphQL Ġoperation . ĊĠĠĠĠ Ġ* ĠThe Ġcontext Ġcan Ġnot Ġbe Ġupdated Ġhere , Ġit Ġis Ġread Ġonly . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Operation WithContext ( ĊĠĠĠĠĠĠĠ Ġoperation Message : ĠSubscription Operation Message , ĊĠĠĠĠĠĠĠ Ġsession : ĠWebSocket Session , ĊĠĠĠĠĠĠĠ Ġgraph QL Context : ĠMap < *, ĠAny > ĊĠĠĠ Ġ): ĠUnit Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġclient 's Ġun sub scri bes ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Operation Complete ( session : ĠWebSocket Session ): ĠUnit Ġ= ĠUnit ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCalled Ġwhen Ġthe Ġclient Ġdisconnect s ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Disconnect ( session : ĠWebSocket Session ): ĠUnit Ġ= ĠUnit Ċ } Ċ Ċ /** Ċ Ġ* ĠDefault Ġimplementation Ġof ĠApollo ĠSubscription ĠLifecycle ĠEvents . Ċ Ġ*/ Ċ open Ġclass ĠSimple Subscription Hooks Ġ: ĠApollo Subscription Hooks Ċ