package com.jivesoftware.os.amza.ui.soy;
import com.google.common.collect.Lists;
import com.jivesoftware.os.amza.ui.region.ChromeRegion;
import com.jivesoftware.os.amza.ui.region.HeaderRegion;
import com.jivesoftware.os.amza.ui.region.HomeRegion.HomeInput;
import com.jivesoftware.os.amza.ui.region.ManagePlugin;
import com.jivesoftware.os.amza.ui.region.PageRegion;
import java.util.List;
/**
*
*/
public class SoyService {
private final SoyRenderer renderer;
private final HeaderRegion headerRegion;
private final PageRegion<HomeInput> homeRegion;
private final List<ManagePlugin> plugins = Lists.newCopyOnWriteArrayList();
public SoyService(
SoyRenderer renderer,
HeaderRegion headerRegion,
PageRegion<HomeInput> homeRegion
) {
this.renderer = renderer;
this.headerRegion = headerRegion;
this.homeRegion = homeRegion;
}
public String render(String amzaJarWGetURL, String amzaClusterName) {
return chrome(homeRegion).render(new HomeInput(amzaJarWGetURL, amzaClusterName));
}
public void registerPlugin(ManagePlugin plugin) {
plugins.add(plugin);
}
private <I, R extends PageRegion<I>> ChromeRegion<I, R> chrome(R region) {
return new ChromeRegion<>("soy.chrome.chromeRegion", renderer, headerRegion, plugins, region);
}
public <I> String renderPlugin(PageRegion<I> pluginRegion, I input) {
return chrome(pluginRegion).render(input);
}
}