package Ġcom . intellij . workspace . legacy Bridge . typed Model . module Ċ Ċ import Ġcom . intellij . openapi . roots . Content Folder Ċ import Ġcom . intellij . openapi . roots . Exclude Folder Ċ import Ġcom . intellij . openapi . roots . Source Folder Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . workspace . api .* Ċ import Ġorg . jetbrains . j ps . model . J ps Element Ċ import Ġorg . jetbrains . j ps . model . J ps Element Factory Ċ import Ġorg . jetbrains . j ps . model . java . Java Source Root Type Ċ import Ġorg . jetbrains . j ps . model . java . J ps Java Extension Service Ċ import Ġorg . jetbrains . j ps . model . module . J ps Module Source Root Ċ import Ġorg . jetbrains . j ps . model . module . J ps Module Source Root Type Ċ import Ġorg . jetbrains . j ps . model . serialization . J ps Model Serializer Extension Ċ Ċ abstract Ġclass ĠContent Folder Via Typed Entity ( private Ġval Ġentry : ĠContent Entry Via Typed Entity , Ġprivate Ġval Ġcontent Folder Url : ĠVirtual File Url ) Ġ: ĠContent Folder Ġ{ ĊĠ Ġprivate Ġval Ġroot Pointer Ġ= Ġentry . model . file Pointer Provider . get And Cache File Pointer ( content Folder Url ) ĊĊĠ Ġoverride Ġfun ĠgetFile (): ĠVirtual File ? Ġ= Ġroot Pointer . file ĊĠ Ġoverride Ġfun ĠgetContent Entry (): ĠContent Entry Via Typed Entity Ġ= Ġentry ĊĠ Ġoverride Ġfun ĠgetUrl (): ĠString Ġ= Ġcontent Folder Url . url ĊĠ Ġoverride Ġfun Ġis Synt hetic (): ĠBoolean Ġ= Ġfalse ĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ= Ġcontent Folder Url Ġ== Ġ( other Ġas ? ĠContent Folder Via Typed Entity )?. content Folder Url ĊĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ= Ġcontent Folder Url . hashCode () Ċ } Ċ Ċ class ĠSource Folder Via Typed Entity ( private Ġval Ġentry : ĠContent Entry Via Typed Entity , Ġval Ġsource Root Entity : ĠSource Root Entity ) ĊĠ Ġ: ĠContent Folder Via Typed Entity ( entry , Ġsource Root Entity . url ), ĠSource Folder Ġ{ ĊĊĠ Ġprivate Ġvar Ġpackage Prefix Var : ĠString ? Ġ= Ġnull ĊĊĠ Ġoverride Ġfun Ġis Test Source () Ġ= Ġsource Root Entity . tests ĊĠ Ġoverride Ġfun Ġget Package Prefix () Ġ= Ġpackage Prefix Var Ġ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Root Entity . as Java Source Root ()?. package Prefix Ġ?: ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsource Root Entity . as Java Resource Root ()?. relative Output Path ?. replace ('/', Ġ'.') Ġ?: Ġ"" ĊĠ Ġoverride Ġfun Ġget Root Type () Ġ= Ġget Source Root Type ( source Root Entity . root Type ) ĊĊĠ Ġoverride Ġfun Ġget J ps Element (): ĠJ ps Module Source Root Ġ{ ĊĠĠĠ Ġval Ġelement Factory Ġ= ĠJ ps Element Factory . getInstance () ĊĠĠĠ Ġval Ġjava Extension Service Ġ= ĠJ ps Java Extension Service . getInstance () ĊĠĠĠ Ġval Ġjava Source Root Ġ= Ġsource Root Entity . as Java Source Root () ĊĠĠĠ Ġval Ġroot Properties Ġ= Ġif Ġ( java Source Root Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġjava Extension Service . create Source Root Properties ( java Source Root . package Prefix , Ġjava Source Root . generated ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ Ġval Ġjava Resource Root Ġ= Ġsource Root Entity . as Java Resource Root () ĊĠĠĠĠĠ Ġif Ġ( java Resource Root Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Extension Service . create Resource Root Properties ( java Resource Root . relative Output Path , Ġjava Resource Root . generated ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġ// todo Ġsupport Ġproperties Ġof Ġother Ġcustom Ġroot Ġtypes ĊĠĠĠĠĠĠĠ Ġelement Factory . create Dummy Element () ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠ Ġreturn Ġelement Factory . create Module Source Root ( url , Ġroot Type Ġas ĠJ ps Module Source Root Type < J ps Element >, Ġroot Properties ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġentry . url . hashCode () ĊĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= Ġsource Root Entity Ġ== Ġ( other Ġas ? ĠSource Folder Via Typed Entity )?. source Root Entity ĊĊĠ Ġoverride Ġfun Ġset Package Prefix ( package Prefix : ĠString ) Ġ{ ĊĠĠĠ Ġif Ġ( get Package Prefix () Ġ== Ġpackage Prefix ) Ġreturn ĊĊĠĠĠ Ġval Ġupdater Ġ= Ġentry . model . updater Ġ?: Ġerror (" Model Ġis Ġread - only ") ĊĊĠĠĠ Ġval Ġjava Source Root Ġ= Ġsource Root Entity . as Java Source Root () ĊĠĠĠ Ġif Ġ( java Source Root Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġval Ġjava Resource Root Ġ= Ġsource Root Entity . as Java Resource Root () ĊĠĠĠĠĠ Ġ// ĠOriginal Ġset Package Prefix Ġsilently Ġdoes Ġnothing Ġon Ġany Ġnon - java - source - roots ĊĠĠĠĠĠ Ġif Ġ( java Resource Root Ġ!= Ġnull ) Ġreturn ĊĊĠĠĠĠĠ Ġupdater Ġ{ Ġdiff Ġ-> ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠReplace ĠTemp Entity Source Ġwith Ġsource Root Entity . source ĊĠĠĠĠĠĠĠ Ġdiff . add Java Source Root Entity ( source Root Entity , Ġfalse , Ġpackage Prefix , Ġsource Root Entity . entity Source ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġupdater Ġ{ Ġdiff Ġ-> ĊĠĠĠĠĠĠĠ Ġdiff . modify Entity ( Mod ifiable Java Source Root Entity :: class . java , Ġjava Source Root ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġthis . package Prefix Ġ= Ġpackage Prefix ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġpackage Prefix Var Ġ= Ġpackage Prefix ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Source Root Type ( root Type : ĠString ): ĠJ ps Module Source Root Type < *> Ġ= ĊĠĠĠ ĠJ ps Model Serializer Extension . get Extensions () ĊĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . module Source Root Properties Serial izers Ġ} ĊĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġit . type Id Ġ== Ġroot Type Ġ} ĊĠĠĠĠĠ Ġ? . type Ġ?: ĠJava Source Root Type . SOURCE Ċ } Ċ Ċ class ĠExclude Folder Via Typed Entity ( entry : ĠContent Entry Via Typed Entity , Ġval Ġexclude Folder Url : ĠVirtual File Url ) ĊĠ Ġ: ĠContent Folder Via Typed Entity ( entry , Ġexclude Folder Url ), ĠExclude Folder Ċ