package Ġorg . jetbrains . research . comment updater . processors Ċ Ċ import Ġcom . intellij . ide . highlighter . Java FileType Ċ import Ġcom . intellij . openapi . diagnostic . Logger Ċ import Ġcom . intellij . openapi . vcs . V cs Exception Ċ import Ġcom . intellij . openapi . vcs . changes . Change Ċ import Ġcom . intellij . openapi . vcs . changes . Change List Manager Ċ import Ġcom . intellij . psi .* Ċ import Ġcom . intellij . psi . javadoc . Psi Doc Comment Ċ Ċ object ĠMethod Changes Extractor Ġ{ ĊĠĠĠ Ġprivate Ġval ĠLOG : ĠLogger Ġ= ĊĠĠĠĠĠĠĠ ĠLogger . getInstance ( java Class ) ĊĊĠĠĠ Ġfun Ġget Old Method ( method : ĠPsi Method , Ġchange : ĠChange , Ġold Name : ĠString ): ĠPsi Method ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpsi File Ġ= Ġmethod . containing File ĊĠĠĠĠĠĠĠ Ġval Ġbefore Revision Ġ= Ġchange . before Revision Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġold Method : ĠPsi Method ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġbefore Revision . content Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPsi File Factory . getInstance ( psi File . project ). create File FromText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tmp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJava FileType . INSTANCE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). accept ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠJava Recursive Element Visitor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Doc Comment ( comment : ĠPsi Doc Comment ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comment . owner Ġis ĠPsi Method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġextract Fully QualifiedName ( comment . owner Ġas ĠPsi Method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġold Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Method Ġ= Ġcomment . owner Ġas ĠPsi Method ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit Doc Comment ( comment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Method ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠV cs Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . error ("[ Comment Updater ] ĠFailed Ġto Ġget Ġa Ġfile 's Ġcontent Ġfrom Ġthe Ġlast Ġrevision .", Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġtodo : Ġmove Ġthis Ġfunction Ġto Ġmethod Ġutils ĊĠĠĠ Ġfun Ġextract Fully QualifiedName ( method : ĠPsi Method ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( method . containing Class ?. qualified Name Ġ?: Ġ"") Ġ+ Ġ"." Ġ+ Ġmethod . name ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġfun Ġget Old Method ( method : ĠPsi Method ): ĠPsi Method ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġmethod FullName Ġ= Ġextract Fully QualifiedName ( method ) ĊĠĠĠĠĠĠĠ Ġval Ġpsi File Ġ= Ġmethod . containing File ĊĠĠĠĠĠĠĠ Ġval Ġchange List Manager Ġ= ĠChange List Manager . getInstance ( psi File . project ) ĊĠĠĠĠĠĠĠ Ġval Ġchange : ĠChange Ġ= Ġchange List Manager . get Change ( psi File . virtual File ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġbefore Revision Ġ= Ġchange . before Revision Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġold Method : ĠPsi Method ? Ġ= Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontent Ġ= Ġbefore Revision . content Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPsi File Factory . getInstance ( psi File . project ). create File FromText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tmp ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJava FileType . INSTANCE , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ). accept ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠJava Recursive Element Visitor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit Doc Comment ( comment : ĠPsi Doc Comment ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( comment . owner Ġis ĠPsi Method ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġextract Fully QualifiedName ( comment . owner Ġas ĠPsi Method ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( name Ġ== Ġmethod FullName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġold Method Ġ= Ġcomment . owner Ġas ĠPsi Method ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . visit Doc Comment ( comment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġold Method ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠV cs Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLOG . error ("[ Comment Updater ] ĠFailed Ġto Ġget Ġa Ġfile 's Ġcontent Ġfrom Ġthe Ġlast Ġrevision .", Ġe . message ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ }