// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . execution . target . java Ċ Ċ import Ġcom . intellij . execution . Runner And Configuration Settings Ċ import Ġcom . intellij . execution . target . Language Runtime Type Ċ import Ġcom . intellij . icons . All Icons Ċ import Ġcom . intellij . openapi . components . Persistent State Component Ċ import Ġcom . intellij . openapi . components . Service Manager Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . options . Configurable Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . util . text . StringUtil Ċ import Ġcom . intellij . util . lang . Java Version Ċ import Ġjava . util . concurrent . TimeUnit Ċ Ċ class ĠJava Language Runtime Type Ġ: ĠLanguage Runtime Type < Java Language Runtime Configuration >( TYPE _ ID ) Ġ{ ĊĠ Ġoverride Ġval Ġicon Ġ= ĠAll Icons . File Types . Java ĊĊĠ Ġoverride Ġval ĠdisplayName Ġ= Ġ" Java " ĊĊĠ Ġoverride Ġval Ġconfigurable Description Ġ= Ġ" Configure ĠJava " ĊĊĠ Ġoverride Ġval Ġlaunch Description Ġ= Ġ" Run ĠJava Ġapplication " ĊĊĠ Ġoverride Ġfun Ġis Applicable To ( run Config : ĠRunner And Configuration Settings ) Ġ= Ġtrue ĊĊĠ Ġoverride Ġfun Ġcreate Default Config () Ġ= ĠJava Language Runtime Configuration () ĊĊĠ Ġoverride Ġfun Ġcreate Serializer ( config : ĠJava Language Runtime Configuration ): ĠPersistent State Component < *> Ġ= Ġconfig ĊĊĠ Ġoverride Ġfun Ġcreate Configurable ( project : ĠProject , Ġconfig : ĠJava Language Runtime Configuration ): ĠConfigur able Ġ= ĊĠĠĠ ĠService Manager . getService ( Java Language Runtime UI Factory :: class . java ). create ( config ) ĊĊĠ Ġoverride Ġfun Ġcreate Int ros pector ( config : ĠJava Language Runtime Configuration ): ĠInt ros pector ? Ġ{ ĊĠĠĠ Ġif Ġ( config . home Path . isNotBlank () Ġ&& Ġconfig . java Version String . isNotBlank ()) Ġreturn Ġnull ĊĊĠĠĠ Ġreturn Ġobject Ġ: ĠInt ros pector Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġint rospect ( subject : ĠInt rospect able ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( config . home Path . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġhome Ġ= Ġsubject . get EnvironmentVariable (" JAVA _ HOME ") ĊĠĠĠĠĠĠĠĠĠ Ġhome ?. let Ġ{ Ġconfig . home Path Ġ= Ġhome Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( config . java Version String . isBlank ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġpromise Ġ= Ġsubject . promise Execute Script (" java Ġ- version ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. then Accept Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit ?. let Ġ{ ĠString Util . split By Lines ( it , Ġtrue ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . first OrNull () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ ĠJava Version . parse ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġconfig . java Version String Ġ= Ġit . toString () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġtodo [ remote Servers ]: Ġblocking Ġwait ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpromise . get ( 3 , ĠTimeUnit . SECONDS ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . error ( e ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġval ĠTYPE _ ID Ġ= Ġ" Java Language Runtime " ĊĠĠĠ Ġprivate Ġval ĠLOG : ĠLogger Ġ= ĠLogger . getInstance ( Java Language Runtime Type :: class . java ) ĊĠ Ġ} Ċ }