Search in sources :

Example 1 with Name

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);
}
Also used : CobiGenRuntimeException(com.devonfw.cobigen.api.exception.CobiGenRuntimeException) TextTemplateEngine(com.devonfw.cobigen.api.extension.TextTemplateEngine) Name(com.devonfw.cobigen.api.annotation.Name)

Aggregations

Name (com.devonfw.cobigen.api.annotation.Name)1 CobiGenRuntimeException (com.devonfw.cobigen.api.exception.CobiGenRuntimeException)1 TextTemplateEngine (com.devonfw.cobigen.api.extension.TextTemplateEngine)1