/* Ċ Ġ* Ġ ĠCopyright Ġ( c ) Ġ 2 0 1 7 ĠD mit ry ĠZ hur av lev , ĠSer ge i ĠSte pan ov Ċ Ġ* Ċ Ġ* Ġ Ġ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 . hot swap . agent . plugin . configuration . patch er Ċ Ċ import Ġcom . hot swap . agent . plugin . services . Hot Swap Agent Plugin Notification Ċ import Ġcom . hot swap . agent . plugin . settings . Hot Swap Agent Plugin Settings Provider Ċ import Ġcom . hot swap . agent . plugin . util . D CE VM Util Ċ import Ġcom . intellij . execution . Executor Ċ import Ġcom . intellij . execution . configurations . Java Parameters Ċ import Ġcom . intellij . execution . configurations . Run Configuration Ċ import Ġcom . intellij . execution . configurations . Run Profile Ċ import Ġcom . intellij . execution . runners . Java Program Patch er Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . roots . Project Root Manager Ċ import Ġjava . io . File Ċ Ċ /** Ċ Ġ* Ġ@ author ĠD mit ry ĠZ hur av lev Ċ Ġ* ĠĠĠĠĠĠĠĠ ĠDate : ĠĠ 1 0 . 0 3 . 2 0 1 7 Ċ Ġ*/ Ċ class ĠHot Swap Agent Plugin Configuration Patch er Ġ: ĠJava Program Patch er () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġinternal Ġval Ġlog Ġ= ĠLogger . getInstance ( Hot Swap Agent Plugin Configuration Patch er :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġpatch Java Parameters ( executor : ĠExecutor ?, Ġconfiguration : ĠRun Profile ?, Ġjava Parameters : ĠJava Parameters ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġ( configuration Ġas ? ĠRun Configuration )?. project Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġstate Provider Ġ= ĠHot Swap Agent Plugin Settings Provider . getInstance ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġagent Path Ġ= Ġstate Provider . currentState . agent Path ĊĠĠĠĠĠĠĠ Ġval Ġdisable Plugins Param Ġ= Ġstate Provider . currentState . disabled Plugins . to Disabled Plugins Param () ĊĠĠĠĠĠĠĠ Ġif Ġ(! File ( agent Path ). exists ()) Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( state Provider . currentState . enable Agent ForAll Configuration ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply For Configuration ( agent Path , Ġdisable Plugins Param , Ġconfiguration , Ġjava Parameters , Ġproject ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( state Provider . currentState . selected Run Configurations . contains ( configuration . name Ġ?: Ġ"")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġapply For Configuration ( agent Path , Ġdisable Plugins Param , Ġconfiguration , Ġjava Parameters , Ġproject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġapply For Configuration ( agent Path : ĠString , Ġdisable Plugins Param : ĠString , Ġconfiguration : ĠRun Profile ?, Ġjava Parameters : ĠJava Parameters ?, Ġproject : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . debug (" Apply ing ĠHot Swap Agent Ġto Ġconfiguration Ġ${ configuration ?. name Ġ?: Ġ"" }") ĊĠĠĠĠĠĠĠ ĠProject Root Manager . getInstance ( project ). project Sdk ?. let Ġ{ Ġsdk Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( D CE VM Util . is D CE VM Installed Like Alt Jvm ( sdk )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġjava Parameters ?. vm Parameters List ?. add ("- XX alt jvm = dce vm ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! D CE VM Util . is D CE V MP resent ( sdk )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHot Swap Agent Plugin Notification . getInstance ( project ). show Notification About Missing D CE VM () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġjava Parameters ?. vm Parameters List ?. add ("- java agent :$ agent Path $ disable Plugins Param ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠSet < String >. to Disabled Plugins Param () Ġ= Ġif Ġ( this . isEmpty ()) Ġ"" Ġelse ĊĠĠĠĠĠĠĠ Ġ"=" Ġ+ Ġthis . join ToString (",") Ġ{ Ġ" disable Plugin =$ it " Ġ} Ċ Ċ } Ċ