Last active
December 16, 2015 22:49
-
-
Save christiangoudreau/5509653 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public abstract class AbstractVelocityGenerator { | |
private final static String IMPL_NAME = "implName"; | |
private final static String PACKAGE_NAME = "packageName"; | |
private final static String ENCODING = "UTF-8"; | |
private final Provider<VelocityContext> velocityContextProvider; | |
private final VelocityEngine velocityEngine; | |
private final GeneratorUtil generatorUtil; | |
protected AbstractVelocityGenerator(Provider<VelocityContext> velocityContextProvider, | |
VelocityEngine velocityEngine, | |
GeneratorUtil generatorUtil) { | |
this.velocityContextProvider = velocityContextProvider; | |
this.velocityEngine = velocityEngine; | |
this.generatorUtil = generatorUtil; | |
} | |
public GeneratorUtil getGeneratorUtil() { | |
return generatorUtil; | |
} | |
protected void mergeTemplate(PrintWriter printWriter, | |
String velocityTemplate, | |
JClassType descriptor, | |
String implName, | |
String packageName) throws Exception { | |
VelocityContext velocityContext = velocityContextProvider.get(); | |
velocityContext.put(IMPL_NAME, implName); | |
velocityContext.put(PACKAGE_NAME, packageName); | |
populateVelocityContext(velocityContext, descriptor); | |
velocityEngine.mergeTemplate(velocityTemplate, ENCODING, velocityContext, printWriter); | |
generatorUtil.closeDefinition(printWriter); | |
} | |
protected abstract void populateVelocityContext(VelocityContext velocityContext, | |
JClassType descriptor) throws UnableToCompleteException; | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class VelocityColumnsInitializerGenerator extends AbstractVelocityGenerator { | |
private static final String VELOCITY_TEMPLATE = "com/gwtplatform/carstore/rebind/ColumnsInitializer.vm"; | |
private static final String SUFFIX = "Impl"; | |
@Inject | |
protected VelocityColumnsInitializerGenerator(Provider<VelocityContext> velocityContextProvider, | |
VelocityEngine velocityEngine, | |
GeneratorUtil generatorUtil) { | |
super(velocityContextProvider, velocityEngine, generatorUtil); | |
} | |
@Override | |
protected void populateVelocityContext(VelocityContext velocityContext, | |
JClassType type) throws UnableToCompleteException { | |
ColumnsInitializerDefinitions columnsInitializerDefinitions = ColumnsInitializerDefinitions.createFrom(type); | |
velocityContext.put("columnsInitializerDefinitions", columnsInitializerDefinitions); | |
} | |
public String generate(JClassType type) throws Exception { | |
String packageName = type.getPackage().getName(); | |
String implName = type.getName() + SUFFIX; | |
PrintWriter printWriter = getGeneratorUtil().tryCreatePrintWriter(packageName, implName); | |
if (printWriter != null) { | |
mergeTemplate(printWriter, VELOCITY_TEMPLATE, type, type.getName(), packageName); | |
} | |
return packageName + "." + implName; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment