package ru.foror.articles.tapestry.blog.ioc; import org.apache.tapestry5.hibernate.HibernateConfigurer; import org.apache.tapestry5.ioc.OrderedConfiguration; import org.apache.tapestry5.ioc.ServiceBinder; import org.apache.tapestry5.ioc.annotations.Inject; import org.hibernate.cfg.Configuration; import org.hibernate.event.DeleteEventListener; import org.hibernate.event.def.DefaultDeleteEventListener; import ru.foror.articles.common.operations.IProductionOperations; import ru.foror.articles.common.operations.ITagOperations; import ru.foror.articles.tapestry.blog.events.DeleteArticle; import ru.foror.articles.tapestry.blog.operations.IAccountOperations; import ru.foror.articles.tapestry.blog.operations.IArticleOperations; import ru.foror.articles.tapestry.blog.operations.impl.AccountOperations; import ru.foror.articles.tapestry.blog.operations.impl.ArticleOperations; import ru.foror.articles.tapestry.blog.operations.impl.ProductionOperations; /** * Модуль системы для IoC движка Tapestry. * * @author Alexey Pomogaev foror@mail.ru */ public class Module { /** * Дополнительная конфигурация Hibernate к Tapestry Hibernate. */ public static void contributeHibernateSessionSource( OrderedConfiguration config, @Inject final ITagOperations tagOp) { config.add("DeleteEventContrb", new HibernateConfigurer() { public void configure(Configuration configuration) { DeleteEventListener[] stack = {new DeleteArticle(tagOp), new DefaultDeleteEventListener()}; configuration.getEventListeners().setDeleteEventListeners(stack); } }); } public static void contributeHibernateEntityPackageManager( org.apache.tapestry5.ioc.Configuration configuration) { configuration.add("ru.foror.articles.tapestry.blog.domain"); } public static void bind(ServiceBinder binder) { binder.bind(IAccountOperations.class, AccountOperations.class); binder.bind(IArticleOperations.class, ArticleOperations.class); binder.bind(IProductionOperations.class, ProductionOperations.class); } }