package Ġch . source motion . vertx . k inesis . consumer . orche stra . impl . metrics . factory Ċ Ċ import Ġcom . fasterxml . jackson . annotation . JsonIgnore Properties Ċ import Ġcom . fasterxml . jackson . annotation . Json TypeInfo Ċ import Ġio . vertx . core . Vert x Ċ import Ġmu . K Logging Ċ import Ġsoftware . amazon . aw ssdk . metrics . Metric Publisher Ċ import Ġkotlin . reflect . full . create Instance Ċ Ċ /** Ċ Ġ* ĠFactory Ġto Ġprovide Ġa Ġ{@ link ĠMetric Publisher } Ġthat Ġpublished ĠAWS ĠSDK Ġclient Ġmetrics . Ċ Ġ*/ Ċ abstract Ġclass ĠAws Client Metric Factory < CONFIG Ġ: ĠAws Client Metric Options > Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġcreate Metrics Publisher ( vertx : ĠVert x , Ġoptions : ĠCONFIG ?): ĠMetric Publisher ĊĊĠĠĠ Ġcompanion Ġobject Ġ: ĠK Logging () Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate ( vertx : ĠVert x , Ġoptions Client : ĠAws Client Metric Options ?): ĠMetric Publisher ? Ġ Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( options Client Ġ== Ġnull Ġ|| Ġ! options Client . enabled ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠclassName Ġ= Ġoptions Client . factory ClassName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġk Class Ġ= ĠClass . forName ( className ). kotlin ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġinstance Ġ= Ġk Class . create Instance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( instance Ġis ĠAws Client Metric Factory <* >) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinstance Ġas ĠAws Client Metric Factory < Aws Client Metric Options > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmetric Publisher Ġ= Ġinstance . create Metrics Publisher ( vertx , Ġoptions Client ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . info (" Using Ġmetric Ġpublisher Ġ'${ metric Publisher . java Class . kotlin . qualified Name }' ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmetric Publisher ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" Class Ġ'$ className ' Ġis Ġnot Ġa Ġ'${ Aws Client Metric Factory :: class . qualified Name }'. ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* ĠOptions Ġon Ġhow Ġto Ġpublish ĠAWS ĠSDK Ġmetrics . Ċ Ġ*/ Ċ @ Json TypeInfo ( ĊĠĠĠ Ġuse Ġ= ĠJson TypeInfo . Id . CLASS , ĊĠĠĠ Ġinclude Ġ= ĠJson TypeInfo . As . PROPERTY , ĊĠĠĠ Ġproperty Ġ= Ġ" type " Ċ ) Ċ @ JsonIgnore Properties ( ignore Unknown Ġ= Ġtrue ) Ċ interface ĠAws Client Metric Options Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFull Ġqualified Ġclass Ġname Ġof Ġa Ġ{@ link ĠAws Metric Factory } Ġimplementation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġfactory ClassName : ĠString ? ĊĠĠĠ Ġvar Ġenabled : ĠBoolean Ċ } Ċ