All Downloads are FREE. Search and download functionalities are using the official Maven repository.

xapi.ui.html.impl.HtmlRenderer Maven / Gradle / Ivy

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);
      }
    };
  }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy