protobuf
This commit is contained in:
@@ -560,6 +560,32 @@ public abstract class ConvertFactory<R extends Reader, W extends Writer> {
|
|||||||
return readGetSetFieldName((Method) element);
|
return readGetSetFieldName((Method) element);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void sortFieldIndex(final Class clazz, List<AccessibleObject> members) {
|
||||||
|
Collections.sort(members, (o1, o2) -> {
|
||||||
|
ConvertColumnEntry ref1 = findRef(clazz, o1);
|
||||||
|
ConvertColumnEntry ref2 = findRef(clazz, o2);
|
||||||
|
if ((ref1 != null && ref1.getIndex() > 0) || (ref2 != null && ref2.getIndex() > 0)) {
|
||||||
|
int idx1 = ref1 == null ? Integer.MAX_VALUE / 2 : ref1.getIndex();
|
||||||
|
int idx2 = ref2 == null ? Integer.MAX_VALUE / 2 : ref2.getIndex();
|
||||||
|
if (idx1 != idx2) {
|
||||||
|
return idx1 - idx2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
String n1 = ref1 == null || ref1.name().isEmpty() ? readGetSetFieldName(o1) : ref1.name();
|
||||||
|
String n2 = ref2 == null || ref2.name().isEmpty() ? readGetSetFieldName(o2) : ref2.name();
|
||||||
|
if (n1 == null && n2 == null) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (n1 == null) {
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (n2 == null) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return n1.compareTo(n2);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isSimpleMemberType(Class declaringClass, Type type, Class clazz) {
|
public boolean isSimpleMemberType(Class declaringClass, Type type, Class clazz) {
|
||||||
if (type == String.class) {
|
if (type == String.class) {
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -6,10 +6,14 @@
|
|||||||
package org.redkale.convert.json;
|
package org.redkale.convert.json;
|
||||||
|
|
||||||
import java.lang.reflect.*;
|
import java.lang.reflect.*;
|
||||||
import java.lang.reflect.Type;
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import org.redkale.asm.*;
|
import org.redkale.asm.AnnotationVisitor;
|
||||||
|
import org.redkale.asm.ClassWriter;
|
||||||
import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES;
|
import static org.redkale.asm.ClassWriter.COMPUTE_FRAMES;
|
||||||
|
import org.redkale.asm.FieldVisitor;
|
||||||
|
import org.redkale.asm.Label;
|
||||||
|
import org.redkale.asm.MethodVisitor;
|
||||||
|
import org.redkale.asm.Opcodes;
|
||||||
import static org.redkale.asm.Opcodes.*;
|
import static org.redkale.asm.Opcodes.*;
|
||||||
import org.redkale.convert.*;
|
import org.redkale.convert.*;
|
||||||
import org.redkale.convert.ext.*;
|
import org.redkale.convert.ext.*;
|
||||||
@@ -194,29 +198,7 @@ public abstract class JsonDynEncoder<T> implements Encodeable<JsonWriter, T> {
|
|||||||
if (members == null) {
|
if (members == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Collections.sort(members, (o1, o2) -> {
|
factory.sortFieldIndex(clazz, members);
|
||||||
ConvertColumnEntry ref1 = factory.findRef(clazz, o1);
|
|
||||||
ConvertColumnEntry ref2 = factory.findRef(clazz, o2);
|
|
||||||
if ((ref1 != null && ref1.getIndex() > 0) || (ref2 != null && ref2.getIndex() > 0)) {
|
|
||||||
int idx1 = ref1 == null ? Integer.MAX_VALUE / 2 : ref1.getIndex();
|
|
||||||
int idx2 = ref2 == null ? Integer.MAX_VALUE / 2 : ref2.getIndex();
|
|
||||||
if (idx1 != idx2) {
|
|
||||||
return idx1 - idx2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String n1 = ref1 == null || ref1.name().isEmpty() ? factory.readGetSetFieldName(o1) : ref1.name();
|
|
||||||
String n2 = ref2 == null || ref2.name().isEmpty() ? factory.readGetSetFieldName(o2) : ref2.name();
|
|
||||||
if (n1 == null && n2 == null) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (n1 == null) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (n2 == null) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return n1.compareTo(n2);
|
|
||||||
});
|
|
||||||
return generateDyncEncoder(factory, clazz, members);
|
return generateDyncEncoder(factory, clazz, members);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
|
|||||||
@@ -10,31 +10,11 @@ import java.lang.reflect.Method;
|
|||||||
import java.lang.reflect.Modifier;
|
import java.lang.reflect.Modifier;
|
||||||
import java.lang.reflect.Type;
|
import java.lang.reflect.Type;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import org.redkale.convert.ConvertColumnEntry;
|
import org.redkale.convert.*;
|
||||||
import org.redkale.convert.Encodeable;
|
import org.redkale.convert.ext.*;
|
||||||
import org.redkale.convert.ObjectEncoder;
|
|
||||||
import org.redkale.convert.ext.BoolArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.BoolSimpledCoder;
|
|
||||||
import org.redkale.convert.ext.ByteArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.ByteSimpledCoder;
|
|
||||||
import org.redkale.convert.ext.CharArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.CharSimpledCoder;
|
|
||||||
import org.redkale.convert.ext.DoubleArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.DoubleSimpledCoder;
|
|
||||||
import org.redkale.convert.ext.FloatArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.FloatSimpledCoder;
|
|
||||||
import org.redkale.convert.ext.IntArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.IntSimpledCoder;
|
|
||||||
import org.redkale.convert.ext.LongArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.LongSimpledCoder;
|
|
||||||
import org.redkale.convert.ext.ShortArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.ShortSimpledCoder;
|
|
||||||
import org.redkale.convert.ext.StringArraySimpledCoder;
|
|
||||||
import org.redkale.convert.ext.StringSimpledCoder;
|
|
||||||
import org.redkale.util.RedkaleClassLoader;
|
import org.redkale.util.RedkaleClassLoader;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -202,29 +182,7 @@ public abstract class ProtobufDynEncoder<T> implements Encodeable<ProtobufWriter
|
|||||||
if (members == null) {
|
if (members == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
Collections.sort(members, (o1, o2) -> {
|
factory.sortFieldIndex(clazz, members);
|
||||||
ConvertColumnEntry ref1 = factory.findRef(clazz, o1);
|
|
||||||
ConvertColumnEntry ref2 = factory.findRef(clazz, o2);
|
|
||||||
if ((ref1 != null && ref1.getIndex() > 0) || (ref2 != null && ref2.getIndex() > 0)) {
|
|
||||||
int idx1 = ref1 == null ? Integer.MAX_VALUE / 2 : ref1.getIndex();
|
|
||||||
int idx2 = ref2 == null ? Integer.MAX_VALUE / 2 : ref2.getIndex();
|
|
||||||
if (idx1 != idx2) {
|
|
||||||
return idx1 - idx2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
String n1 = ref1 == null || ref1.name().isEmpty() ? factory.readGetSetFieldName(o1) : ref1.name();
|
|
||||||
String n2 = ref2 == null || ref2.name().isEmpty() ? factory.readGetSetFieldName(o2) : ref2.name();
|
|
||||||
if (n1 == null && n2 == null) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
if (n1 == null) {
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
if (n2 == null) {
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
return n1.compareTo(n2);
|
|
||||||
});
|
|
||||||
return generateDyncEncoder(factory, clazz, members);
|
return generateDyncEncoder(factory, clazz, members);
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
ex.printStackTrace();
|
ex.printStackTrace();
|
||||||
|
|||||||
@@ -13,22 +13,22 @@ import org.redkale.convert.json.JsonConvert;
|
|||||||
* @author zhangjx
|
* @author zhangjx
|
||||||
*/
|
*/
|
||||||
public class User {
|
public class User {
|
||||||
@ConvertColumn(index = 1)
|
@ConvertColumn(index = 3)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
@ConvertColumn(index = 2)
|
@ConvertColumn(index = 4)
|
||||||
private String name;
|
private String name;
|
||||||
|
|
||||||
@ConvertColumn(index = 3)
|
@ConvertColumn(index = 5)
|
||||||
private String nickName;
|
private String nickName;
|
||||||
|
|
||||||
@ConvertColumn(index = 4)
|
@ConvertColumn(index = 1)
|
||||||
private Integer age;
|
private Integer age;
|
||||||
|
|
||||||
@ConvertColumn(index = 5)
|
@ConvertColumn(index = 6)
|
||||||
private String sex;
|
private String sex;
|
||||||
|
|
||||||
@ConvertColumn(index = 6)
|
@ConvertColumn(index = 2)
|
||||||
private Date createTime;
|
private Date createTime;
|
||||||
|
|
||||||
public static User create() {
|
public static User create() {
|
||||||
|
|||||||
Reference in New Issue
Block a user