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

xapi.elemental.impl.LazyHtmlClone Maven / Gradle / Ivy

package xapi.elemental.impl;

import static xapi.elemental.X_Elemental.toElement;

import javax.inject.Provider;

import xapi.util.api.ConvertsValue;
import xapi.util.impl.ImmutableProvider;
import xapi.util.impl.LazyProvider;
import elemental.dom.Element;

public class LazyHtmlClone  implements Provider {

  private final Provider provider;
  @SuppressWarnings("unchecked" )
  private ConvertsValue converter = ConvertsValue.PASS_THRU;

  public LazyHtmlClone(String html) {
    provider = new LazyProvider(() -> toElement(html));
  }

  public LazyHtmlClone(Provider html) {
    provider = new LazyProvider(() -> {
      String val = html.get();
      return val == null ? null : toElement(val);
    });
  }

  protected E init(E element) {
    return converter.convert(element);
  }

  public LazyHtmlClone setInitializer(ConvertsValue initializer) {
    converter = initializer;
    return this;
  }

  @SuppressWarnings({
      "rawtypes", "unchecked"
  } )
  public LazyHtmlClone(Element e) {
    provider = new ImmutableProvider(e);
  }

  @SuppressWarnings({
    "rawtypes", "unchecked"
  } )
  public LazyHtmlClone(Element e, String backup) {
    provider = new LazyProvider(e, () -> toElement(backup));
  }

  @Override
  @SuppressWarnings("unchecked")
  public E get() {
    return init((E)provider.get().cloneNode(true));
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy