package Ġorg . random cat . ag or abot . util Ċ Ċ import Ġnet . dv 8 tion . j da . api . J DA Ċ import Ġnet . dv 8 tion . j da . api . exceptions . RateLimit ed Exception Ċ import Ġnet . dv 8 tion . j da . api . requests . Rest Action Ċ import Ġjava . util . concurrent . Comp letableFuture Ċ import Ġjava . util . function . Boolean Supplier Ċ import Ġjava . util . function . Consumer Ċ Ċ /** Ċ Ġ* ĠA Ġ[ Rest Action ] Ġthat Ġalways Ġreturns Ġthe Ġsame Ġvalue , Ġprovided Ġin Ġthe Ġconstructor . Ċ Ġ* Ċ Ġ* ĠSemantic ally Ġequivalent Ġto Ġ[ net . dv 8 tion . j da . internal . requests . Completed Rest Action ], Ġwhich Ġis Ġnot Ġsupported . Ċ Ġ*/ Ċ class ĠCompleted Rest Action < T > Ġprivate Ġconstructor ( private Ġval Ġj da : ĠJ DA , Ġprivate Ġval Ġstate : ĠState < T >) Ġ: ĠRest Action < T > Ġ{ ĊĠĠĠ Ġprivate Ġsealed Ġclass ĠState < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġqueue ( success : ĠConsumer < in ĠT > ?, Ġfailure : ĠConsumer < in ĠThrowable > ?) ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġcomplete (): ĠT ĊĠĠĠĠĠĠĠ Ġabstract Ġfun Ġsubmit (): ĠCompletableFuture < T > ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠSuccess < T >( private Ġval Ġvalue : ĠT ) Ġ: ĠState < T >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġqueue ( success : ĠConsumer < in ĠT > ?, Ġfailure : ĠConsumer < in ĠThrowable > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( success Ġ!= Ġnull ) Ġsuccess . accept ( value ) Ġelse ĠRest Action . getDefault Success (). accept ( success ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcomplete (): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsubmit (): ĠCompletableFuture < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCompletableFuture . completed Future ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdata Ġclass ĠFailure < T >( private Ġval Ġerror : ĠThrowable ) Ġ: ĠState < T >() Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġqueue ( success : ĠConsumer < in ĠT > ?, Ġfailure : ĠConsumer < in ĠThrowable > ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( failure Ġ!= Ġnull ) Ġfailure . accept ( error ) Ġelse ĠRest Action . getDefault Failure (). accept ( failure ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcomplete (): ĠNothing Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠHave Ġto Ġinter operate Ġwith Ġjava Ġcode , Ġso Ġmust Ġbe Ġcareful Ġwith Ġexception Ġhandling . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThis Ġimplementation Ġis Ġequivalent Ġto Ġthe Ġimplementation Ġin Ġthe Ġcurrent Ġversion Ġof ĠJ DA ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ( as Ġof Ġwriting ). ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( error Ġis ĠRate Limit ed Exception Ġ|| Ġerror Ġis ĠRuntimeException Ġ|| Ġerror Ġis ĠError ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġerror ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġsubmit (): ĠCompletableFuture < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCompletableFuture . failed Future ( error ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġof Success ( j da : ĠJ DA , Ġvalue : ĠT ): ĠCompleted Rest Action < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCompleted Rest Action ( j da , ĠState . Success ( value )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġ< T > Ġof Failure ( j da : ĠJ DA , Ġerror : ĠThrowable ): ĠCompleted Rest Action < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCompleted Rest Action ( j da , ĠState . Failure ( error )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget J DA (): ĠJ DA Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġj da ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset Check ( checks : ĠBoolean Supplier ?): ĠRest Action < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠNothing Ġto Ġdo Ġ- Ġno Ġrequest Ġwill Ġbe Ġsent . ĠSan ction ed Ġby ĠCompleted Rest Action Ġin Ġcurrent ĠJ DA Ġversion . ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġqueue ( success : ĠConsumer < in ĠT > ?, Ġfailure : ĠConsumer < in ĠThrowable > ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstate . queue ( success Ġ= Ġsuccess , Ġfailure Ġ= Ġfailure ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcomplete ( should Queue : ĠBoolean ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstate . complete () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsubmit ( should Queue : ĠBoolean ): ĠCompletableFuture < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġstate . submit () ĊĠĠĠ Ġ} Ċ } Ċ