package org.distributeme.generator;
import net.anotheria.util.StringUtils;
import javax.annotation.processing.Filer;
import javax.annotation.processing.ProcessingEnvironment;
import javax.lang.model.element.TypeElement;
import javax.tools.JavaFileObject;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
/**
* Generates constants class for rmi service distribution.
*
* @author lrosenberg.
* @version $Id: $Id
*/
public class ConstantsGenerator extends AbstractGenerator implements Generator{
/**
* <p>Constructor for ConstantsGenerator.</p>
*
* @param environment a {@link javax.annotation.processing.ProcessingEnvironment} object.
*/
public ConstantsGenerator(ProcessingEnvironment environment) {
super(environment);
}
/** {@inheritDoc} */
@Override
public void generate(TypeElement type, Filer filer, Map<String,String> options) throws IOException{
JavaFileObject sourceFile = filer.createSourceFile(getPackageName(type)+"."+getConstantsName(type));
PrintWriter writer = new PrintWriter(sourceFile.openWriter());
setWriter(writer);
writePackage(type);
writeAnalyzerComments(type);
emptyline();
writeString("public class "+getConstantsName(type)+"{");
increaseIdent();
emptyline();
writeString("public static final String getServiceId(){");
increaseIdent();
writeStatement("return "+quote(StringUtils.replace(type.getQualifiedName().toString(), '.', '_')));
//writeStatement("this(new "+type.getAnnotation(DistributeMe.class).implName()+"())");
closeBlock("getServiceId");
closeBlock();
writer.flush();
writer.close();
}
}