package pl.matisoft.soy.ajax.config; import com.google.common.collect.Lists; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Import; import pl.matisoft.soy.ajax.SoyAjaxController; import pl.matisoft.soy.ajax.auth.AuthManager; import pl.matisoft.soy.ajax.auth.PermissableAuthManager; import pl.matisoft.soy.ajax.hash.HashFileGenerator; import pl.matisoft.soy.ajax.hash.MD5HashFileGenerator; import pl.matisoft.soy.ajax.process.OutputProcessor; import pl.matisoft.soy.ajax.process.google.GoogleClosureOutputProcessor; import pl.matisoft.soy.ajax.url.DefaultTemplateUrlComposer; import pl.matisoft.soy.ajax.url.TemplateUrlComposer; import pl.matisoft.soy.bundle.SoyMsgBundleResolver; import pl.matisoft.soy.compile.TofuCompiler; import pl.matisoft.soy.config.SpringSoyViewBaseConfig; import pl.matisoft.soy.locale.LocaleProvider; import pl.matisoft.soy.template.TemplateFilesResolver; /** * Created with IntelliJ IDEA. * User: mati * Date: 12/11/2013 * Time: 22:15 */ @Configuration @Import(SpringSoyViewBaseConfig.class) public class SpringSoyViewAjaxConfig { @Value("${soy.hot.reload.mode:false}") private boolean hotReloadMode; @Value("${soy.site.url:}") private String siteUrl; @Value("${soy.encoding:utf-8}") private String encoding; @Value("${soy.cache.busting.cache.control:public, max-age=86400}") //one year private String cacheControl; @Bean public HashFileGenerator soyMd5HashFileGenerator() { final MD5HashFileGenerator md5HashFileGenerator = new MD5HashFileGenerator(); md5HashFileGenerator.setHotReloadMode(hotReloadMode); return md5HashFileGenerator; } @Bean public TemplateUrlComposer soyTemplateUrlComposer(final HashFileGenerator hashFileGenerator, final TemplateFilesResolver templateFilesResolver) { final DefaultTemplateUrlComposer defaultTemplateUrlComposer = new DefaultTemplateUrlComposer(); defaultTemplateUrlComposer.setHashFileGenerator(hashFileGenerator); defaultTemplateUrlComposer.setTemplateFilesResolver(templateFilesResolver); defaultTemplateUrlComposer.setSiteUrl(siteUrl); return defaultTemplateUrlComposer; } @Bean public SoyAjaxController soyAjaxController(final AuthManager authManager, final LocaleProvider localeProvider, final TemplateFilesResolver templateFilesResolver, final TofuCompiler tofuCompiler, final SoyMsgBundleResolver soyMsgBundleResolver) { final GoogleClosureOutputProcessor googleClosureOutputProcessor = new GoogleClosureOutputProcessor(); googleClosureOutputProcessor.setEncoding(encoding); final SoyAjaxController soyAjaxController = new SoyAjaxController(); soyAjaxController.setAuthManager(authManager); soyAjaxController.setEncoding(encoding); soyAjaxController.setHotReloadMode(hotReloadMode); soyAjaxController.setLocaleProvider(localeProvider); soyAjaxController.setOutputProcessors(Lists.<OutputProcessor>newArrayList(googleClosureOutputProcessor)); soyAjaxController.setCacheControl(cacheControl); soyAjaxController.setTemplateFilesResolver(templateFilesResolver); soyAjaxController.setTofuCompiler(tofuCompiler); soyAjaxController.setSoyMsgBundleResolver(soyMsgBundleResolver); return soyAjaxController; } @Bean public AuthManager soyAuthManager() { return new PermissableAuthManager(); } }