
com.webapp.utils.thrift.builder.ThriftStructBuilder Maven / Gradle / Ivy
The newest version!
package com.webapp.utils.thrift.builder;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.List;
import com.webapp.utils.thrift.Generic;
import com.webapp.utils.thrift.ThriftEnum;
import com.webapp.utils.thrift.ThriftEnumField;
import com.webapp.utils.thrift.ThriftField;
import com.webapp.utils.thrift.ThriftStruct;
import com.webapp.utils.thrift.ThriftType;
public class ThriftStructBuilder {
ThriftFieldBuilder thriftFieldBuilder = new ThriftFieldBuilder();
public ThriftStruct buildThriftStruct(Class> clazz, List structs, List enums) {
Field[] fields = clazz.getDeclaredFields();
ThriftStruct struct = new ThriftStruct();
List thriftFields = new ArrayList();
for (Field field : fields) {
ThriftField thriftField = thriftFieldBuilder.buildThriftField(this, field, structs, enums);
if(thriftField == null) {
continue;
}
thriftFields.add(thriftField);
}
struct.setName(clazz.getSimpleName());
struct.setFields(thriftFields);
return struct;
}
/**
* @param structs
* @param generic
*/
public void buildStrutsByGeneric(List structs,
Generic generic, List enums) {
List thriftTypes = generic.getTypes();
for (ThriftType subThriftType : thriftTypes) {
if(subThriftType.isStruct()) {
buildThriftStruct(subThriftType.getJavaClass(), structs, enums);
}
if(subThriftType instanceof Generic) {
this.buildStrutsByGeneric(structs, (Generic) subThriftType, enums);
}
}
}
public ThriftEnum buildThriftEnum(Class> clazz) {
Field[] fields = clazz.getDeclaredFields();
ThriftEnum thriftEnum = new ThriftEnum();
thriftEnum.setName(clazz.getSimpleName());
List nameValues = new ArrayList();
for (int i = 0;i < fields.length;i ++) {
Field field = fields[i];
if(field.getName().equals("ENUM$VALUES") || field.getName().equals("__PARANAMER_DATA")) {
continue;
}
ThriftEnumField nameValue = new ThriftEnumField(field.getName(), i);
nameValues.add(nameValue);
}
thriftEnum.setFields(nameValues);
return thriftEnum;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy