|
|
|
@ -17,13 +17,18 @@ package org.thingsboard.server.edqs.util; |
|
|
|
|
|
|
|
import com.fasterxml.jackson.annotation.JsonAutoDetect; |
|
|
|
import com.fasterxml.jackson.annotation.PropertyAccessor; |
|
|
|
import com.fasterxml.jackson.core.JsonParser; |
|
|
|
import com.fasterxml.jackson.databind.DeserializationContext; |
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper; |
|
|
|
import com.fasterxml.jackson.databind.deser.std.StdDeserializer; |
|
|
|
import com.fasterxml.jackson.databind.json.JsonMapper; |
|
|
|
import com.fasterxml.jackson.databind.module.SimpleModule; |
|
|
|
import com.google.protobuf.ByteString; |
|
|
|
import lombok.RequiredArgsConstructor; |
|
|
|
import lombok.SneakyThrows; |
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
import org.thingsboard.common.util.TbStringPool; |
|
|
|
import org.thingsboard.server.common.data.AttributeScope; |
|
|
|
import org.thingsboard.server.common.data.EntityType; |
|
|
|
import org.thingsboard.server.common.data.ObjectType; |
|
|
|
@ -49,6 +54,7 @@ import org.thingsboard.server.gen.transport.TransportProtos; |
|
|
|
import org.thingsboard.server.gen.transport.TransportProtos.DataPointProto; |
|
|
|
import org.xerial.snappy.Snappy; |
|
|
|
|
|
|
|
import java.io.IOException; |
|
|
|
import java.util.HashMap; |
|
|
|
import java.util.Map; |
|
|
|
import java.util.UUID; |
|
|
|
@ -188,14 +194,6 @@ public class EdqsConverter { |
|
|
|
return edqsEntity; |
|
|
|
} |
|
|
|
|
|
|
|
public EdqsObject check(ObjectType type, Object object) { |
|
|
|
if (object instanceof EdqsObject edqsObject) { |
|
|
|
return edqsObject; |
|
|
|
} else { |
|
|
|
return toEntity(type.toEntityType(), object); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
@SneakyThrows |
|
|
|
public <T extends EdqsObject> byte[] serialize(ObjectType type, T value) { |
|
|
|
@ -220,12 +218,18 @@ public class EdqsConverter { |
|
|
|
@RequiredArgsConstructor |
|
|
|
private static class JsonConverter<T> implements Converter<T> { |
|
|
|
|
|
|
|
private static final SimpleModule module = new SimpleModule(); |
|
|
|
private static final ObjectMapper mapper = JsonMapper.builder() |
|
|
|
.visibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY) |
|
|
|
.visibility(PropertyAccessor.GETTER, JsonAutoDetect.Visibility.NONE) |
|
|
|
.visibility(PropertyAccessor.IS_GETTER, JsonAutoDetect.Visibility.NONE) |
|
|
|
.build(); |
|
|
|
|
|
|
|
static { |
|
|
|
module.addDeserializer(String.class, new InterningStringDeserializer()); |
|
|
|
mapper.registerModule(module); |
|
|
|
} |
|
|
|
|
|
|
|
private final Class<T> type; |
|
|
|
|
|
|
|
@SneakyThrows |
|
|
|
@ -250,4 +254,17 @@ public class EdqsConverter { |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
public static class InterningStringDeserializer extends StdDeserializer<String> { |
|
|
|
|
|
|
|
public InterningStringDeserializer() { |
|
|
|
super(String.class); |
|
|
|
} |
|
|
|
|
|
|
|
@Override |
|
|
|
public String deserialize(JsonParser p, DeserializationContext ctx) throws IOException { |
|
|
|
return TbStringPool.intern(p.getText()); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|