Do not cache AndroidModule in IDEAndroidLayoutXmlManager

This commit is contained in:
Natalia Ukhorskaya
2015-12-04 17:19:03 +03:00
parent 408dd9bc9d
commit c523817213
@@ -33,16 +33,26 @@ import org.jetbrains.kotlin.descriptors.PropertyDescriptor
import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe
public class IDEAndroidLayoutXmlFileManager(val module: Module) : AndroidLayoutXmlFileManager(module.project) { public class IDEAndroidLayoutXmlFileManager(val module: Module) : AndroidLayoutXmlFileManager(module.project) {
override val androidModule: AndroidModule? by lazy { module.androidFacet?.toAndroidModuleInfo() } override val androidModule: AndroidModule?
get() = module.androidFacet?.toAndroidModuleInfo()
private val moduleData: CachedValue<AndroidModuleData> by lazy { @Volatile
cachedValue(project) { private var _moduleData: CachedValue<AndroidModuleData>? = null
CachedValueProvider.Result.create(super.getModuleData(), getPsiTreeChangePreprocessor())
override fun getModuleData(): AndroidModuleData {
if (androidModule == null) {
_moduleData = null
} }
else {
if (_moduleData == null) {
_moduleData = cachedValue(project) {
CachedValueProvider.Result.create(super.getModuleData(), getPsiTreeChangePreprocessor())
}
}
}
return _moduleData?.value ?: AndroidModuleData.EMPTY
} }
override fun getModuleData() = moduleData.value
private fun getPsiTreeChangePreprocessor(): PsiTreeChangePreprocessor { private fun getPsiTreeChangePreprocessor(): PsiTreeChangePreprocessor {
return project.getExtensions(PsiTreeChangePreprocessor.EP_NAME).first { it is AndroidPsiTreeChangePreprocessor } return project.getExtensions(PsiTreeChangePreprocessor.EP_NAME).first { it is AndroidPsiTreeChangePreprocessor }
} }