Search in sources :

Example 1 with LitTemplate

use of com.vaadin.flow.component.littemplate.LitTemplate in project flow by vaadin.

the class LitTemplateParserImpl method getTemplateContent.

@Override
public TemplateData getTemplateContent(Class<? extends LitTemplate> clazz, String tag, VaadinService service) {
    List<Dependency> dependencies = AnnotationReader.getAnnotationsFor(clazz, JsModule.class).stream().map(jsModule -> new Dependency(Dependency.Type.JS_MODULE, jsModule.value(), // load mode doesn't
    LoadMode.EAGER)).collect(Collectors.toList());
    for (DependencyFilter filter : service.getDependencyFilters()) {
        dependencies = filter.filter(new ArrayList<>(dependencies), service);
    }
    Pair<Dependency, String> chosenDep = null;
    for (Dependency dependency : dependencies) {
        if (dependency.getType() != Dependency.Type.JS_MODULE) {
            continue;
        }
        String url = dependency.getUrl();
        String source = getSourcesFromTemplate(service, tag, url);
        if (source == null) {
            continue;
        }
        if (chosenDep == null) {
            chosenDep = new Pair<>(dependency, source);
        }
        if (dependencyHasTagName(dependency, tag)) {
            chosenDep = new Pair<>(dependency, source);
            break;
        }
    }
    Element templateElement = null;
    if (chosenDep != null) {
        templateElement = BundleLitParser.parseLitTemplateElement(chosenDep.getFirst().getUrl(), chosenDep.getSecond());
    }
    if (templateElement != null) {
        // Template needs to be wrapped in an element with id, to look
        // like a P2 template
        Element parent = new Element(tag);
        parent.attr("id", tag);
        templateElement.appendTo(parent);
        return new TemplateData(chosenDep.getFirst().getUrl(), templateElement);
    }
    getLogger().info("Couldn't find the " + "definition of the element with tag '{}' " + "in any lit template file declared using '@{}' annotations. " + "In a Spring Boot project, please ensure that the template's " + "groupId is added to the vaadin.whitelisted-packages " + "property. Otherwise, please Check the availability of the " + "template files in your WAR file or provide alternative " + "implementation of the method " + "LitTemplateParser.getTemplateContent() which should return " + "an element representing the content of the template file", tag, JsModule.class.getSimpleName());
    return null;
}
Also used : LitTemplateParser(com.vaadin.flow.component.littemplate.LitTemplateParser) URL(java.net.URL) BundleLitParser(com.vaadin.flow.component.littemplate.BundleLitParser) LoggerFactory(org.slf4j.LoggerFactory) Dependency(com.vaadin.flow.shared.ui.Dependency) FrontendUtils(com.vaadin.flow.server.frontend.FrontendUtils) ArrayList(java.util.ArrayList) Locale(java.util.Locale) Element(org.jsoup.nodes.Element) DependencyFilter(com.vaadin.flow.server.DependencyFilter) Lookup(com.vaadin.flow.di.Lookup) Constants(com.vaadin.flow.server.Constants) Logger(org.slf4j.Logger) Pair(com.vaadin.flow.internal.Pair) AnnotationReader(com.vaadin.flow.internal.AnnotationReader) IOException(java.io.IOException) ResourceProvider(com.vaadin.flow.di.ResourceProvider) LitTemplate(com.vaadin.flow.component.littemplate.LitTemplate) Collectors(java.util.stream.Collectors) List(java.util.List) VaadinService(com.vaadin.flow.server.VaadinService) LoadMode(com.vaadin.flow.shared.ui.LoadMode) JsModule(com.vaadin.flow.component.dependency.JsModule) FilenameUtils(org.apache.commons.io.FilenameUtils) InputStream(java.io.InputStream) JsModule(com.vaadin.flow.component.dependency.JsModule) Element(org.jsoup.nodes.Element) ArrayList(java.util.ArrayList) DependencyFilter(com.vaadin.flow.server.DependencyFilter) Dependency(com.vaadin.flow.shared.ui.Dependency)

Aggregations

JsModule (com.vaadin.flow.component.dependency.JsModule)1 BundleLitParser (com.vaadin.flow.component.littemplate.BundleLitParser)1 LitTemplate (com.vaadin.flow.component.littemplate.LitTemplate)1 LitTemplateParser (com.vaadin.flow.component.littemplate.LitTemplateParser)1 Lookup (com.vaadin.flow.di.Lookup)1 ResourceProvider (com.vaadin.flow.di.ResourceProvider)1 AnnotationReader (com.vaadin.flow.internal.AnnotationReader)1 Pair (com.vaadin.flow.internal.Pair)1 Constants (com.vaadin.flow.server.Constants)1 DependencyFilter (com.vaadin.flow.server.DependencyFilter)1 VaadinService (com.vaadin.flow.server.VaadinService)1 FrontendUtils (com.vaadin.flow.server.frontend.FrontendUtils)1 Dependency (com.vaadin.flow.shared.ui.Dependency)1 LoadMode (com.vaadin.flow.shared.ui.LoadMode)1 IOException (java.io.IOException)1 InputStream (java.io.InputStream)1 URL (java.net.URL)1 ArrayList (java.util.ArrayList)1 List (java.util.List)1 Locale (java.util.Locale)1