38 lines
1.6 KiB
Java
38 lines
1.6 KiB
Java
package io.gitlab.jfronny.respackopts.gson.entry;
|
|
|
|
import io.gitlab.jfronny.commons.serialize.MalformedDataException;
|
|
import io.gitlab.jfronny.commons.serialize.SerializeReader;
|
|
import io.gitlab.jfronny.commons.serialize.SerializeWriter;
|
|
import io.gitlab.jfronny.commons.serialize.Token;
|
|
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
|
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
|
import io.gitlab.jfronny.respackopts.model.tree.*;
|
|
|
|
import java.util.Map;
|
|
|
|
@SerializerFor(targets = ConfigBranch.class)
|
|
public class ConfigBranchSerializer extends TypeAdapter<ConfigBranch> {
|
|
@Override
|
|
public <TEx extends Exception, Writer extends SerializeWriter<TEx, Writer>> void serialize(ConfigBranch configBranch, Writer writer) throws TEx, MalformedDataException {
|
|
writer.beginObject();
|
|
for (Map.Entry<String, ConfigEntry<?>> entry : configBranch.getValue().entrySet()) {
|
|
writer.name(entry.getKey());
|
|
GC_ConfigEntry.serialize(entry.getValue(), writer);
|
|
}
|
|
writer.endObject();
|
|
}
|
|
|
|
@Override
|
|
public <TEx extends Exception, Reader extends SerializeReader<TEx, Reader>> ConfigBranch deserialize(Reader reader) throws TEx, MalformedDataException {
|
|
if (reader.peek() != Token.BEGIN_OBJECT) throw new MalformedDataException("ConfigBranch is not an object");
|
|
reader.beginObject();
|
|
ConfigBranch cbNew = new ConfigBranch();
|
|
while (reader.hasNext()) {
|
|
String s = reader.nextName();
|
|
cbNew.add(s, GC_ConfigEntry.deserialize(reader));
|
|
}
|
|
reader.endObject();
|
|
return cbNew;
|
|
}
|
|
}
|