From bed9a0a75fae3274aa12c06bc0be3878e022bf44 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 20 Oct 2015 14:58:44 +0200 Subject: [PATCH] added helper class to workaround KT-9670 --- .../src/StateStorageManagerImpl.kt | 3 ++- .../JavaAnnotationHelperForKotlin.java | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 platform/configuration-store-impl/src/com/intellij/configurationStore/JavaAnnotationHelperForKotlin.java diff --git a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt index 446902f7bee0..4ae397417d56 100644 --- a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt +++ b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt @@ -130,7 +130,8 @@ open class StateStorageManagerImpl(private val rootTagName: String, } } - override final fun getStateStorage(storageSpec: Storage) = getOrCreateStorage(storageSpec.file, storageSpec.roamingType, storageSpec.storageClass.java as Class, storageSpec.stateSplitter.java) + override final fun getStateStorage(storageSpec: Storage) = getOrCreateStorage(storageSpec.file, storageSpec.roamingType, + JavaAnnotationHelperForKotlin.getStorageClass(storageSpec), JavaAnnotationHelperForKotlin.getStateSplitterClass(storageSpec)) protected open fun normalizeFileSpec(fileSpec: String): String { val path = FileUtilRt.toSystemIndependentName(fileSpec) diff --git a/platform/configuration-store-impl/src/com/intellij/configurationStore/JavaAnnotationHelperForKotlin.java b/platform/configuration-store-impl/src/com/intellij/configurationStore/JavaAnnotationHelperForKotlin.java new file mode 100644 index 000000000000..15c552387bd2 --- /dev/null +++ b/platform/configuration-store-impl/src/com/intellij/configurationStore/JavaAnnotationHelperForKotlin.java @@ -0,0 +1,20 @@ +package com.intellij.configurationStore; + +import com.intellij.openapi.components.StateSplitter; +import com.intellij.openapi.components.StateStorage; +import com.intellij.openapi.components.Storage; + +/** + * This class was introduced as a workaround for Kotlin bug (https://youtrack.jetbrains.com/issue/KT-9670) to avoid creation of + * unnecessary instances of KClass + * todo[nik] remove when KT-9670 is fixed + */ +public class JavaAnnotationHelperForKotlin { + public static Class getStorageClass(Storage storage) { + return storage.storageClass(); + } + + public static Class getStateSplitterClass(Storage storage) { + return storage.stateSplitter(); + } +}