/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠK roto + ĠContributors Ċ Ġ* Ċ Ġ* Ġ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 . github . mar co f errer . k roto plus . proto Ċ Ċ import Ġcom . github . mar co f errer . k roto plus . utils . to Upper Camel Case Ċ import Ġcom . google . api . Client Proto Ċ import Ġcom . google . protobuf . Descriptor Protos Ċ import Ġcom . google . protobuf . Descriptor Protos . Source Code Info . Location Ċ import Ġcom . squareup . kotlin po et . Code Block Ċ import Ġio . grpc . MethodDescriptor Ċ Ċ class ĠProto Method ( ĊĠĠĠ Ġoverride Ġval Ġdescriptor Proto : ĠDescriptor Protos . MethodDescriptor Proto , ĊĠĠĠ Ġval Ġsource Location : ĠLocation , ĊĠĠĠ Ġval Ġproto Service : ĠProto Service Ċ ) Ġ: ĠSchema . Descriptor Wrapper Ġ{ ĊĊĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġdescriptor Proto . name ĊĊĠĠĠ Ġval Ġfunction Name Ġ= Ġdescriptor Proto . name . to Upper Camel Case (). let { ĊĠĠĠĠĠĠĠ Ġif ( descriptor Proto . name . startsWith ("_ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"_ $ it " Ġelse Ġit . de capitalize () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġattached Comments : ĠString Ġ= Ġsource Location . build Attached Comments () ĊĊĠĠĠ Ġval Ġmethod Definition Getter Name Ġ= Ġ" get ${ descriptor Proto . name . to Upper Camel Case ()} Method " ĊĊĠĠĠ Ġval Ġrequest Type : ĠProtoMessage Ġ= Ġrequire NotNull ( proto Service . proto File . schema . proto Types [ descriptor Proto . input Type ] Ġas ? ĠProtoMessage ){ ĊĠĠĠĠĠĠĠ Ġ"${ descriptor Proto . input Type } Ġwas Ġnot Ġfound Ġin Ġschema Ġtype Ġmap , Ġor Ġwas Ġnot Ġor Ġwas Ġnot Ġof Ġtype Ġ' Proto Message '" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġrequest ClassName Ġ= Ġrequest Type . className ĊĊĠĠĠ Ġval Ġresponse Type : ĠProtoMessage Ġ= Ġrequire NotNull ( proto Service . proto File . schema . proto Types [ descriptor Proto . output Type ] Ġas ? ĠProtoMessage ){ ĊĠĠĠĠĠĠĠ Ġ"${ descriptor Proto . output Type } Ġwas Ġnot Ġfound Ġin Ġschema Ġtype Ġmap , Ġor Ġwas Ġnot Ġor Ġwas Ġnot Ġof Ġtype Ġ' Proto Message '" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġresponse ClassName Ġ= Ġresponse Type . className ĊĊĠĠĠ Ġval ĠisEmpty Input Ġget () Ġ= Ġdescriptor Proto . input Type Ġ== Ġ". google . protobuf . Empty " ĊĊĠĠĠ Ġval Ġis NotEmpty Input Ġget () Ġ= Ġ! isEmpty Input ĊĊĠĠĠ Ġval Ġis Unary Ġget () Ġ= Ġ! descriptor Proto . client Streaming Ġ&& Ġ! descriptor Proto . server Streaming ĊĊĠĠĠ Ġval Ġis B idi Ġget () Ġ= Ġdescriptor Proto . client Streaming Ġ&& Ġdescriptor Proto . server Streaming ĊĊĠĠĠ Ġval Ġis Server Stream Ġget () Ġ= Ġ! descriptor Proto . client Streaming Ġ&& Ġdescriptor Proto . server Streaming ĊĊĠĠĠ Ġval Ġis Client Stream Ġget () Ġ= Ġdescriptor Proto . client Streaming Ġ&& Ġ! descriptor Proto . server Streaming ĊĊĠĠĠ Ġval Ġtype : ĠMethod Descriptor . MethodType ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġwhen { ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Unary Ġ-> ĠMethod Descriptor . MethodType . UNARY ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis B idi Ġ-> Ġ ĠMethod Descriptor . MethodType . B IDI _ STREAM ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Server Stream Ġ-> Ġ ĠMethod Descriptor . MethodType . SERVER _ STREAM ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Client Stream Ġ-> Ġ ĠMethod Descriptor . MethodType . CLIENT _ STREAM ING ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalStateException (" Unknown Ġmethod Ġtype ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġmethod Signature Variants : ĠList < List < Descriptor Protos . FieldDescriptor Proto >> Ġ= Ġget Method Signature Variants () Ċ } Ċ Ċ private Ġfun ĠProto Method . getMethod Signature Variants (): ĠList < List < Descriptor Protos . FieldDescriptor Proto >> Ġ{ ĊĊĠĠĠ Ġval Ġmethod Signatures Options Ġ= Ġdescriptor Proto . options ĊĠĠĠĠĠĠĠ Ġ. run Catch ing Ġ{ Ġget Extension ( Client Proto . method Signature ) Ġ} ĊĠĠĠĠĠĠĠ Ġ. get OrNull () ĊĠĠĠĠĠĠĠ Ġ? . take Unless Ġ{ Ġit . isEmpty () Ġ} ĊĊĠĠĠ Ġval Ġsignature Variants Ġ= Ġmethod Signatures Options ?. map Ġ{ Ġvariant Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġvariant Fields Ġ= Ġvariant . split (",") ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġrequest Type . descriptor Proto . field List ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . name Ġin Ġvariant Fields Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġsignature Variants . or Empty () Ċ } Ċ Ċ /** Ċ Ġ* ĠComment Ġparsing Ġis Ġbased Ġon Ġthe Ġfollowing Ġimplementation Ċ Ġ* Ġhttps :// github . com / sales force / reactive - grpc / blob / ab 8 e 8 6 e 1 d 9 5 1 f 3 a 7 ab 9 8 0 2 a 3 1 ab 7 3 cd 5 ba 3 b 8 e 3 b / common / reactive - grpc - gen common / src / main / java / com / sales force / reactive grpc / gen / Reactive Grpc Generator . java # L 1 3 3 Ċ Ġ*/ Ċ private Ġconst Ġval ĠMETHOD _ NUMBER _ OF _ PATHS Ġ= Ġ 4 Ċ Ċ fun ĠList < Location >. findBy Method Index ( method Index : ĠInt ): ĠLocation Ġ= Ġfind Ġ{ ĊĠĠĠ Ġit . path Count Ġ== ĠMETHOD _ NUMBER _ OF _ PATHS Ġ&& Ġit . getPath ( METHOD _ NUMBER _ OF _ PATHS Ġ- Ġ 1 ) Ġ== Ġmethod Index Ċ } Ġ?: ĠLocation . getDefaultInstance () Ċ