feat(default-exts): Only add validation fallback value to comment, if toString() makes sense
This commit is contained in:
@@ -11,6 +11,7 @@ import de.siphalor.tweed5.defaultextensions.validation.api.result.ValidationIssu
|
|||||||
import de.siphalor.tweed5.defaultextensions.validation.api.result.ValidationIssueLevel;
|
import de.siphalor.tweed5.defaultextensions.validation.api.result.ValidationIssueLevel;
|
||||||
import de.siphalor.tweed5.defaultextensions.validation.api.result.ValidationResult;
|
import de.siphalor.tweed5.defaultextensions.validation.api.result.ValidationResult;
|
||||||
import de.siphalor.tweed5.defaultextensions.validationfallback.api.ValidationFallbackExtension;
|
import de.siphalor.tweed5.defaultextensions.validationfallback.api.ValidationFallbackExtension;
|
||||||
|
import de.siphalor.tweed5.patchwork.api.PatchworkPartAccess;
|
||||||
import org.jspecify.annotations.Nullable;
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -20,12 +21,14 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
public class ValidationFallbackExtensionImpl implements ValidationFallbackExtension, ValidationProvidingExtension {
|
public class ValidationFallbackExtensionImpl implements ValidationFallbackExtension, ValidationProvidingExtension {
|
||||||
private final ConfigContainer<?> configContainer;
|
private final ConfigContainer<?> configContainer;
|
||||||
|
private final PatchworkPartAccess<Boolean> hasToStringAccess;
|
||||||
private @Nullable PresetsExtension presetsExtension;
|
private @Nullable PresetsExtension presetsExtension;
|
||||||
|
|
||||||
private String fallbackPresetName = PresetsExtension.DEFAULT_PRESET_NAME;
|
private String fallbackPresetName = PresetsExtension.DEFAULT_PRESET_NAME;
|
||||||
|
|
||||||
public ValidationFallbackExtensionImpl(TweedExtensionSetupContext context, ConfigContainer<?> configContainer) {
|
public ValidationFallbackExtensionImpl(TweedExtensionSetupContext context, ConfigContainer<?> configContainer) {
|
||||||
this.configContainer = configContainer;
|
this.configContainer = configContainer;
|
||||||
|
this.hasToStringAccess = context.registerEntryExtensionData(Boolean.class);
|
||||||
context.registerExtension(PresetsExtension.class);
|
context.registerExtension(PresetsExtension.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -37,6 +40,22 @@ public class ValidationFallbackExtensionImpl implements ValidationFallbackExtens
|
|||||||
return presetsExtension;
|
return presetsExtension;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void initEntry(ConfigEntry<?> configEntry) {
|
||||||
|
configEntry.extensionsData().set(hasToStringAccess, hasCustomToString(configEntry.valueClass()));
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean hasCustomToString(Class<?> clazz) {
|
||||||
|
if (clazz.isPrimitive()) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return clazz.getMethod("toString").getDeclaringClass() != Object.class;
|
||||||
|
} catch (Exception ignored) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void fallbackToPreset(String presetName) {
|
public void fallbackToPreset(String presetName) {
|
||||||
this.fallbackPresetName = presetName;
|
this.fallbackPresetName = presetName;
|
||||||
@@ -104,9 +123,12 @@ public class ValidationFallbackExtensionImpl implements ValidationFallbackExtens
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> String description(ConfigEntry<T> configEntry) {
|
public <T> String description(ConfigEntry<T> configEntry) {
|
||||||
|
if (Boolean.TRUE.equals(configEntry.extensionsData().get(hasToStringAccess))) {
|
||||||
T fallbackValue = getOrResolvePresetsExtension().presetValue(configEntry, fallbackPresetName);
|
T fallbackValue = getOrResolvePresetsExtension().presetValue(configEntry, fallbackPresetName);
|
||||||
return inner.description(configEntry) + "\n\nDefault/Fallback value: " + fallbackValue;
|
return inner.description(configEntry) + "\n\nDefault/Fallback value: " + fallbackValue;
|
||||||
}
|
}
|
||||||
|
return inner.description(configEntry);
|
||||||
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user