@Test
  public void write() throws IOException, SAXException {
    Feed feed = new Feed("atom_1.0");
    feed.setTitle("title");

    Entry entry1 = new Entry();
    entry1.setId("id1");
    entry1.setTitle("title1");

    Entry entry2 = new Entry();
    entry2.setId("id2");
    entry2.setTitle("title2");

    List<Entry> entries = new ArrayList<>(2);
    entries.add(entry1);
    entries.add(entry2);
    feed.setEntries(entries);

    MockHttpOutputMessage outputMessage = new MockHttpOutputMessage();
    converter.write(feed, null, outputMessage);

    assertEquals(
        "Invalid content-type",
        new MediaType("application", "atom+xml", StandardCharsets.UTF_8),
        outputMessage.getHeaders().getContentType());
    String expected =
        "<feed xmlns=\"http://www.w3.org/2005/Atom\">"
            + "<title>title</title>"
            + "<entry><id>id1</id><title>title1</title></entry>"
            + "<entry><id>id2</id><title>title2</title></entry></feed>";
    NodeMatcher nm = new DefaultNodeMatcher(ElementSelectors.byName);
    assertThat(
        outputMessage.getBodyAsString(StandardCharsets.UTF_8),
        isSimilarTo(expected).ignoreWhitespace().withNodeMatcher(nm));
  }
Example #2
0
  @SuppressWarnings("unchecked")
  @Override
  protected List<Entry> buildFeedEntries(
      Map<String, Object> model, HttpServletRequest request, HttpServletResponse response)
      throws Exception {
    Set<Article> articles = (Set<Article>) model.get("articles");
    List<Entry> entries = new ArrayList<>(articles.size());
    for (Article article : articles) {
      Entry entry = new Entry();
      entry.setTitle(article.getTitle());
      entry.setPublished(article.getDate().toDate());
      Content content = new Content();
      content.setValue(article.getBody());
      entry.setSummary(content);

      Link link = new Link();
      link.setHref(link(article));
      List<Link> links = new ArrayList<Link>();
      links.add(link);
      entry.setAlternateLinks(links);
      entries.add(entry);
    }
    return entries;
  }
  @Test
  public void read() throws IOException {
    InputStream is = getClass().getResourceAsStream("atom.xml");
    MockHttpInputMessage inputMessage = new MockHttpInputMessage(is);
    inputMessage
        .getHeaders()
        .setContentType(new MediaType("application", "atom+xml", StandardCharsets.UTF_8));
    Feed result = converter.read(Feed.class, inputMessage);
    assertEquals("title", result.getTitle());
    assertEquals("subtitle", result.getSubtitle().getValue());
    List<?> entries = result.getEntries();
    assertEquals(2, entries.size());

    Entry entry1 = (Entry) entries.get(0);
    assertEquals("id1", entry1.getId());
    assertEquals("title1", entry1.getTitle());

    Entry entry2 = (Entry) entries.get(1);
    assertEquals("id2", entry2.getId());
    assertEquals("title2", entry2.getTitle());
  }