use of com.devonfw.cobigen.api.annotation.Name in project cobigen by devonfw.
the class TemplateEngineRegistry method getEngine.
/**
* Returns a {@link TextTemplateEngine template engine} based on its name.
*
* @param name of the {@link TextTemplateEngine template engine}
* @return the {@link TextTemplateEngine template engine} or {@code null} if no template engine has been registered
* with the name.
*/
public static TextTemplateEngine getEngine(String name) {
TextTemplateEngine templateEngine = registeredEngines.get(name);
if (templateEngine == null) {
for (Class<? extends TextTemplateEngine> engine : ClassServiceLoader.getTemplateEngineClasses()) {
if (engine.isAnnotationPresent(Name.class)) {
Name engineNameAnnotation = engine.getAnnotation(Name.class);
String engineName = engineNameAnnotation.value();
if (name.equals(engineName)) {
register(engine, engineName);
break;
}
} else {
LOG.warn("Template engine '{}' should have a name specified by @Name annotation.", engine.getClass().getCanonicalName());
}
}
}
templateEngine = registeredEngines.get(name);
if (templateEngine == null) {
throw new CobiGenRuntimeException("No template engine with name '" + name + "' registered.");
}
return ProxyFactory.getProxy(templateEngine);
}
Aggregations