package Ġcom . bre x . plugins . code owners Ċ Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġjava . io . File Ċ Ċ class ĠOwn edBy Annotation Strategy ( private Ġval Ġproject : ĠProject ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġproj Ġ= Ġproject ĊĠĠĠ Ġprivate Ġval Ġpackage Info Ġ= Ġ" package - info . java " ĊĠĠĠ Ġprivate Ġval Ġannotation Regex Ġ= Ġ"@ Owned By \\ (( ?: value Ġ?= )? Ġ? ([^ , ]* )( ?: , Ġ? bounded Context Ġ?= Ġ? (.* )) ? \\ ) ". to Regex () ĊĠĠĠ Ġprivate Ġval Ġanaly z able Files Ġ= Ġset Of (" java ") ĊĊĠĠĠ Ġ/** ĠGiven Ġa Ġfile , Ġfind Ġthe Ġowner ĊĠĠĠĠ Ġ* Ġ 1 . ĠIf Ġnot Ġjava , Ġreturn Ġempty ĊĠĠĠĠ Ġ* Ġ 2 . ĠIf Ġjava Ġ& Ġit 's Ġannotated : Ġshow Ġowner ĊĠĠĠĠ Ġ* Ġ 3 . ĠIf Ġjava Ġand Ġnot Ġannotated : Ġgo Ġup Ġand Ġcheck Ġpackage - info . java ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Code Owner ( file : ĠVirtual File ): ĠCode Owner Rule ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( file . extension Ġ! in Ġanaly z able Files ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġget Owner ( file . path ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Owner ( path : ĠString ): ĠCode Owner Rule ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( path ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdir Ġ= ĠFile ( file . parent ). parent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( dir Ġ== Ġproj . basePath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġget Owner ( dir Ġ+ ĠFile . separator Ġ+ Ġpackage Info ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġlines Ġ= Ġfile . read Lines () ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġfor Ġ( line Ġin Ġlines ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmatch Ġ= Ġannotation Regex . find ( line ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( match Ġ!= Ġnull Ġ&& Ġmatch . groups . size Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġowner Ġ= Ġmatch . groups [ 1 ]?. value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġmatch . groups [ 2 ]?. value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠCode Owner Rule ( owner Ġ?: Ġ"-- ", Ġgroup Ġ?: Ġ"-- ", Ġi , Ġfile . path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( line . contains (" class ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġi ++ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdir Ġ= Ġfile . parent ĊĠĠĠĠĠĠĠ Ġif Ġ( dir Ġ== Ġproj . basePath ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġget Owner ( dir Ġ+ ĠFile . separator Ġ+ Ġpackage Info ) ĊĠĠĠ Ġ} Ċ } Ċ