コード例 #1
0
  @Test
  public void acceptBid() throws Exception {

    Stock myStock = new Stock("ABC", "AB Corp");
    Bid b1 = exchange.buy(traderA, myStock, 12);
    Bid b2 = exchange.sell(traderB, myStock, 10);

    assertThat(b1.getId(), is(1L));
    assertThat(b2.getId(), is(2L));
    assertThat(exchange.getTransactions().size(), is(1));
    assertThat(exchange.getTransactions().poll(), is(new Transaction(b1, b2, 12)));
  }
コード例 #2
0
  @Test
  public void unacceptableBids() throws Exception {

    Stock myStock = new Stock("ABC", "AB Corp");
    Bid b1 = exchange.buy(traderA, myStock, 10);
    Bid s1 = exchange.sell(traderB, myStock, 12);

    assertThat(s1.getId(), not(b1.getId()));

    assertThat(exchange.getTransactions().size(), is(0));

    Bid s2 = exchange.sell(traderB, myStock, 9);
    Bid s3 = exchange.sell(traderB, myStock, 15);
    assertThat(exchange.getTransactions().size(), is(1));
    assertThat(exchange.getTransactions().peek(), is(new Transaction(b1, s2, 10)));

    assertThat(
        exchange.getTransactions().peek().toString(),
        is(
            "Transaction{buy=Bid{id=1, trader=Trader{name='Al'}, stock=Stock{name='AB Corp', ticker='ABC'}, price=10.0}, sell=Bid{id=3, trader=Trader{name='Ben'}, stock=Stock{name='AB Corp', ticker='ABC'}, price=9.0}, price=10.0}"));
  }
コード例 #3
0
  @Test
  @SuppressWarnings({"unchecked"})
  @SkipForDialect(
      value = {PostgreSQL81Dialect.class},
      comment = "doesn't like boolean=1")
  public void testLazy() {
    Session s = openSession();
    Transaction t = s.beginTransaction();
    Auction a = new Auction();
    a.setDescription("an auction for something");
    a.setEnd(new Date());
    Bid b = new Bid();
    b.setAmount(new BigDecimal(123.34).setScale(19, BigDecimal.ROUND_DOWN));
    b.setSuccessful(true);
    b.setDatetime(new Date());
    b.setItem(a);
    a.getBids().add(b);
    a.setSuccessfulBid(b);
    s.persist(b);
    t.commit();
    s.close();

    Long aid = a.getId();
    Long bid = b.getId();

    s = openSession();
    t = s.beginTransaction();
    b = (Bid) s.load(Bid.class, bid);
    assertFalse(Hibernate.isInitialized(b));
    a = (Auction) s.get(Auction.class, aid);
    assertFalse(Hibernate.isInitialized(a.getBids()));
    assertTrue(Hibernate.isInitialized(a.getSuccessfulBid()));
    assertSame(a.getBids().iterator().next(), b);
    assertSame(b, a.getSuccessfulBid());
    assertTrue(Hibernate.isInitialized(b));
    assertTrue(b.isSuccessful());
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    b = (Bid) s.load(Bid.class, bid);
    assertFalse(Hibernate.isInitialized(b));
    a = (Auction) s.createQuery("from Auction a left join fetch a.bids").uniqueResult();
    assertTrue(Hibernate.isInitialized(b));
    assertTrue(Hibernate.isInitialized(a.getBids()));
    assertSame(b, a.getSuccessfulBid());
    assertSame(a.getBids().iterator().next(), b);
    assertTrue(b.isSuccessful());
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    b = (Bid) s.load(Bid.class, bid);
    a = (Auction) s.load(Auction.class, aid);
    assertFalse(Hibernate.isInitialized(b));
    assertFalse(Hibernate.isInitialized(a));
    s.createQuery("from Auction a left join fetch a.successfulBid").list();
    assertTrue(Hibernate.isInitialized(b));
    assertTrue(Hibernate.isInitialized(a));
    assertSame(b, a.getSuccessfulBid());
    assertFalse(Hibernate.isInitialized(a.getBids()));
    assertSame(a.getBids().iterator().next(), b);
    assertTrue(b.isSuccessful());
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    b = (Bid) s.load(Bid.class, bid);
    a = (Auction) s.load(Auction.class, aid);
    assertFalse(Hibernate.isInitialized(b));
    assertFalse(Hibernate.isInitialized(a));
    assertSame(s.get(Bid.class, bid), b);
    assertTrue(Hibernate.isInitialized(b));
    assertSame(s.get(Auction.class, aid), a);
    assertTrue(Hibernate.isInitialized(a));
    assertSame(b, a.getSuccessfulBid());
    assertFalse(Hibernate.isInitialized(a.getBids()));
    assertSame(a.getBids().iterator().next(), b);
    assertTrue(b.isSuccessful());
    t.commit();
    s.close();
  }
コード例 #4
0
  public void testJoinFetch() {
    Session s = openSession();
    Transaction t = s.beginTransaction();
    s.createQuery("delete from Bid").executeUpdate();
    s.createQuery("delete from Comment").executeUpdate();
    s.createQuery("delete from Item").executeUpdate();
    t.commit();
    s.close();

    Category cat = new Category("Photography");
    Item i = new Item(cat, "Camera");
    Bid b = new Bid(i, 100.0f);
    new Bid(i, 105.0f);
    new Comment(i, "This looks like a really good deal");
    new Comment(i, "Is it the latest version?");
    new Comment(i, "<comment deleted>");
    System.out.println(b.getTimestamp());

    s = openSession();
    t = s.beginTransaction();
    s.persist(cat);
    s.persist(i);
    t.commit();
    s.close();

    getSessions().evict(Item.class);

    s = openSession();
    t = s.beginTransaction();
    i = (Item) s.get(Item.class, i.getId());
    assertTrue(Hibernate.isInitialized(i.getBids()));
    assertEquals(i.getBids().size(), 2);
    assertTrue(Hibernate.isInitialized(i.getComments()));
    assertEquals(i.getComments().size(), 3);
    t.commit();
    s.close();

    getSessions().evict(Bid.class);

    s = openSession();
    t = s.beginTransaction();
    b = (Bid) s.get(Bid.class, b.getId());
    assertTrue(Hibernate.isInitialized(b.getItem()));
    assertTrue(Hibernate.isInitialized(b.getItem().getComments()));
    assertEquals(b.getItem().getComments().size(), 3);
    System.out.println(b.getTimestamp());
    t.commit();
    s.close();

    getSessions().evictCollection(Item.class.getName() + ".bids");

    s = openSession();
    t = s.beginTransaction();
    i =
        (Item)
            s.createCriteria(Item.class)
                .setFetchMode("bids", FetchMode.SELECT)
                .setFetchMode("comments", FetchMode.SELECT)
                .uniqueResult();
    assertFalse(Hibernate.isInitialized(i.getBids()));
    assertFalse(Hibernate.isInitialized(i.getComments()));
    b = (Bid) i.getBids().iterator().next();
    assertTrue(Hibernate.isInitialized(b.getItem()));
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    i =
        (Item)
            s.createQuery("from Item i left join fetch i.bids left join fetch i.comments")
                .uniqueResult();
    assertTrue(Hibernate.isInitialized(i.getBids()));
    assertTrue(Hibernate.isInitialized(i.getComments()));
    assertEquals(i.getComments().size(), 3);
    assertEquals(i.getBids().size(), 2);
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    Object[] row = (Object[]) s.getNamedQuery(Item.class.getName() + ".all").list().get(0);
    i = (Item) row[0];
    assertTrue(Hibernate.isInitialized(i.getBids()));
    assertTrue(Hibernate.isInitialized(i.getComments()));
    assertEquals(i.getComments().size(), 3);
    assertEquals(i.getBids().size(), 2);
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    i = (Item) s.createCriteria(Item.class).uniqueResult();
    assertTrue(Hibernate.isInitialized(i.getBids()));
    assertTrue(Hibernate.isInitialized(i.getComments()));
    assertEquals(i.getComments().size(), 3);
    assertEquals(i.getBids().size(), 2);
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    List bids =
        s.createQuery("from Bid b left join fetch b.item i left join fetch i.category").list();
    Bid bid = (Bid) bids.get(0);
    assertTrue(Hibernate.isInitialized(bid.getItem()));
    assertTrue(Hibernate.isInitialized(bid.getItem().getCategory()));
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    List pairs = s.createQuery("from Item i left join i.bids b left join fetch i.category").list();
    Item item = (Item) ((Object[]) pairs.get(0))[0];
    assertFalse(Hibernate.isInitialized(item.getBids()));
    assertTrue(Hibernate.isInitialized(item.getCategory()));
    s.clear();
    pairs = s.createQuery("from Item i left join i.bids b left join i.category").list();
    item = (Item) ((Object[]) pairs.get(0))[0];
    assertFalse(Hibernate.isInitialized(item.getBids()));
    assertTrue(Hibernate.isInitialized(item.getCategory()));
    s.clear();
    pairs = s.createQuery("from Bid b left join b.item i left join fetch i.category").list();
    bid = (Bid) ((Object[]) pairs.get(0))[0];
    assertTrue(Hibernate.isInitialized(bid.getItem()));
    assertTrue(Hibernate.isInitialized(bid.getItem().getCategory()));
    s.clear();
    pairs = s.createQuery("from Bid b left join b.item i left join i.category").list();
    bid = (Bid) ((Object[]) pairs.get(0))[0];
    assertTrue(Hibernate.isInitialized(bid.getItem()));
    assertTrue(Hibernate.isInitialized(bid.getItem().getCategory()));
    t.commit();
    s.close();

    s = openSession();
    t = s.beginTransaction();
    s.createQuery("delete from Bid").executeUpdate();
    s.createQuery("delete from Comment").executeUpdate();
    s.createQuery("delete from Item").executeUpdate();
    s.createQuery("delete from Category").executeUpdate();
    t.commit();
    s.close();
  }