package Ġgraphql . n adel . engine . transform . query Ċ Ċ import Ġgraphql . Graph ql ErrorException Ċ import Ġgraphql . n adel . Service Ċ import Ġgraphql . n adel . engine . util . query Path Ċ import Ġgraphql . n adel . engine . util . to Graph Q LError Exception Ċ import Ġgraphql . n adel . engine . util . unwrap NonNull Ċ import Ġgraphql . n adel . hooks . Service Execution Hooks Ċ import Ġgraphql . n adel . schema . N adel Directives . dynamic Service Directive Definition Ċ import Ġgraphql . normalized . Executable Normalized Field Ċ import Ġgraphql . schema . GraphQL Interface Type Ċ import Ġgraphql . schema . GraphQL Schema Ċ Ċ internal Ġclass ĠDynamic Service Resolution ( ĊĠĠĠ Ġprivate Ġval Ġengine Schema : ĠGraphQL Schema , ĊĠĠĠ Ġprivate Ġval Ġservice Execution Hooks : ĠService Execution Hooks , ĊĠĠĠ Ġprivate Ġval Ġservices : ĠList < Service >, Ċ ) Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġif Ġthe Ġfield Ġneeds Ġto Ġhave Ġits Ġservice Ġdynamically Ġresolved ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġneeds Dynamic Service Resolution ( ĊĠĠĠĠĠĠĠ Ġtop Level Field : ĠExec utable Normalized Field , ĊĠĠĠ Ġ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġtop Level Field . getField Definitions ( engine Schema ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . get Applied Directive ( dynamic Service Directive Definition . name ) Ġ!= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. on Each Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequire ( it . type . unwrap NonNull () Ġis ĠGraphQL Interface Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" field Ġannotated Ġwith Ġ${ dynamic Service Directive Definition . name } Ġdirective Ġis Ġexpected Ġto Ġbe Ġof ĠGraphQL Interface Type " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Ġ{ Ġit Ġ!= Ġnull Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRes olves Ġthe Ġservice Ġfor Ġa Ġfield ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġresolve Service For Field ( field : ĠExec utable Normalized Field ): ĠService Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġservice Or Error Ġ= Ġservice Execution Hooks . resolve Service For Field ( services , Ġfield ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠGraph ql ErrorException . new ErrorException () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. message (" Could Ġnot Ġresolve Ġservice Ġfor Ġfield Ġ'${ field . name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. path ( field . query Path . segments ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠĠĠĠĠ Ġ// ĠEither Ġor âĢ¦ Ġbut Ġneeds Ġto Ġbe Ġbetter ĊĠĠĠĠĠĠĠ Ġval Ġerror Ġ= Ġservice Or Error . error ĊĠĠĠĠĠĠĠ Ġif Ġ( error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġerror . to Graph Q LError Exception () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġrequire NotNull ( service Or Error . service ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ