/**
   * Helper method for testing the entity manager before and after serialization.
   *
   * @param em Entity manager used for indexing and searching
   * @throws Exception
   */
  private static void indexSearchAssert(FullTextEntityManager em) throws Exception {
    // index a Bretzel
    em.getTransaction().begin();
    Bretzel bretzel = new Bretzel(23, 34);
    em.persist(bretzel);
    em.getTransaction().commit();
    em.clear();
    em.getTransaction().begin();

    // execute a non matching query
    QueryParser parser =
        new QueryParser(
            TestConstants.getTargetLuceneVersion(), "title", TestConstants.stopAnalyzer);
    Query query = parser.parse("saltQty:noword");
    assertEquals(0, em.createFullTextQuery(query).getResultList().size());

    // execute a matching query
    query = new TermQuery(new Term("saltQty", "23"));
    assertEquals("getResultList", 1, em.createFullTextQuery(query).getResultList().size());
    assertEquals(
        "getSingleResult and object retrieval",
        23,
        ((Bretzel) em.createFullTextQuery(query).getSingleResult()).getSaltQty());
    assertEquals(1, em.createFullTextQuery(query).getResultSize());
    em.getTransaction().commit();

    em.clear();

    em.getTransaction().begin();
    em.remove(em.find(Bretzel.class, bretzel.getId()));
    em.getTransaction().commit();
  }
  @Test
  public void testMessageSending() throws Exception {

    TShirt shirt = createObjectWithSQL();
    List<LuceneWork> queue = createDocumentAndWorkQueue(shirt);

    registerMessageListener();
    sendMessage(queue);

    // need to sleep to give JMS processing and indexing time
    Thread.sleep(1000);

    FullTextSession ftSess = Search.getFullTextSession(openSession());
    ftSess.getTransaction().begin();
    QueryParser parser =
        new QueryParser(TestConstants.getTargetLuceneVersion(), "id", TestConstants.stopAnalyzer);
    Query luceneQuery = parser.parse("logo:jboss");
    org.hibernate.Query query = ftSess.createFullTextQuery(luceneQuery);
    List result = query.list();
    assertEquals(1, result.size());
    ftSess.delete(result.get(0));
    ftSess.getTransaction().commit();
    ftSess.close();
  }