use of org.hibernate.proxy.HibernateProxy in project hibernate-orm by hibernate.
the class ReadOnlyProxyTest method testReadOnlyModifiedToModifiableIsUpdated.
@Test
@FailureExpected(jiraKey = "HHH-4642")
public void testReadOnlyModifiedToModifiableIsUpdated() {
DataPoint dpOrig = createDataPoint(CacheMode.IGNORE);
Session s = openSession();
s.setCacheMode(CacheMode.IGNORE);
s.beginTransaction();
DataPoint dp = (DataPoint) s.load(DataPoint.class, new Long(dpOrig.getId()));
assertTrue(dp instanceof HibernateProxy);
assertFalse(Hibernate.isInitialized(dp));
checkReadOnly(s, dp, false);
s.setReadOnly(dp, true);
checkReadOnly(s, dp, true);
dp.setDescription("changed");
assertTrue(Hibernate.isInitialized(dp));
assertEquals("changed", dp.getDescription());
s.setReadOnly(dp, false);
checkReadOnly(s, dp, false);
assertEquals("changed", dp.getDescription());
s.flush();
s.getTransaction().commit();
s.close();
s = openSession();
s.beginTransaction();
dp = (DataPoint) s.get(DataPoint.class, dpOrig.getId());
assertEquals(dpOrig.getId(), dp.getId());
assertEquals(dpOrig.getDescription(), dp.getDescription());
assertEquals(dpOrig.getX(), dp.getX());
assertEquals(dpOrig.getY(), dp.getY());
try {
assertEquals("changed", dp.getDescription());
// should fail due to HHH-4642
} finally {
s.getTransaction().rollback();
s.close();
s = openSession();
s.beginTransaction();
s.delete(dp);
s.getTransaction().commit();
s.close();
}
}
use of org.hibernate.proxy.HibernateProxy in project hibernate-orm by hibernate.
the class ReadOnlyProxyTest method testReadOnlyToModifiableInitWhenModifiedIsUpdated.
@Test
public void testReadOnlyToModifiableInitWhenModifiedIsUpdated() {
DataPoint dpOrig = createDataPoint(CacheMode.IGNORE);
Session s = openSession();
s.setCacheMode(CacheMode.IGNORE);
s.beginTransaction();
DataPoint dp = (DataPoint) s.load(DataPoint.class, new Long(dpOrig.getId()));
assertTrue(dp instanceof HibernateProxy);
checkReadOnly(s, dp, false);
s.setReadOnly(dp, true);
checkReadOnly(s, dp, true);
s.setReadOnly(dp, false);
checkReadOnly(s, dp, false);
assertFalse(Hibernate.isInitialized(dp));
dp.setDescription("changed");
assertTrue(Hibernate.isInitialized(dp));
assertEquals("changed", dp.getDescription());
s.flush();
s.getTransaction().commit();
s.close();
s = openSession();
s.beginTransaction();
dp = (DataPoint) s.get(DataPoint.class, dpOrig.getId());
assertEquals(dpOrig.getId(), dp.getId());
assertEquals("changed", dp.getDescription());
assertEquals(dpOrig.getX(), dp.getX());
assertEquals(dpOrig.getY(), dp.getY());
s.delete(dp);
s.getTransaction().commit();
s.close();
}
use of org.hibernate.proxy.HibernateProxy in project hibernate-orm by hibernate.
the class ReadOnlyProxyTest method testSetReadOnlyBetweenTwoTransactionsSameSession.
@Test
public void testSetReadOnlyBetweenTwoTransactionsSameSession() {
DataPoint dpOrig = createDataPoint(CacheMode.IGNORE);
Session s = openSession();
s.setCacheMode(CacheMode.IGNORE);
s.beginTransaction();
DataPoint dp = (DataPoint) s.load(DataPoint.class, new Long(dpOrig.getId()));
assertTrue(dp instanceof HibernateProxy);
assertFalse(Hibernate.isInitialized(dp));
checkReadOnly(s, dp, false);
dp.setDescription("changed");
assertTrue(Hibernate.isInitialized(dp));
assertEquals("changed", dp.getDescription());
checkReadOnly(s, dp, false);
s.flush();
s.getTransaction().commit();
checkReadOnly(s, dp, false);
s.setReadOnly(dp, true);
checkReadOnly(s, dp, true);
s.beginTransaction();
checkReadOnly(s, dp, true);
dp.setDescription("changed again");
assertEquals("changed again", dp.getDescription());
s.flush();
s.getTransaction().commit();
s.close();
s = openSession();
s.beginTransaction();
dp = (DataPoint) s.get(DataPoint.class, dpOrig.getId());
assertEquals(dpOrig.getId(), dp.getId());
assertEquals("changed", dp.getDescription());
assertEquals(dpOrig.getX(), dp.getX());
assertEquals(dpOrig.getY(), dp.getY());
s.delete(dp);
s.getTransaction().commit();
s.close();
}
use of org.hibernate.proxy.HibernateProxy in project hibernate-orm by hibernate.
the class ReadOnlyProxyTest method checkReadOnly.
private void checkReadOnly(Session s, Object proxy, boolean expectedReadOnly) {
assertTrue(proxy instanceof HibernateProxy);
LazyInitializer li = ((HibernateProxy) proxy).getHibernateLazyInitializer();
assertSame(s, li.getSession());
assertEquals(expectedReadOnly, s.isReadOnly(proxy));
assertEquals(expectedReadOnly, li.isReadOnly());
assertEquals(Hibernate.isInitialized(proxy), !li.isUninitialized());
if (Hibernate.isInitialized(proxy)) {
assertEquals(expectedReadOnly, s.isReadOnly(li.getImplementation()));
}
}
use of org.hibernate.proxy.HibernateProxy in project hibernate-orm by hibernate.
the class ReadOnlyProxyTest method testReadOnlyDelete.
@Test
public void testReadOnlyDelete() {
DataPoint dpOrig = createDataPoint(CacheMode.IGNORE);
Session s = openSession();
s.setCacheMode(CacheMode.IGNORE);
s.beginTransaction();
DataPoint dp = (DataPoint) s.load(DataPoint.class, new Long(dpOrig.getId()));
assertTrue(dp instanceof HibernateProxy);
checkReadOnly(s, dp, false);
s.setReadOnly(dp, true);
checkReadOnly(s, dp, true);
assertFalse(Hibernate.isInitialized(dp));
s.delete(dp);
s.flush();
s.getTransaction().commit();
s.close();
s = openSession();
s.beginTransaction();
dp = (DataPoint) s.get(DataPoint.class, dpOrig.getId());
assertNull(dp);
s.getTransaction().commit();
s.close();
}
Aggregations