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

com.wuba.wsilk.producer.rule.CallRuleSerializer Maven / Gradle / Ivy

package com.wuba.wsilk.producer.rule;

import java.io.File;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.util.Collection;
import java.util.List;

import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;

import com.google.common.collect.Lists;
import com.wuba.wsilk.core.SourceEntityMeta;
import com.wuba.wsilk.core.Support;
import com.wuba.wsilk.core.WsilkConfiguration;
import com.wuba.wsilk.core.serializer.java.AbstractJavaSerializerComposite;

import lombok.Getter;

/**
 * 
 * 通过yaml生成调用规则
 * 
 * @author mindashuang
 */
@Support(value = CallRule.class, order = 1, pkgInlcudeSuffix = true, parentPkg = true, suffix = "Rule")
public class CallRuleSerializer extends AbstractJavaSerializerComposite {

	@Getter
	private List createSerializers = Lists.newArrayList();

	public CallRuleSerializer(WsilkConfiguration conf, Class annClass) {
		super(conf, annClass);
	}

	/**
	 * 收集所有所有组件
	 */
	@Override
	public void serialize(SourceEntityMeta em) {
		/** 获得代码路径 */
		File path = getParentPath(em);
		Collection files = FileUtils.listFiles(path, new String[] { "rule" }, false);
		for (File file : files) {
			try {
				List lines = FileUtils.readLines(file, getConfiguration().getCharset());
				CreateSerializer createSerializer = new CreateSerializer(getConfiguration(), getAnnotationClass(),
						this);
				String bundleName = FilenameUtils.getBaseName(file.getName());
				createSerializer.setName(bundleName);
				createSerializer.setLines(lines);
				createSerializers.add(createSerializer);
			} catch (IOException e) {
				e.printStackTrace();
			}
		}

		int size = createSerializers.size();

		for (int i = 0; i < size; i++) {
			createSerializers.get(i).serialize(context(em, i, size));
		}

	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy