diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.kt index 897fa022b80..03b2659a01b 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/KotlinBundle.kt @@ -13,39 +13,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ +package org.jetbrains.kotlin.idea -package org.jetbrains.kotlin.idea; - -import com.intellij.CommonBundle; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.PropertyKey; - -import java.lang.ref.Reference; -import java.lang.ref.SoftReference; -import java.util.ResourceBundle; - -public class KotlinBundle { - private static Reference ourBundle; +import com.intellij.CommonBundle +import org.jetbrains.annotations.NonNls +import org.jetbrains.annotations.PropertyKey +import org.jetbrains.kotlin.idea.core.util.KotlinBundleBase +import java.util.* +object KotlinBundle : KotlinBundleBase() { @NonNls - private static final String BUNDLE = "org.jetbrains.kotlin.idea.KotlinBundle"; + private const val BUNDLE = "org.jetbrains.kotlin.idea.KotlinBundle" - private KotlinBundle() { - } + override fun createBundle(): ResourceBundle = ResourceBundle.getBundle(BUNDLE) - @NotNull - public static String message(@NonNls @PropertyKey(resourceBundle = BUNDLE) String key, Object... params) { - return CommonBundle.message(getBundle(), key, params); + @JvmStatic + fun message(@NonNls @PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any?): String { + return CommonBundle.message(bundle, key, *params) } - - private static ResourceBundle getBundle() { - ResourceBundle bundle = null; - if (ourBundle != null) bundle = ourBundle.get(); - if (bundle == null) { - bundle = ResourceBundle.getBundle(BUNDLE); - ourBundle = new SoftReference(bundle); - } - return bundle; - } -} +} \ No newline at end of file diff --git a/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/KotlinBundleBase.kt b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/KotlinBundleBase.kt new file mode 100644 index 00000000000..8521963b3b8 --- /dev/null +++ b/idea/idea-core/src/org/jetbrains/kotlin/idea/core/util/KotlinBundleBase.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.idea.core.util + +import java.lang.ref.Reference +import java.lang.ref.SoftReference +import java.util.* + +abstract class KotlinBundleBase { + private var bundleCache: Reference? = null + + protected abstract fun createBundle(): ResourceBundle + + val bundle: ResourceBundle + get() { + val cachedValue = bundleCache?.get() + if (cachedValue != null) { + return cachedValue + } + + val newValue = createBundle() + bundleCache = SoftReference(newValue) + return newValue + } +} \ No newline at end of file diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/KotlinRefactoringBundle.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/KotlinRefactoringBundle.java deleted file mode 100644 index 8b012e4038b..00000000000 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/KotlinRefactoringBundle.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.kotlin.idea.refactoring; - -import com.intellij.CommonBundle; -import org.jetbrains.annotations.NonNls; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.PropertyKey; - -import java.lang.ref.Reference; -import java.lang.ref.SoftReference; -import java.util.ResourceBundle; - -public class KotlinRefactoringBundle { - private static Reference ourBundle; - - @NonNls - private static final String BUNDLE = "org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle"; - - private KotlinRefactoringBundle() { - } - - @NotNull - public static String message(@NonNls @PropertyKey(resourceBundle = BUNDLE)String key, Object... params) { - return CommonBundle.message(getBundle(), key, params); - } - - private static ResourceBundle getBundle() { - ResourceBundle bundle = null; - if (ourBundle != null) bundle = ourBundle.get(); - if (bundle == null) { - bundle = ResourceBundle.getBundle(BUNDLE); - ourBundle = new SoftReference(bundle); - } - return bundle; - } -} diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/KotlinRefactoringBundle.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/KotlinRefactoringBundle.kt new file mode 100644 index 00000000000..8b1949b6bf1 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/KotlinRefactoringBundle.kt @@ -0,0 +1,34 @@ +/* + * Copyright 2010-2015 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.jetbrains.kotlin.idea.refactoring + +import com.intellij.CommonBundle +import org.jetbrains.annotations.NonNls +import org.jetbrains.annotations.PropertyKey +import org.jetbrains.kotlin.idea.core.util.KotlinBundleBase +import java.util.* + +object KotlinRefactoringBundle : KotlinBundleBase() { + @NonNls + private const val BUNDLE = "org.jetbrains.kotlin.idea.refactoring.KotlinRefactoringBundle" + + override fun createBundle(): ResourceBundle = ResourceBundle.getBundle(BUNDLE) + + @JvmStatic + fun message(@NonNls @PropertyKey(resourceBundle = BUNDLE) key: String, vararg params: Any?): String { + return CommonBundle.message(bundle, key, *params) + } +} \ No newline at end of file