/* Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 Ċ Ġ* Ċ Ġ* ĠThe ĠOpen Search ĠContributors Ġrequire Ġcontributions Ġmade Ġto Ċ Ġ* Ġthis Ġfile Ġbe Ġlicensed Ġunder Ġthe ĠApache - 2 . 0 Ġlicense Ġor Ġa Ċ Ġ* Ġcompatible Ġopen Ġsource Ġlicense . Ċ Ġ* Ċ Ġ* ĠMod ifications ĠCopyright ĠOpen Search ĠContributors . ĠSee Ċ Ġ* ĠGitHub Ġhistory Ġfor Ġdetails . Ċ Ġ*/ Ċ Ċ /* Ċ Ġ* ĠĠ ĠCopyright Ġ 2 0 2 0 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* Ċ Ġ* ĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "). Ċ Ġ* ĠĠ ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠ ĠA Ġcopy Ġof Ġthe ĠLicense Ġis Ġlocated Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠ Ġor Ġin Ġthe Ġ" license " Ġfile Ġaccompanying Ġthis Ġfile . ĠThis Ġfile Ġ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 Ġorg . opense arch . alert ing . transport Ċ Ċ import Ġorg . opense arch . Open Search Status Exception Ċ import Ġorg . opense arch . action . ActionListener Ċ import Ġorg . opense arch . action . search . Search Request Ċ import Ġorg . opense arch . action . search . Search Response Ċ import Ġorg . opense arch . action . support . Action Filters Ċ import Ġorg . opense arch . action . support . Handled Transport Action Ċ import Ġorg . opense arch . alert ing . action . Search Email Account Action Ċ import Ġorg . opense arch . alert ing . settings . Destination Settings . Companion . ALLOW _ LIST Ċ import Ġorg . opense arch . alert ing . util . Alert ing Exception Ċ import Ġorg . opense arch . alert ing . util . Destination Type Ċ import Ġorg . opense arch . client . Client Ċ import Ġorg . opense arch . cluster . service . Cluster Service Ċ import Ġorg . opense arch . common . inject . Inject Ċ import Ġorg . opense arch . common . settings . Settings Ċ import Ġorg . opense arch . rest . Rest Status Ċ import Ġorg . opense arch . tasks . Task Ċ import Ġorg . opense arch . transport . Transport Service Ċ Ċ class ĠTransport Search Email Account Action Ġ@ Inject Ġconstructor ( ĊĠĠĠ Ġtransport Service : ĠTransport Service , ĊĠĠĠ Ġval Ġclient : ĠClient , ĊĠĠĠ Ġaction Filters : ĠAction Filters , ĊĠĠĠ Ġval Ġcluster Service : ĠCluster Service , ĊĠĠĠ Ġsettings : ĠSettings Ċ ) Ġ: ĠHand led Transport Action < Search Request , ĠSearch Response >( ĊĠĠĠ ĠSearch Email Account Action . NAME , Ġtransport Service , Ġaction Filters , Ġ:: Search Request Ċ ) Ġ{ ĊĊĠĠĠ Ġ@ Volatile Ġprivate Ġvar Ġallow List Ġ= ĠALLOW _ LIST . get ( settings ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġcluster Service . cluster Settings . add Settings Update Consumer ( ALLOW _ LIST ) Ġ{ Ġallow List Ġ= Ġit Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Execute ( task : ĠTask , Ġsearch Request : ĠSearch Request , Ġaction Listener : ĠActionListener < Search Response >) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! allow List . contains ( Destination Type . EMAIL . value )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Listener . on Failure ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlert ing Exception . wrap ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠOpen Search Status Exception ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" This ĠAPI Ġis Ġblocked Ġsince ĠDestination Ġtype Ġ[ ${ Destination Type . EMAIL }] Ġis Ġnot Ġallowed ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRest Status . FOR BID DEN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġclient . thread Pool (). thread Context . stash Context (). use Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġclient . search ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsearch Request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠActionListener < Search Response > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Response ( response : ĠSearch Response ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Listener . on Response ( response ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Failure ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction Listener . on Failure ( e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ