package org.jooby.issues; import cz.jiripinkas.jsitemapgenerator.WebPage; import org.jooby.sitemap.Sitemap; import org.jooby.sitemap.WebPageProvider; import org.jooby.test.ServerFeature; import org.junit.Test; import java.util.Arrays; import java.util.stream.Collectors; public class Issue342 extends ServerFeature { { use(new Sitemap().with(r -> { if (r.pattern().startsWith("/tags")) { // expand tags return Arrays.asList("foo", "bar").stream() .map(tag -> { WebPage page = WebPageProvider.SITEMAP.apply(r).get(0); page.setName(r.reverse(tag)); return page; }).collect(Collectors.toList()); } return WebPageProvider.SITEMAP.apply(r); })); get("/", () -> "x"); get("/tags", () -> "x"); get("/tags/:name", () -> "x"); post("/ignored", () -> "x"); } @Test public void sitemap() throws Exception { request().get("/sitemap.xml") .expect("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\n" + "<url>\n" + "<loc>http://localhost:" + port + "/</loc>\n" + "</url>\n" + "<url>\n" + "<loc>http://localhost:" + port + "/tags</loc>\n" + "</url>\n" + "<url>\n" + "<loc>http://localhost:" + port + "/tags/bar</loc>\n" + "</url>\n" + "<url>\n" + "<loc>http://localhost:" + port + "/tags/foo</loc>\n" + "</url>\n" + "</urlset>") .header("Content-Type", "application/xml;charset=utf-8"); } }