package Ġorg . jetbrains . kotlin . ui . tests . refactor ing . rename Ċ Ċ import Ġcom . google . gson . JsonObject Ċ import Ġcom . google . gson . Json Parser Ċ import Ġorg . eclipse . core . resources . I File Ċ import Ġorg . eclipse . core . runtime . I Path Ċ import Ġorg . eclipse . core . runtime . Path Ċ import Ġorg . eclipse . jdt . core . I Compilation Unit Ċ import Ġorg . eclipse . jdt . internal . ui . java editor . Editor Utility Ċ import Ġorg . eclipse . jdt . internal . ui . java editor . Java Editor Ċ import Ġorg . eclipse . j face . text . IT ext Selection Ċ import Ġorg . eclipse . j face . text . Text Selection Ċ import Ġorg . eclipse . ui . I Editor Part Ċ import Ġorg . eclipse . ui . Platform UI Ċ import Ġorg . eclipse . ui . ide . IDE Ċ import Ġorg . jetbrains . kotlin . core . builder . Kotlin Psi Manager Ċ import Ġorg . jetbrains . kotlin . core . references . resolve To Source Declaration Ċ import Ġorg . jetbrains . kotlin . eclipse . ui . utils . Editor Util Ċ import Ġorg . jetbrains . kotlin . test framework . editor . Kotlin Project TestCase Ċ import Ġorg . jetbrains . kotlin . test framework . utils . Kotlin TestUtils Ċ import Ġorg . jetbrains . kotlin . ui . editor s . Kotlin Common Editor Ċ import Ġorg . jetbrains . kotlin . ui . refactor ings . rename . create Rename Support Ċ import Ġorg . jetbrains . kotlin . ui . refactor ings . rename . do Rename Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Before Ċ import Ġjava . io . File Ċ Ċ abstract Ġclass ĠKotlin Rename TestCase Ġ: ĠKotlin Project TestCase () Ġ{ ĊĠĠĠ Ġ@ Before ĊĠĠĠ Ġfun Ġbefore () Ġ{ ĊĠĠĠĠĠĠĠ Ġconfigure Project With Std Lib () ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprotected Ġfun Ġdo Test ( test Info : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Info Text Ġ= ĠKotlin TestUtils . getText ( test Info ) ĊĠĠĠĠĠĠĠ Ġval Ġjson Parser Ġ= ĠJson Parser () ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġrename Object Ġ= Ġjson Parser . parse ( fileInfo Text ) Ġas ĠJsonObject ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġroot Folder Ġ= ĠPath ( test Info ). remove Last Segments ( 1 ) ĊĠĠĠĠĠĠĠ Ġval Ġbefore Source Folder Ġ= Ġroot Folder . append (" before ") ĊĠĠĠĠĠĠĠ Ġval Ġloaded Files Ġ= Ġarray ListOf < I File >() ĊĠĠĠĠĠĠĠ Ġload Files ( before Source Folder . to File ()) Ġ{ Ġloaded Files . add ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ ĠKotlin TestUtils . join Build Thread () ĊĠĠĠĠĠĠĠ Ġre concile Java Files ( before Source Folder . to File (), Ġbefore Source Folder ) ĊĠĠĠĠĠĠĠ ĠKotlin TestUtils . join Build Thread () ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġopen Main File ( rename Object , Ġloaded Files ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġselection Ġ= Ġfind Selection To Rename ( rename Object , Ġeditor ) ĊĠĠĠĠĠĠĠ ĠAssert . assertTrue (" Element Ġto Ġrename Ġwas Ġnot Ġfound ", Ġselection . get Offset () Ġ> Ġ 0 ) ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval ĠnewName Ġ= Ġrename Object [" new Name "]. asString ĊĠĠĠĠĠĠĠ Ġwhen Ġ( editor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠKotlin Common Editor Ġ-> Ġperform Rename ( selection , ĠnewName , Ġeditor ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġperform Rename From Java ( selection , ĠnewName , Ġeditor Ġas ĠJava Editor ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġbase Ġ= Ġroot Folder . append (" after ") ĊĠĠĠĠĠĠĠ Ġcheck Result ( base . to File (), Ġbase ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġperform Rename ( selection : ĠI Text Selection , ĠnewName : ĠString , Ġeditor : ĠKotlin Common Editor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġselected Element Ġ= ĠEditor Util . get Jet Element ( editor , Ġselection . get Offset ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( selected Element Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġsource Declaration Ġ= Ġselected Element . resolve To Source Declaration () ĊĠĠĠĠĠĠĠ Ġdo Rename ( source Declaration , ĠnewName , Ġeditor ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġfun Ġperform Rename From Java ( selection : ĠI Text Selection , ĠnewName : ĠString , Ġeditor : ĠJava Editor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠEditor Utility . get Editor Input Java Element ( editor , Ġfalse ) Ġas ĠI Compilation Unit ĊĠĠĠĠĠĠĠ Ġval Ġjava Element Ġ= Ġroot . code Select ( selection . get Offset (), Ġ 0 )[ 0 ] ĊĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠ Ġval Ġrename Support Ġ= Ġcreate Rename Support ( java Element , ĠnewName ) ĊĠĠĠĠĠĠĠ Ġrename Support . perform ( editor . get Site (). get Shell (), Ġeditor . get Site (). get Workbench Window ()) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġcheck Result ( source Folder After : ĠFile , Ġbase : ĠI Path ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactual Files Ġ= ĠKotlin Psi Manager . get Files By Project ( getTest Project (). get Java Project (). getProject ()) ĊĠĠĠĠĠĠĠ Ġfor Ġ( expected File Ġin Ġsource Folder After . list Files ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( expected File . isFile ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexpected Source Ġ= ĠKotlin TestUtils . getText ( expected File . getAbsolutePath ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual Source Ġ= Ġif Ġ( expected File . extension Ġ== Ġ" kt ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual File Ġ= Ġactual Files . find Ġ{ Ġit . getName () Ġ== Ġexpected File . getName () Ġ} !! ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Util . getDocument ( actual File ). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( expected File . extension Ġ== Ġ" k ts ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġactual File Ġ= Ġget Test Project (). get Java Project (). getProject (). find Member (" src /${ expected File . getName () }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Util . getDocument ( actual File Ġas ĠI File ). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelative Ġ= ĠPath ( expected File . getPath ()). make Relative To ( base ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġget Test Project (). get Java Project (). findElement ( relative ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠEditor Util . getDocument ( element . getResource () Ġas ĠI File ). get () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAssert . assertEquals (" Expected Ġand Ġactual Ġfiles Ġfor Ġ${ expected File . getName ()} Ġare Ġnot Ġequals ", Ġexpected Source , Ġactual Source ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( expected File . isDirectory ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Result ( expected File , Ġbase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġfind Selection To Rename ( rename Object : ĠJsonObject , Ġeditor : ĠI Editor Part ): ĠText Selection Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdocument Ġ= Ġ( editor Ġas ĠJava Editor ). getDocument Provider (). getDocument ( editor . get Editor Input ()) ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= Ġdocument . get (). indexOf ( rename Object [" old Name "]. asString ) Ġ+ Ġ 1 ĊĠĠĠĠĠĠĠ Ġreturn ĠText Selection ( document , Ġposition , Ġ 0 ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġopen Main File ( rename Object : ĠJsonObject , Ġloaded Files : ĠList < I File >): ĠI Editor Part Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmain File Ġ= Ġloaded Files . find Ġ{ ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . getName () Ġ== Ġrename Object [" main File "]. asString ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġpage Ġ= ĠPlatform UI . get Workbench (). getActive Workbench Window (). getActive Page () ĊĠĠĠĠĠĠĠ Ġreturn ĠIDE . open Editor ( page , Ġmain File , Ġfalse ) ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġre concile Java Files ( source Folder : ĠFile , Ġbase : ĠI Path ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsource Folder . list Files (). forEach Ġ{ ĠĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isFile Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrelative Ġ= ĠPath ( it . getPath ()). make Relative To ( base ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġget Test Project (). get Java Project (). findElement ( relative ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( element Ġis ĠI Compilation Unit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . be come Working Copy ( null ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . re concile ( I Compilation Unit . NO _ AST , Ġtrue , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . commit Working Copy ( true , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . discard Working Copy () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . isDirectory Ġ-> Ġre concile Java Files ( it , Ġbase ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠĠĊĠĠĠ Ġprivate Ġfun Ġload Files ( source Root : ĠFile , Ġaction : Ġ( I File ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( file Ġin Ġsource Root . list Files ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file . isFile ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Content Ġ= ĠKotlin TestUtils . getText ( file . getAbsolutePath ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġaction ( create SourceFile ( file . getName (), Ġfile Content )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( file . isDirectory ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġload Files ( file , Ġaction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }