ref[protocol]: refactor field method

This commit is contained in:
godotg
2024-07-15 15:11:25 +08:00
parent 8dd5ddbe3d
commit 12c5a2d50d
15 changed files with 19 additions and 17 deletions
@@ -279,8 +279,10 @@ public class CodeGenerateKotlin implements ICodeGenerate {
for (var fieldNote : fieldNotes) {
ktBuilder.append(fieldNote).append(LS);
}
var pair = ktSerializer(fieldRegistration.serializer()).fieldTypeValue(field, fieldRegistration);
ktBuilder.append(StringUtils.format("var {}: {} = {}", fieldName, pair.getKey(), pair.getValue())).append(LS);
var fieldTypeDefaultValue = ktSerializer(fieldRegistration.serializer()).fieldTypeDefaultValue(field, fieldRegistration);
var fieldType = fieldTypeDefaultValue.getKey();
var fieldDefaultValue = fieldTypeDefaultValue.getValue();
ktBuilder.append(StringUtils.format("var {}: {} = {}", fieldName, fieldType, fieldDefaultValue)).append(LS);
}
return ktBuilder.toString();
}
@@ -25,7 +25,7 @@ public interface IKtSerializer {
/**
* 获取属性的类型,默认值
*/
Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration);
Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration);
void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration);
@@ -31,7 +31,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtArraySerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
var type = StringUtils.format("Array<{}>", CodeGenerateKotlin.toKotlinClassName(field.getType().getComponentType().getSimpleName()));
return new Pair<>(type, "emptyArray()");
}
@@ -84,7 +84,7 @@ public class KtArraySerializer implements IKtSerializer {
builder.append(StringUtils.format("val {} = buffer.readInt()", size)).append(LS);
GenerateProtocolFile.addTab(builder, deep);
var pair = CodeGenerateKotlin.ktSerializer(arrayField.getArrayElementRegistration().serializer()).fieldTypeValue(field, arrayField.getArrayElementRegistration());
var pair = CodeGenerateKotlin.ktSerializer(arrayField.getArrayElementRegistration().serializer()).fieldTypeDefaultValue(field, arrayField.getArrayElementRegistration());
var defaultValue = pair.getValue();
if (defaultValue.equals("null")) {
defaultValue = StringUtils.format("{}()", typeName);
@@ -28,7 +28,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtBoolSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
return new Pair<>("Boolean", "false");
}
@@ -28,7 +28,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtByteSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
return new Pair<>("Byte", "0");
}
@@ -28,7 +28,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtDoubleSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
return new Pair<>("Double", "0.0");
}
@@ -28,7 +28,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtFloatSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
return new Pair<>("Float", "0f");
}
@@ -28,7 +28,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtIntSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
return new Pair<>("Int", "0");
}
@@ -31,7 +31,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtListSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
var type = StringUtils.format("{}", CodeGenerateKotlin.toKotlinClassName(field.getGenericType().toString()));
return new Pair<>(type, "emptyList()");
}
@@ -28,7 +28,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtLongSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
return new Pair<>("Long", "0");
}
@@ -31,7 +31,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtMapSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
var type = StringUtils.format("{}", CodeGenerateKotlin.toKotlinClassName(field.getGenericType().toString()));
return new Pair<>(type, "emptyMap()");
}
@@ -31,7 +31,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtObjectProtocolSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
ObjectProtocolField objectProtocolField = (ObjectProtocolField) fieldRegistration;
var protocolSimpleName = EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(objectProtocolField.getProtocolId());
var type = StringUtils.format("{}?", protocolSimpleName);
@@ -31,7 +31,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtSetSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
var type = StringUtils.format("{}", CodeGenerateKotlin.toKotlinClassName(field.getGenericType().toString()));
return new Pair<>(type, "emptySet()");
}
@@ -28,7 +28,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtShortSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
return new Pair<>("Short", "0");
}
@@ -28,7 +28,7 @@ import static com.zfoo.protocol.util.FileUtils.LS;
public class KtStringSerializer implements IKtSerializer {
@Override
public Pair<String, String> fieldTypeValue(Field field, IFieldRegistration fieldRegistration) {
public Pair<String, String> fieldTypeDefaultValue(Field field, IFieldRegistration fieldRegistration) {
return new Pair<>("String", "\"\"");
}