chore(config-core): lift up logic for loadFromJson and writeTo

This commit is contained in:
Johannes Frohnmeyer 2024-05-10 09:03:39 +02:00
parent 78bcde1b86
commit dddda8b92a
Signed by: Johannes
GPG Key ID: E76429612C2929F4
2 changed files with 16 additions and 21 deletions

View File

@ -7,6 +7,7 @@ import io.gitlab.jfronny.commons.serialize.databind.api.TypeToken;
import io.gitlab.jfronny.libjf.LibJf;
import io.gitlab.jfronny.libjf.config.api.v2.type.Type;
import io.gitlab.jfronny.libjf.config.impl.dsl.DslEntryInfo;
import io.gitlab.jfronny.libjf.config.impl.dsl.NothingSerializedException;
import io.gitlab.jfronny.libjf.config.impl.entrypoint.JfConfigSafe;
import org.jetbrains.annotations.ApiStatus;
@ -75,13 +76,26 @@ public interface EntryInfo<T> {
* Set this entry's value to that of the element
* @param reader The reader to read from
*/
<TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> void loadFromJson(Reader reader) throws TEx, IllegalAccessException;
default <TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> void loadFromJson(Reader reader) throws TEx, IllegalAccessException {
try {
setValue(deserializeOneFrom(reader));
} catch (MalformedDataException e) {
LibJf.LOGGER.error("Could not read " + getName(), e);
} catch (NothingSerializedException ignored) {
}
}
/**
* Write the currently cached value to the writer
* @param writer The writer to write to
*/
<TEx extends Exception, Writer extends SerializeWriter<TEx, Writer>> void writeTo(Writer writer, String translationPrefix) throws TEx, IllegalAccessException;
default <TEx extends Exception, Writer extends SerializeWriter<TEx, Writer>> void writeTo(Writer writer, String translationPrefix) throws TEx, IllegalAccessException {
try {
serializeOneTo(getValue(), translationPrefix, writer);
} catch (MalformedDataException e) {
LibJf.LOGGER.error("Could not write " + getName(), e);
}
}
default <TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> T deserializeOneFrom(Reader reader) throws TEx, MalformedDataException {
return LibJf.MAPPER.getAdapter(getTypeToken()).deserialize(reader);

View File

@ -128,16 +128,6 @@ public class DslEntryInfo<T> implements EntryInfo<T> {
}
}
@Override
public <TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> void loadFromJson(Reader reader) throws TEx, IllegalAccessException {
try {
setValue(deserializeOneFrom(reader));
} catch (MalformedDataException e) {
LibJf.LOGGER.error("Could not read " + name, e);
} catch (NothingSerializedException ignored) {
}
}
@Override
public <TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> T deserializeOneFrom(Reader reader) throws TEx, MalformedDataException {
var next = reader.peek();
@ -183,15 +173,6 @@ public class DslEntryInfo<T> implements EntryInfo<T> {
return (T) object;
}
@Override
public <TEx extends Exception, Writer extends SerializeWriter<TEx, Writer>> void writeTo(Writer writer, String translationPrefix) throws TEx, IllegalAccessException {
try {
serializeOneTo(getValue(), translationPrefix, writer);
} catch (MalformedDataException e) {
LibJf.LOGGER.error("Could not write " + getName(), e);
}
}
@Override
public int getWidth() {
return width;