package org.dresdenocl.tools.template;
import java.util.List;
import org.dresdenocl.tools.template.event.ITemplateEngineRegistryListener;
import org.dresdenocl.tools.template.exception.TemplateException;
/**
* <p>
* The {@link ITemplateEngineRegistry} manages a list of {@link ITemplateEngine}
* s that are currently available.
* </p>
*
* @author Bjoern Freitag
*
*/
public interface ITemplateEngineRegistry {
/**
* <p>
* Adds or Replace an {@link ITemplateEngine} to this
* {@link ITemplateEngineRegistry}.
* </p>
*
* @param templateEngine
* The {@link ITemplateEngine} that shall be added.
*
* @throws TemplateException
* if the templateEngine is null
*/
public void addTemplateEngine(ITemplateEngine templateEngine)
throws TemplateException;
/**
* <p>
* Returns a new instance of the {@link ITemplateEngine} with the given name.
* </p>
*
* @param templateEngineName
* An identifier name for an {@link ITemplateEngine}.
*
* @return A new {@link ITemplateEngine} instance.
* @throws TemplateException
* if no engine exists with this name.
*/
public ITemplateEngine getNewTemplateEngine(String templateEngineName)
throws TemplateException;
/**
* <p>
* Removes an {@link ITemplateEngine} from this
* {@link ITemplateEngineRegistry}.
* </p>
*
* @param templateEngine
* The {@link ITemplateEngine} that shall be removed.
*/
public void removeTemplateEngine(ITemplateEngine templateEngine);
/**
* <p>
* Removes an {@link ITemplateEngine} from this
* {@link ITemplateEngineRegistry}.
* </p>
*
* @param templateEngineName
* An identifier name for an {@link ITemplateEngine}.
*/
public void removeTemplateEngine(String templateEngineName);
/**
* <p>
* Disposes the {@link ITemplateEngineRegistry}.
* </p>
*/
public void dispose();
/**
* Returns a list of all {@link ITemplateEngine}s back.
*
* @return a List of all {@link ITemplateEngine}s.
*/
public List<ITemplateEngine> getTemplateEngines();
/**
* <p>
* Adds an {@link ITemplateEngineRegistryListener} to this
* {@link ITemplateEngineRegistry}.
* </p>
*
* @param listener
* The {@link ITemplateEngineRegistryListener} to be added.
*/
void addTemplateEngineRegistryListener(
ITemplateEngineRegistryListener listener);
/**
* <p>
* Removes an {@link ITemplateEngineRegistryListener} from this
* {@link ITemplateEngineRegistry}.
* </p>
*
* @param listener
* The {@link ITemplateEngineRegistryListener} to be removed.
*/
void removeTemplateEngineRegistryListener(
ITemplateEngineRegistryListener listener);
}