import org.osgi.service.component.annotations.*;
import javax.servlet.*;
import com.vaadin.flow.server.StreamResource;
import com.vaadin.osgi.resources.OsgiVaadinStaticResourceService;
import com.vaadin.osgi.resources.OsgiVaadinResources;
@Component(service = { Servlet.class, OsgiVaadinResources.class,
VaadinServletRequestListener.class })
public class MarkdownServlet extends VaadinServlet implements OsgiVaadinResources,
VaadinServletRequestListener {
private PageDownRenderer pageDownRenderer;
@Override
protected void servletInitialized() throws ServletException {
super.servletInitialized();
pageDownRenderer = new PageDownRenderer();
}
@Override
public boolean serveUrl(String url, boolean isPreinstalled) {
if (url.endsWith(".md")) {
url = url.replace(".md", ".html");
StreamResource resource = new StreamResource("generated-html", () ->
new ByteArrayInputStream(
pageDownRenderer.convertToHtml(url).getBytes()));
OsgiVaadinStaticResourceService.getInstance().addResourceIfAbsent(
getClass().getClassLoader(), url, resource, OsgiVaadinStaticResourceService.CacheTime.INFINITE);
return true;
}
return false;
}
}