From f9744b8480128cadaf220d2d674251250ff42260 Mon Sep 17 00:00:00 2001 From: redkale Date: Tue, 22 Oct 2024 09:58:10 +0800 Subject: [PATCH] ProtobufAnyDecoder --- .../redkale/convert/json/JsonAnyDecoder.java | 13 +++-- .../convert/pb/ProtobufAnyDecoder.java | 31 ----------- .../convert/pb/ProtobufAnyEncoder.java | 51 ------------------- .../redkale/convert/pb/ProtobufCoders.java | 43 ++++++++++++++++ .../redkale/convert/pb/ProtobufFactory.java | 4 +- 5 files changed, 51 insertions(+), 91 deletions(-) delete mode 100644 src/main/java/org/redkale/convert/pb/ProtobufAnyDecoder.java delete mode 100644 src/main/java/org/redkale/convert/pb/ProtobufAnyEncoder.java diff --git a/src/main/java/org/redkale/convert/json/JsonAnyDecoder.java b/src/main/java/org/redkale/convert/json/JsonAnyDecoder.java index cbc2a1868..4609c1ee4 100644 --- a/src/main/java/org/redkale/convert/json/JsonAnyDecoder.java +++ b/src/main/java/org/redkale/convert/json/JsonAnyDecoder.java @@ -65,14 +65,13 @@ public class JsonAnyDecoder implements Decodeable { JsonReader.ValueType vt = in.readType(); if (vt == null) { return null; + } else if (vt == JsonReader.ValueType.ARRAY) { + return (T) this.collectionDecoder.convertFrom(in); + } else if (vt == JsonReader.ValueType.MAP) { + return (T) this.mapDecoder.convertFrom(in); + } else { + return (T) stringFrom(in); } - switch (vt) { - case ARRAY: - return (T) this.collectionDecoder.convertFrom(in); - case MAP: - return (T) this.mapDecoder.convertFrom(in); - } - return (T) stringFrom(in); } protected T stringFrom(JsonReader in) { diff --git a/src/main/java/org/redkale/convert/pb/ProtobufAnyDecoder.java b/src/main/java/org/redkale/convert/pb/ProtobufAnyDecoder.java deleted file mode 100644 index d7b03ce71..000000000 --- a/src/main/java/org/redkale/convert/pb/ProtobufAnyDecoder.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * Copyright (c) 2016-2116 Redkale - * All rights reserved. - */ -package org.redkale.convert.pb; - -import java.lang.reflect.Type; -import org.redkale.convert.Decodeable; - -/** - * - * @author zhangjx - */ -public class ProtobufAnyDecoder implements Decodeable { - - final ProtobufFactory factory; - - ProtobufAnyDecoder(ProtobufFactory factory) { - this.factory = factory; - } - - @Override - public T convertFrom(ProtobufReader in) { - throw new UnsupportedOperationException("Not supported yet."); - } - - @Override - public Type getType() { - return Object.class; - } -} diff --git a/src/main/java/org/redkale/convert/pb/ProtobufAnyEncoder.java b/src/main/java/org/redkale/convert/pb/ProtobufAnyEncoder.java deleted file mode 100644 index 0a24f35a8..000000000 --- a/src/main/java/org/redkale/convert/pb/ProtobufAnyEncoder.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2016-2116 Redkale - * All rights reserved. - */ -package org.redkale.convert.pb; - -import java.lang.reflect.Type; -import org.redkale.convert.Encodeable; - -/** - * 对不明类型的对象进行序列化; PROTOBUF序列化时将对象的类名写入Writer,JSON则不写入。 - * - *

详情见: https://redkale.org - * - * @author zhangjx - * @param 序列化的泛型类型 - */ -public final class ProtobufAnyEncoder implements Encodeable { - - final ProtobufFactory factory; - - ProtobufAnyEncoder(ProtobufFactory factory) { - this.factory = factory; - } - - @Override - @SuppressWarnings("unchecked") - public void convertTo(final ProtobufWriter out, final T value) { - if (value == null) { - out.writeNull(); - } else { - Class clazz = value.getClass(); - if (clazz == Object.class) { - out.writeObjectB(value); - out.writeObjectE(value); - return; - } - factory.loadEncoder(clazz).convertTo(out, value); - } - } - - @Override - public Type getType() { - return Object.class; - } - - @Override - public boolean specifyable() { - return false; - } -} diff --git a/src/main/java/org/redkale/convert/pb/ProtobufCoders.java b/src/main/java/org/redkale/convert/pb/ProtobufCoders.java index 27e57bbca..faee91d29 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufCoders.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufCoders.java @@ -14,6 +14,8 @@ import java.net.InetSocketAddress; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.atomic.*; +import org.redkale.convert.Decodeable; +import org.redkale.convert.Encodeable; import org.redkale.convert.SimpledCoder; import org.redkale.convert.ext.*; import org.redkale.util.*; @@ -31,6 +33,47 @@ public abstract class ProtobufCoders { // do nothing } + public static class ProtobufAnyDecoder implements Decodeable { + + public static final ProtobufAnyDecoder instance = new ProtobufAnyDecoder(); + + @Override + public T convertFrom(ProtobufReader in) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Type getType() { + return Object.class; + } + } + + public static class ProtobufAnyEncoder + implements Encodeable, ProtobufEncodeable { + + public static final ProtobufAnyEncoder instance = new ProtobufAnyEncoder(); + + @Override + @SuppressWarnings("unchecked") + public void convertTo(final ProtobufWriter out, final T value) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public int computeSize(ProtobufWriter out, int tagSize, T value) { + throw new UnsupportedOperationException("Not supported yet."); + } + + @Override + public Type getType() { + return Object.class; + } + + @Override + public boolean specifyable() { + return false; + } + } // ------------------------------------- boolean ------------------------------------- public static class ProtobufBoolSimpledCoder extends BoolSimpledCoder implements ProtobufPrimitivable, ProtobufEncodeable { diff --git a/src/main/java/org/redkale/convert/pb/ProtobufFactory.java b/src/main/java/org/redkale/convert/pb/ProtobufFactory.java index 4f3c3c421..c2e4f9816 100644 --- a/src/main/java/org/redkale/convert/pb/ProtobufFactory.java +++ b/src/main/java/org/redkale/convert/pb/ProtobufFactory.java @@ -77,8 +77,8 @@ public class ProtobufFactory extends ConvertFactory