Есть основная задача - добавить к основному проекту jetty default servlet, который бы парсил файлы markdown в html. Тк первый раз сталкиваюсь с сервлетами, то я записал свой SimplifiedJettyDefaultServlet, который по идее должен работать. Однако при его подключении в SetUpServlets ничего не происходит. Видимо напутал что-то с потоками, либо подключил неправильно сам сервлет. Прилагаю код сервлета:
public class SimplifiedJettyDefaultServlet extends DefaultServlet {
@Override
public Resource getResource(String pathInContext) {
Resource real= super.getResource(pathInContext);
if (!real.isDirectory() && pathInContext.endsWith(".md") ) {
try {
InputStream vhod = real.getInputStream();
String s = vhod.toString();
ByteArrayOutputStream convertedBytes = SimplifiedJettyDefaultServlet.convert(s);
real.writeTo(convertedBytes,0,-1);
return real;
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return real;
}
public static ByteArrayOutputStream convert (String input) throws IOException {
MutableDataHolder options = new MutableDataSet()
.set(Parser.EXTENSIONS,
Arrays.asList(AutolinkExtension.create(),
StrikethroughExtension.create(), TaskListExtension.create(), TablesExtension.create(),
DefinitionExtension.create(), FootnoteExtension.create(),GitLabExtension.create()))
.set(Parser.LISTS_ITEM_INDENT, 1).set(Parser.BLANK_LINES_IN_AST, true)
.set(HtmlRenderer.GENERATE_HEADER_ID, true).set(AnchorLinkExtension.ANCHORLINKS_SET_NAME, true)
.set(AnchorLinkExtension.ANCHORLINKS_ANCHOR_CLASS, "header-anchor")
.set(AnchorLinkExtension.ANCHORLINKS_TEXT_SUFFIX, "<i class='fa fa-link'></i>")
.set(Parser.SPACE_IN_LINK_URLS, true).set(TablesExtension.WITH_CAPTION, false)
.set(TablesExtension.COLUMN_SPANS, false).set(TablesExtension.MIN_HEADER_ROWS, 1)
.set(TablesExtension.MAX_HEADER_ROWS, 1).set(TablesExtension.APPEND_MISSING_COLUMNS, true)
.set(TablesExtension.DISCARD_EXTRA_COLUMNS, true)
.set(TablesExtension.HEADER_SEPARATOR_COLUMN_MATCH, true);
String dopstring ="<script type=\"text/x-mathjax-config\"> MathJax.Hub.Config({ extensions: [\"tex2jax.js\"], jax: [\"input/TeX\", \"output/HTML-CSS\"], tex2jax: { inlineMath: [ ['$','$'], [\"\\(\",\"\\)\"] ], displayMath: [ ['$$','$$'], [\"\\[\",\"\\]\"] ], processEscapes: true }, \"HTML-CSS\": { fonts: [\"TeX\"] } }); </script> <script type=\"text/javascript\" src=\"/rwa-ui/src/main/resources/web/MathJax.js\"> </script>";
String finalstr = dopstring + input;
Parser parser = Parser.builder(options).build();
Node document = parser.parse(new String(finalstr));
HtmlRenderer renderer = HtmlRenderer.builder(options).build();
String html = renderer.render(document);
ByteArrayOutputStream output = new ByteArrayOutputStream((html.getBytes()).length);
output.write(html.getBytes(), 0, html.getBytes().length);
return output;
}}