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

com.wuba.wsilk.producer.singleton.CreateSerializer Maven / Gradle / Ivy

package com.wuba.wsilk.producer.singleton;

import java.io.IOException;
import java.lang.annotation.Annotation;

import org.apache.commons.lang3.StringUtils;

import com.wuba.wsilk.codegen.AnnotationMapValue;
import com.wuba.wsilk.codegen.JavaWriter;
import com.wuba.wsilk.codegen.Modifier;
import com.wuba.wsilk.codegen.model.Type;
import com.wuba.wsilk.core.NoGenericException;
import com.wuba.wsilk.core.SourceEntityMeta;
import com.wuba.wsilk.core.WsilkConfiguration;
import com.wuba.wsilk.core.serializer.java.AbstractJavaSerializerDecorator;

import lombok.Getter;

/**
 * 
 * 创建规则
 * 
 * @author mindashuang
 */
public class CreateSerializer
		extends AbstractJavaSerializerDecorator {

	@Getter
	private AnnotationMapValue annotationMapValue;

	public final static String NAME = "INSTANCE";

	public final static String GET_NAME = "getInstance";

	public CreateSerializer(WsilkConfiguration conf, Class annClass, SingletonsSerializer parent,
			AnnotationMapValue annotationMapValue) {
		super(conf, annClass, parent);
		this.annotationMapValue = annotationMapValue;
	}

	@Override
	public SourceEntityMeta init(SourceEntityMeta em) throws NoGenericException {
		String name = getName();
		// 更新javaName的名字
		em.setJavaName(em.getSimpleName() + (name == null ? "" : name) + getSupport().suffix());
		return super.init(em);
	}

	public String getName() {
		String name = annotationMapValue.string("name");
		if (StringUtils.isEmpty(name)) {
			name = defaultName();
		}
		return name;
	}

	public String defaultName() {
		return "";
	}

	@Override
	public Type getSuperClass(SourceEntityMeta t) throws IOException {
		return t.getOriginal();
	}

	@Override
	public void constructors(JavaWriter writer, SourceEntityMeta em) throws IOException {
		writer.beginConstructor(Modifier.Field.PRIVATE);
		writer.end();
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy