feat(muscript-json): no longer depend on databind
This commit is contained in:
parent
9fa795f18e
commit
aca5f104ec
|
@ -8,11 +8,12 @@ dependencies {
|
|||
implementation(projects.commons)
|
||||
implementation(projects.muscriptDataAdditional)
|
||||
implementation(projects.commonsSerializeJson)
|
||||
implementation(projects.commonsSerializeDatabind)
|
||||
implementation(projects.commonsSerializeDatabindApi)
|
||||
|
||||
testImplementation(libs.junit.jupiter.api)
|
||||
testImplementation(projects.muscriptParser)
|
||||
testImplementation(projects.muscriptRuntime)
|
||||
testImplementation(projects.commonsSerializeDatabind)
|
||||
testRuntimeOnly(libs.junit.jupiter.engine)
|
||||
}
|
||||
|
||||
|
|
|
@ -3,8 +3,6 @@ package io.gitlab.jfronny.muscript.json;
|
|||
import io.gitlab.jfronny.commons.serialize.SerializeReader;
|
||||
import io.gitlab.jfronny.commons.serialize.SerializeWriter;
|
||||
import io.gitlab.jfronny.commons.serialize.Transport;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.DatabindSerializer;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.ObjectMapper;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DFinal;
|
||||
import io.gitlab.jfronny.muscript.data.additional.context.Scope;
|
||||
import io.gitlab.jfronny.muscript.data.additional.libs.IntentionalException;
|
||||
|
@ -12,22 +10,21 @@ import io.gitlab.jfronny.muscript.data.dynamic.DList;
|
|||
import io.gitlab.jfronny.muscript.data.dynamic.DString;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.Dynamic;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.type.DType;
|
||||
|
||||
import java.io.IOException;
|
||||
import io.gitlab.jfronny.muscript.json.impl.DynamicTypeAdapter;
|
||||
|
||||
import static io.gitlab.jfronny.muscript.data.dynamic.type.DSL.*;
|
||||
import static io.gitlab.jfronny.muscript.data.dynamic.type.DSL.BOOL;
|
||||
|
||||
public class TransportLib<TEx extends Throwable, Reader extends SerializeReader<TEx, Reader>, Writer extends SerializeWriter<TEx, Writer>> {
|
||||
private final DatabindSerializer<TEx, Reader, Writer> lenientBackend;
|
||||
private final DatabindSerializer<TEx, Reader, Writer> strictBackend;
|
||||
private final DynamicTypeAdapter adapter = new DynamicTypeAdapter();
|
||||
private final String serializeName;
|
||||
private final String deserializeName;
|
||||
private final Transport<TEx, Reader, Writer> lenientTransport;
|
||||
private final Transport<TEx, Reader, Writer> strictTransport;
|
||||
|
||||
public TransportLib(Transport<TEx, Reader, Writer> lenientTransport, Transport<TEx, Reader, Writer> strictTransport, String serializeName, String deserializeName) {
|
||||
ObjectMapper mapper = new ObjectMapper();
|
||||
this.lenientBackend = new DatabindSerializer<>(lenientTransport, mapper);
|
||||
this.strictBackend = new DatabindSerializer<>(strictTransport, mapper);
|
||||
this.lenientTransport = lenientTransport;
|
||||
this.strictTransport = strictTransport;
|
||||
this.serializeName = serializeName;
|
||||
this.deserializeName = deserializeName;
|
||||
}
|
||||
|
@ -45,8 +42,8 @@ public class TransportLib<TEx extends Throwable, Reader extends SerializeReader<
|
|||
Dynamic source = args.get(0);
|
||||
boolean lenient = args.size() > 1 && args.get(1).asBool().getValue();
|
||||
try {
|
||||
return DFinal.of((lenient ? lenientBackend : strictBackend).serialize(source));
|
||||
} catch (IOException e) {
|
||||
return DFinal.of((lenient ? lenientTransport : strictTransport).write(writer -> adapter.serialize(source, writer)));
|
||||
} catch (Throwable e) {
|
||||
throw new IntentionalException("Could not serialize value: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
@ -58,8 +55,10 @@ public class TransportLib<TEx extends Throwable, Reader extends SerializeReader<
|
|||
String source = args.get(0).asString().getValue();
|
||||
boolean lenient = args.size() > 1 && args.get(1).asBool().getValue();
|
||||
try {
|
||||
return (lenient ? lenientBackend : strictBackend).deserialize(source, Dynamic.class);
|
||||
} catch (IOException e) {
|
||||
try (Reader reader = (lenient ? lenientTransport : strictTransport).createReader(source)) {
|
||||
return adapter.deserialize(reader);
|
||||
}
|
||||
} catch (Throwable e) {
|
||||
throw new IntentionalException("Could not deserialize value: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DDate;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DEnum;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DTime;
|
||||
|
@ -43,6 +43,7 @@ public class DynamicTypeAdapter extends TypeAdapter<Dynamic> {
|
|||
else if (value.isNumber()) dNumber.serialize(value.asNumber(), writer);
|
||||
else if (value.isString()) dString.serialize(value.asString(), writer);
|
||||
else if (value.isCallable()) dCallable.serialize(value.asCallable(), writer);
|
||||
else if (value instanceof DynamicBase base) dynamicBase.serialize(base, writer);
|
||||
else throw new IllegalArgumentException("Unexpected dynamic type for: " + value);
|
||||
}
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl.typed;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DFinal;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.DBool;
|
||||
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl.typed;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.DCallable;
|
||||
|
||||
@SerializerFor(targets = DCallable.class, hierarchical = true)
|
||||
|
|
|
@ -4,8 +4,8 @@ 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.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DFinal;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.DList;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.Dynamic;
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl.typed;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.DNull;
|
||||
|
||||
@SerializerFor(targets = DNull.class, hierarchical = true)
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl.typed;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DFinal;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.DNumber;
|
||||
|
||||
|
|
|
@ -4,8 +4,8 @@ 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.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DFinal;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.DObject;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.Dynamic;
|
||||
|
|
|
@ -4,8 +4,8 @@ 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.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DFinal;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.DString;
|
||||
import io.gitlab.jfronny.muscript.json.impl.DynamicTypeAdapterHolder;
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl.typed;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.dynamic.DynamicBase;
|
||||
|
||||
@SerializerFor(targets = DynamicBase.class, hierarchical = true)
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl.typed.additional;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DDate;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl.typed.additional;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DEnum;
|
||||
|
||||
@SerializerFor(targets = DEnum.class, hierarchical = true)
|
||||
|
|
|
@ -3,8 +3,8 @@ package io.gitlab.jfronny.muscript.json.impl.typed.additional;
|
|||
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.databind.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.TypeAdapter;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.SerializerFor;
|
||||
import io.gitlab.jfronny.commons.serialize.databind.api.TypeAdapter;
|
||||
import io.gitlab.jfronny.muscript.data.additional.DTime;
|
||||
|
||||
import java.time.LocalTime;
|
||||
|
|
|
@ -3,7 +3,7 @@ module io.gitlab.jfronny.commons.muscript.json {
|
|||
requires io.gitlab.jfronny.commons.muscript.data.additional;
|
||||
requires io.gitlab.jfronny.commons.muscript.data;
|
||||
requires io.gitlab.jfronny.commons.serialize.json;
|
||||
requires io.gitlab.jfronny.commons.serialize.databind;
|
||||
requires io.gitlab.jfronny.commons.serialize;
|
||||
requires io.gitlab.jfronny.commons.serialize.databind.api;
|
||||
exports io.gitlab.jfronny.muscript.json;
|
||||
}
|
Loading…
Reference in New Issue