/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ġof Ġthis Ġsoftware Ġand Ġassociated Ċ Ġ* Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ċ Ġ* Ġthe Ġrights Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ġcopies Ġof Ġthe ĠSoftware , Ġand Ċ Ġ* Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ċ Ġ* Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ* AS ĠIS *, ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO Ċ Ġ* ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , Ċ Ġ* ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . microsoft . intellij . ui . forms . app service . webapp . slot Ċ Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . ui . Validation Info Ċ import Ġcom . jetbrains . rd . util . lifetime . Lifetime Ċ import Ġcom . jetbrains . rd . util . reactive . Signal Ċ import Ġcom . microsoft . azure . management . app service . WebApp Ċ import Ġcom . microsoft . intellij . helpers . validator . WebApp Validator Ċ import Ġcom . microsoft . intellij . runner . webapp . Azure DotNet WebApp M vp Model Ċ import Ġcom . microsoft . intellij . ui . extension . getSelected Value Ċ import Ġcom . microsoft . intellij . ui . extension . init Validation With Result Ċ import Ġcom . microsoft . intellij . ui . forms . app service . slot . Create Deployment Slot Component Ċ Ċ class ĠWeb App Create Deployment Slot Component ( private Ġval Ġapp : ĠWeb App , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġlifetime : ĠL ifetime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġis Load Finished Signal : ĠSignal < Boolean >) Ġ: ĊĠĠĠĠĠĠĠ ĠCreate Deployment Slot Component ( app , Ġis Load Finished Signal ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger . getInstance ( WebApp Create Deployment Slot Component :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġinit Component Validation () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload Slot Names Action (): ĠList < String > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAzure DotNet WebApp M vp Model . list Deployment Slots ( app , Ġtrue ). map Ġ{ Ġit . name () Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġvalidate Component (): ĠList < Validation Info > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeb App Validator . validate Deployment Slot Name ( slot Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. merge ( WebApp Validator . check Deployment Slot Name Exists ( app , Ġslot Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Validation Info ( pnl Name . txt Name Value ), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf NotNull ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Clone Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeb App Validator . check Deployment Slot Name IsSet ( cb Existing Settings . getSelected Value () Ġ?: Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Validation Info ( cb Existing Settings ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠ Ġoverride Ġfun Ġinit Component Validation () Ġ{ ĊĠĠĠĠĠĠĠ Ġpnl Name . txt Name Value . init Validation With Result ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlifetime Ġ= Ġlifetime , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Change Validation Action Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠWeb App Validator . check Deployment Slot Name MaxLength ( slot Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. merge ( WebApp Validator . check Deployment Slot Name Invalid Characters ( slot Name )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfocus Lost Validation Action Ġ= Ġ{ ĠWeb App Validator . check Deployment Slot Name Min Length ( slot Name ) Ġ}) ĊĠĠĠ Ġ} Ċ } Ċ