simplify resolveNotRequiredValue

GitOrigin-RevId: 130f0170b1126240ff5db705c1fe1a97dff33185
This commit is contained in:
Vladimir Krivosheev
2024-08-12 19:35:32 +02:00
committed by intellij-monorepo-bot
parent 8d94dfcad2
commit 24c035dc51
6 changed files with 31 additions and 32 deletions

View File

@@ -40,7 +40,7 @@ class RegistryKeyBean private constructor() {
Registry.setContributedKeys(HashMap<String, RegistryKeyDescriptor>().let { mutator ->
point.processUnsortedWithPluginDescriptor { bean, pluginDescriptor ->
val descriptor = createRegistryKeyDescriptor(bean, pluginDescriptor)
putNewDescriptorConsideringOverrides(mutator, descriptor, false)
putNewDescriptorConsideringOverrides(map = mutator, newDescriptor = descriptor, isDynamic = false)
}
java.util.Map.copyOf(mutator)
})
@@ -51,7 +51,7 @@ class RegistryKeyBean private constructor() {
Registry.mutateContributedKeys { oldMap ->
val newMap = HashMap<String, RegistryKeyDescriptor>(oldMap.size + 1)
newMap.putAll(oldMap)
putNewDescriptorConsideringOverrides(newMap, descriptor, isDynamic = true)
putNewDescriptorConsideringOverrides(map = newMap, newDescriptor = descriptor, isDynamic = true)
java.util.Map.copyOf(newMap)
}
}

View File

@@ -59,11 +59,11 @@ internal class RegistryManagerImpl(coroutineScope: CoroutineScope) : PersistentS
override fun stringValue(key: String): @NlsSafe String = Registry._getWithoutStateCheck(key).asString()
override fun intValue(key: String, defaultValue: Int): Int {
return try {
Registry._getWithoutStateCheck(key).asInteger()
try {
return Registry._getWithoutStateCheck(key).asInteger()
}
catch (ignore: MissingResourceException) {
defaultValue
return defaultValue
}
}
@@ -76,11 +76,11 @@ internal class RegistryManagerImpl(coroutineScope: CoroutineScope) : PersistentS
override fun getState(): Element = Registry.getInstance().getState()
override fun noStateLoaded() {
Registry.loadState(/* state = */ null, /* earlyAccess = */ EarlyAccessRegistryManager.getOrLoadMap())
Registry.loadState(state = null, earlyAccess = EarlyAccessRegistryManager.getOrLoadMap())
}
override fun loadState(state: Element) {
log(Registry.loadState(/* state = */ state, /* earlyAccess = */ EarlyAccessRegistryManager.getOrLoadMap()))
log(Registry.loadState(state = state, earlyAccess = EarlyAccessRegistryManager.getOrLoadMap()))
}
private fun log(userProperties: Map<String, String>) {
@@ -89,13 +89,12 @@ internal class RegistryManagerImpl(coroutineScope: CoroutineScope) : PersistentS
}
val keys = ArrayUtilRt.toStringArray(userProperties.keys)
Arrays.sort(keys)
keys.sort()
val builder = StringBuilder("Registry values changed by user: ")
for (key in keys) {
if ("ide.firstStartup" == key) {
continue
if ("ide.firstStartup" != key) {
builder.append(key).append(" = ").append(userProperties[key]).append(", ")
}
builder.append(key).append(" = ").append(userProperties[key]).append(", ")
}
logger<RegistryManager>().info(builder.substring(0, builder.length - 2))
}

View File

@@ -1493,7 +1493,6 @@ c:com.intellij.openapi.util.registry.RegistryValue
- f:getSelectedOption():java.lang.String
- isBoolean():Z
- isChangedFromDefault():Z
- f:isChangedFromDefault(java.lang.String,com.intellij.openapi.util.registry.Registry):Z
- f:isChangedSinceAppStart():Z
- f:isMultiValue():Z
- f:isOptionEnabled(java.lang.String):Z

View File

@@ -208,7 +208,7 @@ class Registry {
val keysToProcess = HashSet(userProperties.keys)
for ((key, value) in map) {
val registryValue = registry.resolveValue(key)
val currentValue = registryValue.resolveNotRequiredValue(key = key, defaultValue = null)
val currentValue = registryValue.resolveNotRequiredValue(key)
// currentValue == null means value is not in the bundle. Ignore it
if (currentValue != null && currentValue != value) {
registryValue.setValue(value)
@@ -259,17 +259,17 @@ class Registry {
val keys = bundle?.keys ?: emptySet()
val result = ArrayList<RegistryValue>()
// don't use getInstance here - https://youtrack.jetbrains.com/issue/IDEA-271748
val instance = registry
val contributedKeys = instance.contributedKeys
val registry = registry
val contributedKeys = registry.contributedKeys
for (key in keys) {
if (key.endsWith(".description") || key.endsWith(".restartRequired") || contributedKeys.containsKey(key)) {
continue
}
result.add(instance.resolveValue(key))
result.add(registry.resolveValue(key))
}
for (key in contributedKeys.keys) {
result.add(instance.resolveValue(key))
result.add(registry.resolveValue(key))
}
return result
@@ -317,7 +317,7 @@ class Registry {
val map = fromState(state)
for ((key, value) in map) {
val registryValue = registry.resolveValue(key)
if (registryValue.isChangedFromDefault(value, registry)) {
if (value != registry.getBundleValueOrNull(registryValue.key)) {
userProperties.put(key, value)
registryValue.resetCache()
}
@@ -328,6 +328,7 @@ class Registry {
// yes, earlyAccess overrides user properties
userProperties.putAll(earlyAccess)
}
registry.isLoaded = true
registry.loadFuture.complete(null)
return userProperties

View File

@@ -120,7 +120,7 @@ open class RegistryValue @Internal constructor(
}
private fun computeDouble(): Double {
return resolveNotRequiredValue(key = key, defaultValue = null)?.toDoubleOrNull()
return resolveNotRequiredValue(key)?.toDoubleOrNull()
?: keyDescriptor?.defaultValue?.toDouble()
?: registry.getBundleValueOrNull(key)?.toDouble()
?: 0.0
@@ -145,33 +145,33 @@ open class RegistryValue @Internal constructor(
}
open val description: @NlsSafe String
get() = keyDescriptor?.description ?: resolveNotRequiredValue(key = "$key.description", defaultValue = "")!!
get() = keyDescriptor?.description ?: resolveNotRequiredValue(key = "$key.description") ?: ""
open fun isRestartRequired(): Boolean {
if (keyDescriptor != null) {
if (keyDescriptor == null) {
return resolveNotRequiredValue(key = "$key.restartRequired").toBoolean()
}
else {
return keyDescriptor.isRestartRequired
}
return resolveNotRequiredValue(key = "$key.restartRequired", defaultValue = "false").toBoolean()
}
open fun isChangedFromDefault(): Boolean = isChangedFromDefault(asString(), registry)
open fun isChangedFromDefault(): Boolean {
return (stringCachedValue ?: resolveNotRequiredValue(key)) != registry.getBundleValueOrNull(key)
}
val pluginId: String?
get() = keyDescriptor?.pluginId
fun isChangedFromDefault(newValue: String, registry: Registry): Boolean {
return newValue != registry.getBundleValueOrNull(key)
}
private fun getAsValue(key: @NonNls String): String? {
if (stringCachedValue == null) {
stringCachedValue = resolveNotRequiredValue(key = key, defaultValue = null)
stringCachedValue = resolveNotRequiredValue(key)
}
return stringCachedValue?.takeIf { it.isNotEmpty() }
}
@Internal
fun resolveNotRequiredValue(key: @NonNls String, defaultValue: String?): String? {
fun resolveNotRequiredValue(key: @NonNls String): String? {
registry.getUserProperties().get(key)?.let {
return it
}
@@ -181,7 +181,7 @@ open class RegistryValue @Internal constructor(
}
checkIsLoaded(key)
return registry.getBundleValueOrNull(key) ?: defaultValue
return registry.getBundleValueOrNull(key)
}
@Throws(MissingResourceException::class)
@@ -236,7 +236,7 @@ open class RegistryValue @Internal constructor(
listener.afterValueChanged(this)
}
if (!isRestartRequired() && resolveNotRequiredValue(key = key, defaultValue = null) == registry.getBundleValueOrNull(key)) {
if (!isRestartRequired() && resolveNotRequiredValue(key) == registry.getBundleValueOrNull(key)) {
registry.getUserProperties().remove(key)
}

View File

@@ -149,7 +149,7 @@ public class RegistryTest {
Registry.Companion.loadState(registryElementFromMap(secondMap), null);
assertEquals(secondValue, Registry.get(key).asString());
RegistryValue newRegistryValue = Registry.get(newKey);
String loadedNewValue = newRegistryValue.resolveNotRequiredValue(newRegistryValue.getKey(), null);
String loadedNewValue = newRegistryValue.resolveNotRequiredValue(newRegistryValue.getKey());
assertNull(loadedNewValue);
assertThat(changedPairs).hasSize(1);
}