001package org.nasdanika.html.model.html.gen; 002 003import org.nasdanika.common.Context; 004import org.nasdanika.common.Supplier; 005import org.nasdanika.common.SupplierFactory; 006 007public abstract class HtmlElementSupplierFactoryAdapter<M extends org.nasdanika.html.model.html.HtmlElement, T extends org.nasdanika.html.HTMLElement<?>> extends HtmlElementAdapter<M,T> implements SupplierFactory<T> { 008 009 protected HtmlElementSupplierFactoryAdapter(M htmlElement) { 010 super(htmlElement); 011 } 012 013 @Override 014 public boolean isAdapterForType(Object type) { 015 return type == SupplierFactory.class; 016 } 017 018 /** 019 * Creates element from content. 020 * @param context 021 * @return 022 */ 023 protected abstract Supplier<T> createHTMLElementSupplier(Context context) throws Exception; 024 025 @Override 026 public Supplier<T> create(Context context) throws Exception { 027 SupplierFactory<T> elementSupplierFactory = this::createHTMLElementSupplier; 028 return elementSupplierFactory.then(this::createConfigureFunction).create(context); 029 } 030 031}