xapi.ui.html.impl.HtmlRenderer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of xapi-core-ui-html Show documentation
Show all versions of xapi-core-ui-html Show documentation
The core API for generating html from data models.
The newest version!
package xapi.ui.html.impl;
import javax.inject.Provider;
import xapi.collect.X_Collect;
import xapi.collect.api.StringTo;
import xapi.ui.api.StyleService;
import xapi.ui.html.X_Html;
import xapi.ui.html.api.HtmlSnippet;
import xapi.util.api.ConvertsValue;
import xapi.util.impl.LazyProvider;
public class HtmlRenderer {
@SuppressWarnings("unchecked")
private StringTo> map = X_Collect.newStringMap(
Class.class.cast(ConvertsValue.class)
);
@SuppressWarnings("unchecked")
public ConvertsValue getRenderer(Class type, StyleService> context) {
ConvertsValue converter = (ConvertsValue) map.get(type.getName());
if (converter == null) {
converter = buildConverter(type, context);
map.put(type.getName(), converter);
}
return converter;
}
protected ConvertsValue buildConverter(final Class type, final StyleService> context) {
final Provider> snippet =
new LazyProvider<>(new Provider>() {
@Override
public HtmlSnippet get() {
return X_Html.toSnippet(type, context);
}
});
return new ConvertsValue(){
@Override
public String convert(T from) {
return snippet.get().convert(from);
}
};
}
}