/* Ċ Ġ* ĠCopyright Ġ 2 0 1 8 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* Ġ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 . google . api . kotlin . util Ċ Ċ import Ġcom . google . api . kotlin . Generator Context Ċ import Ġcom . google . api . kotlin . config . Long Running Response Ċ import Ġcom . google . api . kotlin . config . Paged Response Ċ import Ġcom . google . api . kotlin . config . as Property Path Ċ import Ġcom . google . protobuf . Descriptor Protos Ċ import Ġcom . squareup . kotlin po et . ClassName Ċ Ċ internal Ġobject ĠResponse Types Ġ{ ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġreal Ġresponse Ġtype Ġfor Ġan Ġlong Ġrunning Ġoperation Ġ*/ ĊĠĠĠ Ġfun Ġget Long Running ResponseType ( ĊĠĠĠĠĠĠĠ Ġctx : ĠGenerator Context , ĊĠĠĠĠĠĠĠ Ġmethod : ĠDescriptor Protos . MethodDescriptor Proto , ĊĠĠĠĠĠĠĠ Ġlong Running Response : ĠLong Running Response ? Ġ= Ġnull ĊĠĠĠ Ġ): ĠClass Name Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġuse Ġexplicit Ġsettings Ġif Ġthey Ġare Ġprovided ĊĠĠĠĠĠĠĠ Ġif Ġ( long Running Response Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġctx . type Map . get Kotlin Type ( long Running Response . response Type ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġcontinue Ġto Ġuse Ġthis Ġfallback Ġmethod ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġmethod . input Type . replace (" Request \\ z ". to Regex (), Ġ" Response ") ĊĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġmethod . input Type ) Ġthrow ĠIllegalStateException (" Unable Ġto Ġdetermine ĠOperation Ġresponse Ġtype ") ĊĠĠĠĠĠĠĠ Ġreturn Ġctx . type Map . get Kotlin Type ( name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠGet Ġthe Ġtype Ġof Ġelement Ġin Ġa Ġpage d Ġresult Ġlist Ġ*/ ĊĠĠĠ Ġfun Ġget Response List ElementType ( ĊĠĠĠĠĠĠĠ Ġctx : ĠGenerator Context , ĊĠĠĠĠĠĠĠ Ġmethod : ĠDescriptor Protos . MethodDescriptor Proto , ĊĠĠĠĠĠĠĠ Ġpaging : ĠP aged Response ĊĠĠĠ Ġ): ĠClass Name Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġoutput Type Ġ= Ġctx . type Map . get Proto TypeDescriptor ( method . output Type ) ĊĠĠĠĠĠĠĠ Ġval Ġinfo Ġ= Ġget Proto Field Info For Path ( ctx , Ġpaging . response List . as Property Path (), Ġoutput Type ) ĊĠĠĠĠĠĠĠ Ġreturn Ġinfo . field . as ClassName ( ctx . type Map ) ĊĠĠĠ Ġ} Ċ }