All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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