int id;
String name = "BundleTest-testBundleVersion";
String recipe = "action/script/recipe is here";
BundleType bundleType = createBundleType(em, name + "-Type", createResourceType(em));
Bundle bundle = createBundle(em, name + "-Bundle", bundleType);
id = bundle.getId();
assert id > 0;
assert bundle.getBundleType().getId() != 0 : "bundleType should have been cascade persisted too";
BundleVersion bv = new BundleVersion(name, "1.0.0.BETA", bundle, recipe);
bv.setVersionOrder(777);
Query q = em.createNamedQuery(BundleVersion.QUERY_FIND_BY_NAME);
q.setParameter("name", bv.getName());
assert q.getResultList().size() == 0; // not in the db yet
em.persist(bv);
id = bv.getId();
assert id > 0;
q = em.createNamedQuery(BundleVersion.QUERY_FIND_BY_NAME);
q.setParameter("name", bv.getName());
assert q.getResultList().size() == 1;
assert ((BundleVersion) q.getSingleResult()).getName().equals(bv.getName());
BundleVersion bvFind = em.find(BundleVersion.class, id);
assert bvFind != null;
assert bvFind.getId() == bv.getId();
assert bvFind.getName().equals(bv.getName());
assert bvFind.getVersion().equals(bv.getVersion());
assert bvFind.getVersionOrder() == bv.getVersionOrder();
assert bvFind.getRecipe().equals(bv.getRecipe());
assert bvFind.getBundle().equals(bv.getBundle());
assert bvFind.equals(bv);
assert bvFind.hashCode() == bv.hashCode();
// clean up - delete our test entity
em.clear();
q = em.createNamedQuery(BundleVersion.QUERY_FIND_BY_NAME);
q.setParameter("name", bv.getName());
BundleVersion doomed = (BundleVersion) q.getSingleResult();
doomed = em.getReference(BundleVersion.class, doomed.getId());
em.remove(doomed);
assert q.getResultList().size() == 0 : "didn't remove the entity";
em.clear();
// make sure we didn't delete the bundle - it should not be cascade deleted
q = em.createNamedQuery(Bundle.QUERY_FIND_BY_NAME);
q.setParameter("name", bundle.getName());
assert q.getResultList().size() == 1;
bundle = (Bundle) q.getSingleResult();
bundleType = bundle.getBundleType();
Repo repo = bundle.getRepo();
em.remove(bundle);
em.remove(repo);
deleteResourceType(em, bundleType.getResourceType());
assert q.getResultList().size() == 0 : "didn't clean up test bundle";
assert em.find(BundleType.class, bundleType.getId()) == null : "didn't clean up bundle type";
em.clear();
} catch (Throwable t) {
t.printStackTrace();