/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠSam sh in Ċ Ġ* Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof Ġthe ĠSam sh in Ġproject . Ċ Ġ* Ċ Ġ* Ġ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 Ġcom . je anch amp em ont . sam sh in . graphql . error Ċ Ċ import Ġgraphql . ErrorType Ċ import Ġgraphql . Exception While Data Fetching Ċ import Ġgraphql . Graph Q LError Ċ import Ġgraphql . execution . Data Fetcher ExceptionHandler Ċ import Ġgraphql . execution . Data Fetcher ExceptionHandler Parameters Ċ import Ġgraphql . execution . Execution Path Ċ import Ġgraphql . language . Source Location Ċ import Ġorg . springframework . security . access . Access Denied Exception Ċ import Ġorg . springframework . stereotype . Component Ċ Ċ @ Component Ċ class ĠSam sh in GraphQL ExceptionHandler Ġ: ĠData Fetcher ExceptionHandler Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġaccept ( handler Parameters : ĠData Fetcher ExceptionHandler Parameters ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexception Ġ= Ġhandler Parameters . exception ĊĠĠĠĠĠĠĠ Ġval Ġsource Location Ġ= Ġhandler Parameters . field . source Location ĊĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġhandler Parameters . path ĊĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġfilter Exception ( exception , Ġsource Location , Ġpath ) ĊĠĠĠĠĠĠĠ Ġhandler Parameters . executionContext . add Error ( error , Ġhandler Parameters . path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfilter Exception ( exception : ĠThrowable , Ġsource Location : ĠSource Location , Ġpath : ĠExecution Path ) Ġ= Ġwhen Ġ( exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠAccess Denied Exception Ġ-> ĠAccess Denied Error ( source Location ) ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠException While Data Fetching ( path , Ġexception , Ġsource Location ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠAccess Denied Error ( private Ġval Ġlocation : ĠSource Location ) Ġ: ĠGraph Q LError Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠgetMessage () Ġ= Ġ" Access Ġwas Ġdenied Ġ; Ġplease Ġcheck Ġwhether Ġor Ġnot Ġyou Ġare Ġlogged Ġin Ġand Ġyou Ġhave Ġsufficient Ġrights ." ĊĊĠĠĠ Ġoverride Ġfun Ġget Locations () Ġ= Ġmutable ListOf ( location ) ĊĊĠĠĠ Ġoverride Ġfun Ġget ErrorType () Ġ= ĠError Type . Execution Abort ed Ċ }