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

com.webapp.utils.thrift.builder.ThriftFileBuilder Maven / Gradle / Ivy

The newest version!
/**
 *
 */
package com.webapp.utils.thrift.builder;

import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.webapp.utils.thrift.ThriftEnum;
import com.webapp.utils.thrift.ThriftService;
import com.webapp.utils.thrift.ThriftStruct;
import com.webapp.utils.thrift.utils.CommonUtils;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.Version;

public class ThriftFileBuilder {

	public String getPackageName(Class commonServiceClass) {
		String packageName = commonServiceClass.getPackage().getName();
		return packageName + ".thrift";
	}

	public void buildToOutputStream(Class commonServiceClass, OutputStream os) throws Exception {
		Configuration cfg = new Configuration(new Version("freemarker"));
		cfg.setClassForTemplateLoading(ThriftFileBuilder.class, "/");
		Template template = cfg.getTemplate("thrift.ftl");
		Writer out = new OutputStreamWriter(os);

		ThriftServiceBuilder serviceBuilder = new ThriftServiceBuilder(commonServiceClass);
		ThriftService service = serviceBuilder.buildThriftService();

		Map rootMap = new HashMap<>();
		rootMap.put("thriftServicePackage", this.getPackageName(commonServiceClass));
		List structs = serviceBuilder.getStructs();
		List enums = serviceBuilder.getEnums();
		CommonUtils.removeRepeat(structs);
		rootMap.put("structList", structs);
		rootMap.put("enumList", enums);
		CommonUtils.removeRepeat(enums);
		rootMap.put("serviceList", Arrays.asList(service));

		template.process(rootMap, out);
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy